Skip to content
Start here

Billing

Validate Billing Address
client.billing.addressValidation(BillingAddressValidationParams { address, address2, city, 3 more } body, RequestOptionsoptions?): BillingAddressValidationResponse { validated_addresses }
POST/billing/address-validation
ModelsExpand Collapse
BillingAddressValidationResponse { validated_addresses }
validated_addresses?: Array<ValidatedAddress>

List of validated address suggestions.

address?: string

Validated address line 1.

address2?: string

Validated address line 2.

city?: string

Validated city.

country?: string

Validated country code.

state?: string

Validated state or province.

validation_code?: string

The validation result code.

zipcode?: string

Validated postal or zip code.

BillingSpend Policies

List Spend Policies
client.billing.spendPolicies.list(SpendPolicyListParams { account_id } params, RequestOptionsoptions?): SinglePage<SpendPolicyListResponse { id, account_id, action, 7 more } >
GET/accounts/{account_id}/billing/spend-policies
Create Spend Policy
client.billing.spendPolicies.create(SpendPolicyCreateParams { account_id, action, enabled, 4 more } params, RequestOptionsoptions?): SpendPolicyCreateResponse { id, account_id, action, 7 more }
POST/accounts/{account_id}/billing/spend-policies
Get Spend Policy
client.billing.spendPolicies.get(stringpolicyID, SpendPolicyGetParams { account_id } params, RequestOptionsoptions?): SpendPolicyGetResponse { id, account_id, action, 7 more }
GET/accounts/{account_id}/billing/spend-policies/{policy_id}
Update Spend Policy
client.billing.spendPolicies.update(stringpolicyID, SpendPolicyUpdateParams { account_id, action, enabled, 5 more } params, RequestOptionsoptions?): SpendPolicyUpdateResponse { id, account_id, action, 7 more }
PUT/accounts/{account_id}/billing/spend-policies/{policy_id}
Delete Spend Policy
client.billing.spendPolicies.delete(stringpolicyID, SpendPolicyDeleteParams { account_id, ifMatch } params, RequestOptionsoptions?): SpendPolicyDeleteResponse { id }
DELETE/accounts/{account_id}/billing/spend-policies/{policy_id}
ModelsExpand Collapse
SpendPolicyListResponse { id, account_id, action, 7 more }

A spend policy.

id: string

The unique identifier of the spend policy.

formatuuid
account_id: number

Internal numeric ID of the account that owns the policy. This is not the account tag used in the path.

formatint64
action: "notification" | "usage_block"

The action taken when the threshold is reached. notification sends an email to notification_email. usage_block blocks further usage of the product until the end of the billing period. Raising the threshold above the current balance, disabling the policy, or deleting it lifts the block early.

One of the following:
"notification"
"usage_block"
enabled: boolean

Whether the policy is evaluated.

name: string

Display name of the policy.

notification_email: string

Email address that receives notifications. An empty string when none is set.

product_id: "workers" | "durable_objects"

The product the policy applies to: workers or durable_objects. Each product’s balance and policies are separate. Both products support notification and usage_block policies on create and update.

One of the following:
"workers"
"durable_objects"
threshold_cents: number

The spend threshold for the current billing period, in US cents.

formatint64
version: number

Optimistic-concurrency version. It starts at 1 and goes up by one on every update or delete. This value is also returned in ETag.

formatint64
minimum1
current_state?: CurrentState { balance_cents, billing_period_end, billing_period_start, 3 more }

Read-only state on list/get responses, evaluated from the latest owning projector snapshot at request time, independently of the API replica. Configuration enabled/version/ETag do not change when a cycle rolls over. Audit history remains unchanged. Missing during a rolling upgrade or on mutation responses; clients must treat missing state as unavailable. Balances are asynchronous estimates, not a synchronous usage read.

balance_cents: number | null
formatint64
billing_period_end: string | null
formatdate-time
billing_period_start: string | null
formatdate-time
enforcement: Enforcement | null

Durable desired cap and delivery bookkeeping for this policy, or null if no owned effect exists. Separate from threshold evaluation: pending/leased/retry can lag the new billing period. Succeeded with equal generations means delivery completed, not an EWC readback.

applied_generation: number
formatint64
delivery_status: "pending" | "leased" | "retry" | "succeeded"
One of the following:
"pending"
"leased"
"retry"
"succeeded"
desired_generation: number
formatint64
desired_state: "active" | "inactive"
One of the following:
"active"
"inactive"
expires_at: string | null
formatdate-time
evaluated_at: string

Evaluation time; not the timestamp of the latest usage event.

formatdate-time
status: "disabled" | "no_current_period" | "unavailable" | 2 more

Threshold evaluation, not proof of an edge cap. No current active period yields no_current_period for enabled policies; failed aggregate reads yield unavailable for enabled policies. Disabled policies report disabled. Neither no_current_period nor unavailable implies a zero balance or below-limit state. Operators may disable current-state reads, in which case current_state is omitted.

One of the following:
"disabled"
"no_current_period"
"unavailable"
"below_limit"
"limit_reached"
SpendPolicyCreateResponse { id, account_id, action, 7 more }

A spend policy.

id: string

The unique identifier of the spend policy.

formatuuid
account_id: number

Internal numeric ID of the account that owns the policy. This is not the account tag used in the path.

formatint64
action: "notification" | "usage_block"

The action taken when the threshold is reached. notification sends an email to notification_email. usage_block blocks further usage of the product until the end of the billing period. Raising the threshold above the current balance, disabling the policy, or deleting it lifts the block early.

One of the following:
"notification"
"usage_block"
enabled: boolean

Whether the policy is evaluated.

name: string

Display name of the policy.

notification_email: string

Email address that receives notifications. An empty string when none is set.

product_id: "workers" | "durable_objects"

The product the policy applies to: workers or durable_objects. Each product’s balance and policies are separate. Both products support notification and usage_block policies on create and update.

One of the following:
"workers"
"durable_objects"
threshold_cents: number

The spend threshold for the current billing period, in US cents.

formatint64
version: number

Optimistic-concurrency version. It starts at 1 and goes up by one on every update or delete. This value is also returned in ETag.

formatint64
minimum1
current_state?: CurrentState { balance_cents, billing_period_end, billing_period_start, 3 more }

Read-only state on list/get responses, evaluated from the latest owning projector snapshot at request time, independently of the API replica. Configuration enabled/version/ETag do not change when a cycle rolls over. Audit history remains unchanged. Missing during a rolling upgrade or on mutation responses; clients must treat missing state as unavailable. Balances are asynchronous estimates, not a synchronous usage read.

balance_cents: number | null
formatint64
billing_period_end: string | null
formatdate-time
billing_period_start: string | null
formatdate-time
enforcement: Enforcement | null

Durable desired cap and delivery bookkeeping for this policy, or null if no owned effect exists. Separate from threshold evaluation: pending/leased/retry can lag the new billing period. Succeeded with equal generations means delivery completed, not an EWC readback.

applied_generation: number
formatint64
delivery_status: "pending" | "leased" | "retry" | "succeeded"
One of the following:
"pending"
"leased"
"retry"
"succeeded"
desired_generation: number
formatint64
desired_state: "active" | "inactive"
One of the following:
"active"
"inactive"
expires_at: string | null
formatdate-time
evaluated_at: string

Evaluation time; not the timestamp of the latest usage event.

formatdate-time
status: "disabled" | "no_current_period" | "unavailable" | 2 more

Threshold evaluation, not proof of an edge cap. No current active period yields no_current_period for enabled policies; failed aggregate reads yield unavailable for enabled policies. Disabled policies report disabled. Neither no_current_period nor unavailable implies a zero balance or below-limit state. Operators may disable current-state reads, in which case current_state is omitted.

One of the following:
"disabled"
"no_current_period"
"unavailable"
"below_limit"
"limit_reached"
SpendPolicyGetResponse { id, account_id, action, 7 more }

A spend policy.

id: string

The unique identifier of the spend policy.

formatuuid
account_id: number

Internal numeric ID of the account that owns the policy. This is not the account tag used in the path.

formatint64
action: "notification" | "usage_block"

The action taken when the threshold is reached. notification sends an email to notification_email. usage_block blocks further usage of the product until the end of the billing period. Raising the threshold above the current balance, disabling the policy, or deleting it lifts the block early.

One of the following:
"notification"
"usage_block"
enabled: boolean

Whether the policy is evaluated.

name: string

Display name of the policy.

notification_email: string

Email address that receives notifications. An empty string when none is set.

product_id: "workers" | "durable_objects"

The product the policy applies to: workers or durable_objects. Each product’s balance and policies are separate. Both products support notification and usage_block policies on create and update.

One of the following:
"workers"
"durable_objects"
threshold_cents: number

The spend threshold for the current billing period, in US cents.

formatint64
version: number

Optimistic-concurrency version. It starts at 1 and goes up by one on every update or delete. This value is also returned in ETag.

formatint64
minimum1
current_state?: CurrentState { balance_cents, billing_period_end, billing_period_start, 3 more }

Read-only state on list/get responses, evaluated from the latest owning projector snapshot at request time, independently of the API replica. Configuration enabled/version/ETag do not change when a cycle rolls over. Audit history remains unchanged. Missing during a rolling upgrade or on mutation responses; clients must treat missing state as unavailable. Balances are asynchronous estimates, not a synchronous usage read.

balance_cents: number | null
formatint64
billing_period_end: string | null
formatdate-time
billing_period_start: string | null
formatdate-time
enforcement: Enforcement | null

Durable desired cap and delivery bookkeeping for this policy, or null if no owned effect exists. Separate from threshold evaluation: pending/leased/retry can lag the new billing period. Succeeded with equal generations means delivery completed, not an EWC readback.

applied_generation: number
formatint64
delivery_status: "pending" | "leased" | "retry" | "succeeded"
One of the following:
"pending"
"leased"
"retry"
"succeeded"
desired_generation: number
formatint64
desired_state: "active" | "inactive"
One of the following:
"active"
"inactive"
expires_at: string | null
formatdate-time
evaluated_at: string

Evaluation time; not the timestamp of the latest usage event.

formatdate-time
status: "disabled" | "no_current_period" | "unavailable" | 2 more

Threshold evaluation, not proof of an edge cap. No current active period yields no_current_period for enabled policies; failed aggregate reads yield unavailable for enabled policies. Disabled policies report disabled. Neither no_current_period nor unavailable implies a zero balance or below-limit state. Operators may disable current-state reads, in which case current_state is omitted.

One of the following:
"disabled"
"no_current_period"
"unavailable"
"below_limit"
"limit_reached"
SpendPolicyUpdateResponse { id, account_id, action, 7 more }

A spend policy.

id: string

The unique identifier of the spend policy.

formatuuid
account_id: number

Internal numeric ID of the account that owns the policy. This is not the account tag used in the path.

formatint64
action: "notification" | "usage_block"

The action taken when the threshold is reached. notification sends an email to notification_email. usage_block blocks further usage of the product until the end of the billing period. Raising the threshold above the current balance, disabling the policy, or deleting it lifts the block early.

One of the following:
"notification"
"usage_block"
enabled: boolean

Whether the policy is evaluated.

name: string

Display name of the policy.

notification_email: string

Email address that receives notifications. An empty string when none is set.

product_id: "workers" | "durable_objects"

The product the policy applies to: workers or durable_objects. Each product’s balance and policies are separate. Both products support notification and usage_block policies on create and update.

One of the following:
"workers"
"durable_objects"
threshold_cents: number

The spend threshold for the current billing period, in US cents.

formatint64
version: number

Optimistic-concurrency version. It starts at 1 and goes up by one on every update or delete. This value is also returned in ETag.

formatint64
minimum1
current_state?: CurrentState { balance_cents, billing_period_end, billing_period_start, 3 more }

Read-only state on list/get responses, evaluated from the latest owning projector snapshot at request time, independently of the API replica. Configuration enabled/version/ETag do not change when a cycle rolls over. Audit history remains unchanged. Missing during a rolling upgrade or on mutation responses; clients must treat missing state as unavailable. Balances are asynchronous estimates, not a synchronous usage read.

balance_cents: number | null
formatint64
billing_period_end: string | null
formatdate-time
billing_period_start: string | null
formatdate-time
enforcement: Enforcement | null

Durable desired cap and delivery bookkeeping for this policy, or null if no owned effect exists. Separate from threshold evaluation: pending/leased/retry can lag the new billing period. Succeeded with equal generations means delivery completed, not an EWC readback.

applied_generation: number
formatint64
delivery_status: "pending" | "leased" | "retry" | "succeeded"
One of the following:
"pending"
"leased"
"retry"
"succeeded"
desired_generation: number
formatint64
desired_state: "active" | "inactive"
One of the following:
"active"
"inactive"
expires_at: string | null
formatdate-time
evaluated_at: string

Evaluation time; not the timestamp of the latest usage event.

formatdate-time
status: "disabled" | "no_current_period" | "unavailable" | 2 more

Threshold evaluation, not proof of an edge cap. No current active period yields no_current_period for enabled policies; failed aggregate reads yield unavailable for enabled policies. Disabled policies report disabled. Neither no_current_period nor unavailable implies a zero balance or below-limit state. Operators may disable current-state reads, in which case current_state is omitted.

One of the following:
"disabled"
"no_current_period"
"unavailable"
"below_limit"
"limit_reached"
SpendPolicyDeleteResponse { id }
id: string

The unique identifier of the spend policy.

formatuuid

BillingSpend PoliciesAudit

List Spend Policy Audit Entries
client.billing.spendPolicies.audit.list(stringpolicyID, AuditListParams { account_id, limit, period } params, RequestOptionsoptions?): SinglePage<AuditListResponse { action, balance_cents, billing_period_end, 7 more } >
GET/accounts/{account_id}/billing/spend-policies/{policy_id}/audit
ModelsExpand Collapse
AuditListResponse { action, balance_cents, billing_period_end, 7 more }

A state transition recorded when the policy was evaluated against the account’s balance.

action: "notification" | "usage_block"

The action taken when the threshold is reached. notification sends an email to notification_email. usage_block blocks further usage of the product until the end of the billing period. Raising the threshold above the current balance, disabling the policy, or deleting it lifts the block early.

One of the following:
"notification"
"usage_block"
balance_cents: number

The account’s balance for the product at evaluation time, in US cents.

formatint64
billing_period_end: string

Exclusive end of the billing period that was evaluated.

formatdate-time
billing_period_start: string

Inclusive start of the billing period that was evaluated.

formatdate-time
created_at: string

When the entry was recorded.

formatdate-time
policy_version: number

The policy version that was evaluated.

formatint64
reason: string

A human-readable explanation of the trigger.

source: "kafka" | "policy_revision"

What caused the evaluation. kafka means a balance update. policy_revision means a change to the policy.

One of the following:
"kafka"
"policy_revision"
threshold_cents: number

The policy threshold at evaluation time, in US cents.

formatint64
trigger: string

The trigger recorded at evaluation time. New evaluations record limit_reached when the balance reaches or exceeds the configured threshold. Earlier entries retain their recorded trigger.

BillingSpend PoliciesActivity

List Spend Policy Activity
client.billing.spendPolicies.activity.list(ActivityListParams { account_id, cursor, limit, period } params, RequestOptionsoptions?): CursorPaginationAfter<ActivityListResponse { id, action, actor, 5 more } >
GET/accounts/{account_id}/billing/spend-policies/activity
ModelsExpand Collapse
ActivityListResponse { id, action, actor, 5 more }
id: string
action: "created" | "updated" | "enabled" | 2 more
One of the following:
"created"
"updated"
"enabled"
"disabled"
"deleted"
actor: string

Verified actor identifier, unknown when absent, or trusted internal actor.

details: Details { after, before }
after?: After { id, account_id, action, 7 more }

A spend policy.

id: string

The unique identifier of the spend policy.

formatuuid
account_id: number

Internal numeric ID of the account that owns the policy. This is not the account tag used in the path.

formatint64
action: "notification" | "usage_block"

The action taken when the threshold is reached. notification sends an email to notification_email. usage_block blocks further usage of the product until the end of the billing period. Raising the threshold above the current balance, disabling the policy, or deleting it lifts the block early.

One of the following:
"notification"
"usage_block"
enabled: boolean

Whether the policy is evaluated.

name: string

Display name of the policy.

notification_email: string

Email address that receives notifications. An empty string when none is set.

product_id: "workers" | "durable_objects"

The product the policy applies to: workers or durable_objects. Each product’s balance and policies are separate. Both products support notification and usage_block policies on create and update.

One of the following:
"workers"
"durable_objects"
threshold_cents: number

The spend threshold for the current billing period, in US cents.

formatint64
version: number

Optimistic-concurrency version. It starts at 1 and goes up by one on every update or delete. This value is also returned in ETag.

formatint64
minimum1
current_state?: CurrentState { balance_cents, billing_period_end, billing_period_start, 3 more }

Read-only state on list/get responses, evaluated from the latest owning projector snapshot at request time, independently of the API replica. Configuration enabled/version/ETag do not change when a cycle rolls over. Audit history remains unchanged. Missing during a rolling upgrade or on mutation responses; clients must treat missing state as unavailable. Balances are asynchronous estimates, not a synchronous usage read.

balance_cents: number | null
formatint64
billing_period_end: string | null
formatdate-time
billing_period_start: string | null
formatdate-time
enforcement: Enforcement | null

Durable desired cap and delivery bookkeeping for this policy, or null if no owned effect exists. Separate from threshold evaluation: pending/leased/retry can lag the new billing period. Succeeded with equal generations means delivery completed, not an EWC readback.

applied_generation: number
formatint64
delivery_status: "pending" | "leased" | "retry" | "succeeded"
One of the following:
"pending"
"leased"
"retry"
"succeeded"
desired_generation: number
formatint64
desired_state: "active" | "inactive"
One of the following:
"active"
"inactive"
expires_at: string | null
formatdate-time
evaluated_at: string

Evaluation time; not the timestamp of the latest usage event.

formatdate-time
status: "disabled" | "no_current_period" | "unavailable" | 2 more

Threshold evaluation, not proof of an edge cap. No current active period yields no_current_period for enabled policies; failed aggregate reads yield unavailable for enabled policies. Disabled policies report disabled. Neither no_current_period nor unavailable implies a zero balance or below-limit state. Operators may disable current-state reads, in which case current_state is omitted.

One of the following:
"disabled"
"no_current_period"
"unavailable"
"below_limit"
"limit_reached"
before?: Before | null

Prior configuration; null on creation or if a previous revision is unavailable.

id: string

The unique identifier of the spend policy.

formatuuid
account_id: number

Internal numeric ID of the account that owns the policy. This is not the account tag used in the path.

formatint64
action: "notification" | "usage_block"

The action taken when the threshold is reached. notification sends an email to notification_email. usage_block blocks further usage of the product until the end of the billing period. Raising the threshold above the current balance, disabling the policy, or deleting it lifts the block early.

One of the following:
"notification"
"usage_block"
enabled: boolean

Whether the policy is evaluated.

name: string

Display name of the policy.

notification_email: string

Email address that receives notifications. An empty string when none is set.

product_id: "workers" | "durable_objects"

The product the policy applies to: workers or durable_objects. Each product’s balance and policies are separate. Both products support notification and usage_block policies on create and update.

One of the following:
"workers"
"durable_objects"
threshold_cents: number

The spend threshold for the current billing period, in US cents.

formatint64
version: number

Optimistic-concurrency version. It starts at 1 and goes up by one on every update or delete. This value is also returned in ETag.

formatint64
minimum1
current_state?: CurrentState { balance_cents, billing_period_end, billing_period_start, 3 more }

Read-only state on list/get responses, evaluated from the latest owning projector snapshot at request time, independently of the API replica. Configuration enabled/version/ETag do not change when a cycle rolls over. Audit history remains unchanged. Missing during a rolling upgrade or on mutation responses; clients must treat missing state as unavailable. Balances are asynchronous estimates, not a synchronous usage read.

balance_cents: number | null
formatint64
billing_period_end: string | null
formatdate-time
billing_period_start: string | null
formatdate-time
enforcement: Enforcement | null

Durable desired cap and delivery bookkeeping for this policy, or null if no owned effect exists. Separate from threshold evaluation: pending/leased/retry can lag the new billing period. Succeeded with equal generations means delivery completed, not an EWC readback.

applied_generation: number
formatint64
delivery_status: "pending" | "leased" | "retry" | "succeeded"
One of the following:
"pending"
"leased"
"retry"
"succeeded"
desired_generation: number
formatint64
desired_state: "active" | "inactive"
One of the following:
"active"
"inactive"
expires_at: string | null
formatdate-time
evaluated_at: string

Evaluation time; not the timestamp of the latest usage event.

formatdate-time
status: "disabled" | "no_current_period" | "unavailable" | 2 more

Threshold evaluation, not proof of an edge cap. No current active period yields no_current_period for enabled policies; failed aggregate reads yield unavailable for enabled policies. Disabled policies report disabled. Neither no_current_period nor unavailable implies a zero balance or below-limit state. Operators may disable current-state reads, in which case current_state is omitted.

One of the following:
"disabled"
"no_current_period"
"unavailable"
"below_limit"
"limit_reached"
occurred_at: string
formatdate-time
policy_id: string

The unique identifier of the spend policy.

formatuuid
policy_version: number
formatint64
minimum1
product_id: string

BillingProfiles

Get Billing Profile
client.billing.profiles.get(ProfileGetParams { account_id } params, RequestOptionsoptions?): ProfileGetResponse { id, account_type, address, 35 more }
GET/accounts/{account_id}/billing/profile
Create Billing Profile
client.billing.profiles.create(ProfileCreateParams { account_id, address, address2, 17 more } params, RequestOptionsoptions?): ProfileCreateResponse { id, account_type, address, 35 more }
POST/accounts/{account_id}/billing/profile
Update Billing Profile
client.billing.profiles.update(ProfileUpdateParams { account_id, address, address2, 17 more } params, RequestOptionsoptions?): ProfileUpdateResponse { id, account_type, address, 35 more }
PUT/accounts/{account_id}/billing/profile
Delete Billing Profile
client.billing.profiles.delete(ProfileDeleteParams { account_id } params, RequestOptionsoptions?): void
DELETE/accounts/{account_id}/billing/profile
Update Billing Email
client.billing.profiles.updateBillingEmail(ProfileUpdateBillingEmailParams { account_id, billing_email, preferred_locale, secondary_billing_email } params, RequestOptionsoptions?): ProfileUpdateBillingEmailResponse { id, account_type, address, 35 more }
PATCH/accounts/{account_id}/billing/profile
ModelsExpand Collapse
ProfileGetResponse { id, account_type, address, 35 more }
id?: string

Billing item identifier tag.

maxLength32
account_type?: string
address?: string
address2?: string
balance?: string
card_expiry_month?: number
card_expiry_year?: number
card_number?: string
city?: string
company?: string
country?: string
created_on?: string
formatdate-time
device_data?: string
edited_on?: string
formatdate-time
enterprise_billing_email?: string
enterprise_primary_email?: string
first_name?: string
is_partner?: boolean
last_name?: string
next_bill_date?: string
formatdate-time
payment_address?: string
payment_address2?: string
payment_city?: string
payment_country?: string
payment_email?: string
payment_first_name?: string
payment_gateway?: string
payment_last_name?: string
payment_nonce?: string
payment_state?: string
payment_zipcode?: string
primary_email?: string
state?: string
tax_id_type?: string
telephone?: string
validation_code?: string
vat?: string
zipcode?: string
ProfileCreateResponse { id, account_type, address, 35 more }
id?: string

Billing item identifier tag.

maxLength32
account_type?: string
address?: string
address2?: string
balance?: string
card_expiry_month?: number
card_expiry_year?: number
card_number?: string
city?: string
company?: string
country?: string
created_on?: string
formatdate-time
device_data?: string
edited_on?: string
formatdate-time
enterprise_billing_email?: string
enterprise_primary_email?: string
first_name?: string
is_partner?: boolean
last_name?: string
next_bill_date?: string
formatdate-time
payment_address?: string
payment_address2?: string
payment_city?: string
payment_country?: string
payment_email?: string
payment_first_name?: string
payment_gateway?: string
payment_last_name?: string
payment_nonce?: string
payment_state?: string
payment_zipcode?: string
primary_email?: string
state?: string
tax_id_type?: string
telephone?: string
validation_code?: string
vat?: string
zipcode?: string
ProfileUpdateResponse { id, account_type, address, 35 more }
id?: string

Billing item identifier tag.

maxLength32
account_type?: string
address?: string
address2?: string
balance?: string
card_expiry_month?: number
card_expiry_year?: number
card_number?: string
city?: string
company?: string
country?: string
created_on?: string
formatdate-time
device_data?: string
edited_on?: string
formatdate-time
enterprise_billing_email?: string
enterprise_primary_email?: string
first_name?: string
is_partner?: boolean
last_name?: string
next_bill_date?: string
formatdate-time
payment_address?: string
payment_address2?: string
payment_city?: string
payment_country?: string
payment_email?: string
payment_first_name?: string
payment_gateway?: string
payment_last_name?: string
payment_nonce?: string
payment_state?: string
payment_zipcode?: string
primary_email?: string
state?: string
tax_id_type?: string
telephone?: string
validation_code?: string
vat?: string
zipcode?: string
ProfileUpdateBillingEmailResponse { id, account_type, address, 35 more }
id?: string

Billing item identifier tag.

maxLength32
account_type?: string
address?: string
address2?: string
balance?: string
card_expiry_month?: number
card_expiry_year?: number
card_number?: string
city?: string
company?: string
country?: string
created_on?: string
formatdate-time
device_data?: string
edited_on?: string
formatdate-time
enterprise_billing_email?: string
enterprise_primary_email?: string
first_name?: string
is_partner?: boolean
last_name?: string
next_bill_date?: string
formatdate-time
payment_address?: string
payment_address2?: string
payment_city?: string
payment_country?: string
payment_email?: string
payment_first_name?: string
payment_gateway?: string
payment_last_name?: string
payment_nonce?: string
payment_state?: string
payment_zipcode?: string
primary_email?: string
state?: string
tax_id_type?: string
telephone?: string
validation_code?: string
vat?: string
zipcode?: string

BillingProfilesPayment Method

Create Payment Intent for Billing Profile
client.billing.profiles.paymentMethod.create(PaymentMethodCreateParams { account_id } params, RequestOptionsoptions?): PaymentMethodCreateResponse { client_secret, intent_type }
POST/accounts/{account_id}/billing/profile/payment-method
ModelsExpand Collapse
PaymentMethodCreateResponse { client_secret, intent_type }
client_secret?: string

The Stripe client secret for frontend payment method collection.

intent_type?: string

The type of Stripe intent created.

BillingUsage

Get Account Billable Usage Info (Version 1, Alpha)
Deprecated
client.billing.usage.paygoInfo(UsagePaygoInfoParams { account_id } params, RequestOptionsoptions?): UsagePaygoInfoResponse { covered, subscriptions }
GET/accounts/{account_id}/billable-usage/info
Get Account Billable Usage (Version 1, Alpha)
Deprecated
client.billing.usage.paygo(UsagePaygoParams { account_id, from, to } params, RequestOptionsoptions?): UsagePaygoResponse { BilledCost, BillingAccountId, BillingAccountName, 24 more }
GET/accounts/{account_id}/billable-usage
Get Account Usage (Version 2, Alpha, Restricted)
Deprecated
client.billing.usage.get(UsageGetParams { account_id, from, to } params, RequestOptionsoptions?): UsageGetResponse { ChargeCategory, ChargeDescription, ChargeFrequency, 33 more }
GET/accounts/{account_id}/billable/usage
Get Account Billable Usage Info (Version 1, Alpha)
client.billing.usage.getAccountUsageInfoV1(UsageGetAccountUsageInfoV1Params { account_id } params, RequestOptionsoptions?): UsageGetAccountUsageInfoV1Response { covered, subscriptions }
GET/accounts/{account_id}/billable-usage/info
Get Account Billable Usage (Version 1, Alpha)
client.billing.usage.getAccountUsageV1(UsageGetAccountUsageV1Params { account_id, from, to } params, RequestOptionsoptions?): UsageGetAccountUsageV1Response { BilledCost, BillingAccountId, BillingAccountName, 24 more }
GET/accounts/{account_id}/billable-usage
Get Account Usage (Version 2, Alpha, Restricted)
client.billing.usage.getAccountUsageV2(UsageGetAccountUsageV2Params { account_id, from, to } params, RequestOptionsoptions?): UsageGetAccountUsageV2Response { ChargeCategory, ChargeDescription, ChargeFrequency, 33 more }
GET/accounts/{account_id}/billable/usage
ModelsExpand Collapse
UsagePaygoInfoResponse { covered, subscriptions }

Contains the usage info.

covered: boolean

Indicates whether the account is covered.

subscriptions: Array<Subscription>

List of subscriptions for the account.

id: string

The identifier for the Cloudflare subscription.

billing_cycle_anchor_timestamp: string

The subscription billing cycle anchor timestamp.

formatdate-time
start_timestamp: string

The subscription start timestamp.

formatdate-time
end_timestamp?: string

The subscription end timestamp. Omitted for active subscriptions; present only when the subscription has been cancelled.

formatdate-time
UsagePaygoResponse = Array<UsagePaygoResponseItem>

Contains the array of billable usage records.

BilledCost: number

The amount invoiced for this charge. PayGo is billed directly by Cloudflare, so this equals ContractedCost.

BillingAccountId: string

The identifier of the account the charge is billed to (account tag).

BillingAccountName: string | null

The display name of the billing account. Null when the name could not be resolved.

BillingCurrency: string

Specifies the billing currency code (ISO 4217).

BillingPeriodStart: string

Indicates the start of the billing period. There is no BillingPeriodEnd counterpart; see the known gaps described on this schema.

formatdate-time
ChargeCategory: "Usage"

Describes the nature of the charge. Always “Usage” for this endpoint, which only returns metered usage.

ChargeClass: string | null

Indicates whether the row corrects a previously invoiced billing period. Always null for this endpoint, which does not return corrections.

ChargeDescription: string | null

A human-readable summary of the charge.

ChargePeriodEnd: string

Indicates the end of the charge period.

formatdate-time
ChargePeriodStart: string

Indicates the start of the charge period.

formatdate-time
ConsumedQuantity: number

Specifies the quantity consumed during this charge period.

ConsumedUnit: string

A display name for the unit of measurement used for the product (for example, “GB-months”, “GB-seconds”). May be empty when the unit is implicit in the service name.

ContractedCost: number

Specifies the cost for this charge period in the billing currency.

CumulatedContractedCost: number

Specifies the cumulated cost for the billing period in the billing currency.

CumulatedPricingQuantity: number

Specifies the portion of usage that is actually subject to a unit price.

EffectiveCost: number

The amortized cost of the charge. PayGo has no upfront commitments, so this equals ContractedCost.

HostProviderName: string

The provider that hosts the infrastructure or platform the service runs on.

InvoiceIssuerName: string

The entity that issues the invoice for this charge.

ListCost: number

The cost at published list prices, before any discount. PayGo has no commitment discounts, so this equals ContractedCost.

PricingQuantity: number

Specifies the pricing quantity for this charge period.

PricingUnit: string

The unit that PricingQuantity is expressed in. Unlike ConsumedUnit this is never empty; it falls back to “Count” when the service has no explicit unit.

ServiceName: string

Identifies the Cloudflare service.

ServiceProviderName: string

The provider of the purchased service.

ServiceFamilyName?: string

Identifies the product family for the Cloudflare service.

SubscriptionId?: string | null

The identifier for the Cloudflare subscription.

ZoneId?: string | null

The identifier for the Cloudflare zone (zone tag).

ZoneName?: string | null

The display name of the Cloudflare zone.

UsageGetResponse = Array<UsageGetResponseItem>

Contains the array of cost and usage records.

ChargeCategory: "Usage"

Highest-level classification of a charge based on the nature of how it gets billed. Currently only “Usage” is supported.

ChargeDescription: string

Self-contained summary of the charge’s purpose and price.

ChargeFrequency: "Usage-Based"

Indicates how often a charge occurs. Currently only “Usage-Based” is supported.

ChargePeriodEnd: string

Exclusive end of the time interval during which the usage was consumed.

formatdate-time
ChargePeriodStart: string

Inclusive start of the time interval during which the usage was consumed.

formatdate-time
ConsumedUnit: string

Unit of measure for the consumed quantity (e.g., “GB”, “Requests”, “vCPU-Hours”).

HostProviderName: string

Name of the entity providing the underlying infrastructure or platform.

InvoiceIssuerName: string

Name of the entity responsible for invoicing for the services consumed.

ServiceProviderName: string

Name of the entity that made the services available for purchase.

x_BillableMetricId: string

The unique identifier for the billable metric in the Cloudflare catalog. Cloudflare extension; replaces FOCUS SkuId.

BilledCost?: number | null

A charge serving as the basis for invoicing, inclusive of all reduced rates and discounts while excluding the amortization of upfront charges (one-time or recurring).

BillingAccountId?: string

Public identifier of the Cloudflare account (account tag). Omitted when account is not part of the requested grouping, and always omitted for usage measured at contract level, even when grouping by account: that usage is returned as its own record with no account.

BillingAccountName?: string

Display name of the Cloudflare account. Omitted when account is not part of the requested grouping, and for usage measured at contract level.

BillingCurrency?: string | null

Currency that a charge was billed in (ISO 4217).

BillingPeriodEnd?: string | null

Exclusive end of the billing cycle that contains this usage record.

formatdate-time
BillingPeriodStart?: string | null

Inclusive start of the billing cycle that contains this usage record.

formatdate-time
ChargeClass?: "Correction" | null

Indicates whether the row represents a correction to one or more charges invoiced in a previous billing period.

ConsumedQuantity?: number

Measured usage amount within the charge period. Reflects raw metered consumption before pricing transformations.

ContractedCost?: number | null

Cost calculated by multiplying ContractedUnitPrice and the corresponding PricingQuantity.

ContractedUnitPrice?: number | null

The agreed-upon unit price for a single PricingUnit of the associated billable metric, inclusive of negotiated discounts, if present, while excluding any other discounts.

EffectiveCost?: number | null

The amortized cost of the charge after applying all reduced rates, discounts, and the applicable portion of relevant, prepaid purchases (one-time or recurring) that covered the charge.

ListCost?: number | null

Cost calculated by multiplying ListUnitPrice and the corresponding PricingQuantity.

ListUnitPrice?: number | null

Suggested provider-published unit price for a single PricingUnit of the associated billable metric, exclusive of any discounts.

PricingQuantity?: number | null

Volume of a given service used or purchased, based on the PricingUnit.

PricingUnit?: string | null

Provider-specified measurement unit for determining unit prices, indicating how the provider rates measured usage after applying pricing rules like block pricing.

RegionId?: string | null

Provider-assigned identifier for an isolated geographic area where a service is provided.

RegionName?: string | null

Name of an isolated geographic area where a service is provided.

SubAccountId?: string

Unique identifier assigned to a grouping of services. For Cloudflare, this is the subscription or contract ID.

SubAccountName?: string

Name assigned to a grouping of services. For Cloudflare, this is the subscription or contract display name.

Tags?: Record<string, string | true>

Tag values for the requested GroupBy keys. Omitted when GroupBy is not provided. Missing keys are omitted, and key-only tags are returned as boolean true. All other tag values are strings.

One of the following:
string
true
true
x_BillableMetricName?: string

The display name of the billable metric. Cloudflare extension; replaces FOCUS SkuMeter.

x_ProductCategoryName?: string

The product category the charge belongs to (e.g., “Developer”, “Cloudflare One”). Cloudflare extension; replaces FOCUS ServiceCategory.

x_ProductFamilyId?: string

The unique identifier for the product family in the Cloudflare catalog. Cloudflare extension; replaces FOCUS ServiceId.

x_ProductFamilyName?: string

The product family the charge belongs to (e.g., “R2”, “Workers”). Cloudflare extension; replaces FOCUS ServiceName.

x_ZoneId?: string | null

The identifier for the Cloudflare zone (zone tag). Omitted when zone is not part of the requested grouping, and always omitted for usage measured at contract level, even when grouping by zone. Cloudflare extension.

x_ZoneName?: string | null

The display name of the Cloudflare zone. Omitted when zone is not part of the requested grouping, and for usage measured at contract level. Cloudflare extension.

UsageGetAccountUsageInfoV1Response { covered, subscriptions }

Contains the usage info.

covered: boolean

Indicates whether the account is covered.

subscriptions: Array<Subscription>

List of subscriptions for the account.

id: string

The identifier for the Cloudflare subscription.

billing_cycle_anchor_timestamp: string

The subscription billing cycle anchor timestamp.

formatdate-time
start_timestamp: string

The subscription start timestamp.

formatdate-time
end_timestamp?: string

The subscription end timestamp. Omitted for active subscriptions; present only when the subscription has been cancelled.

formatdate-time
UsageGetAccountUsageV1Response = Array<UsageGetAccountUsageV1ResponseItem>

Contains the array of billable usage records.

BilledCost: number

The amount invoiced for this charge. PayGo is billed directly by Cloudflare, so this equals ContractedCost.

BillingAccountId: string

The identifier of the account the charge is billed to (account tag).

BillingAccountName: string | null

The display name of the billing account. Null when the name could not be resolved.

BillingCurrency: string

Specifies the billing currency code (ISO 4217).

BillingPeriodStart: string

Indicates the start of the billing period. There is no BillingPeriodEnd counterpart; see the known gaps described on this schema.

formatdate-time
ChargeCategory: "Usage"

Describes the nature of the charge. Always “Usage” for this endpoint, which only returns metered usage.

ChargeClass: string | null

Indicates whether the row corrects a previously invoiced billing period. Always null for this endpoint, which does not return corrections.

ChargeDescription: string | null

A human-readable summary of the charge.

ChargePeriodEnd: string

Indicates the end of the charge period.

formatdate-time
ChargePeriodStart: string

Indicates the start of the charge period.

formatdate-time
ConsumedQuantity: number

Specifies the quantity consumed during this charge period.

ConsumedUnit: string

A display name for the unit of measurement used for the product (for example, “GB-months”, “GB-seconds”). May be empty when the unit is implicit in the service name.

ContractedCost: number

Specifies the cost for this charge period in the billing currency.

CumulatedContractedCost: number

Specifies the cumulated cost for the billing period in the billing currency.

CumulatedPricingQuantity: number

Specifies the portion of usage that is actually subject to a unit price.

EffectiveCost: number

The amortized cost of the charge. PayGo has no upfront commitments, so this equals ContractedCost.

HostProviderName: string

The provider that hosts the infrastructure or platform the service runs on.

InvoiceIssuerName: string

The entity that issues the invoice for this charge.

ListCost: number

The cost at published list prices, before any discount. PayGo has no commitment discounts, so this equals ContractedCost.

PricingQuantity: number

Specifies the pricing quantity for this charge period.

PricingUnit: string

The unit that PricingQuantity is expressed in. Unlike ConsumedUnit this is never empty; it falls back to “Count” when the service has no explicit unit.

ServiceName: string

Identifies the Cloudflare service.

ServiceProviderName: string

The provider of the purchased service.

ServiceFamilyName?: string

Identifies the product family for the Cloudflare service.

SubscriptionId?: string | null

The identifier for the Cloudflare subscription.

ZoneId?: string | null

The identifier for the Cloudflare zone (zone tag).

ZoneName?: string | null

The display name of the Cloudflare zone.

UsageGetAccountUsageV2Response = Array<UsageGetAccountUsageV2ResponseItem>

Contains the array of cost and usage records.

ChargeCategory: "Usage"

Highest-level classification of a charge based on the nature of how it gets billed. Currently only “Usage” is supported.

ChargeDescription: string

Self-contained summary of the charge’s purpose and price.

ChargeFrequency: "Usage-Based"

Indicates how often a charge occurs. Currently only “Usage-Based” is supported.

ChargePeriodEnd: string

Exclusive end of the time interval during which the usage was consumed.

formatdate-time
ChargePeriodStart: string

Inclusive start of the time interval during which the usage was consumed.

formatdate-time
ConsumedUnit: string

Unit of measure for the consumed quantity (e.g., “GB”, “Requests”, “vCPU-Hours”).

HostProviderName: string

Name of the entity providing the underlying infrastructure or platform.

InvoiceIssuerName: string

Name of the entity responsible for invoicing for the services consumed.

ServiceProviderName: string

Name of the entity that made the services available for purchase.

x_BillableMetricId: string

The unique identifier for the billable metric in the Cloudflare catalog. Cloudflare extension; replaces FOCUS SkuId.

BilledCost?: number | null

A charge serving as the basis for invoicing, inclusive of all reduced rates and discounts while excluding the amortization of upfront charges (one-time or recurring).

BillingAccountId?: string

Public identifier of the Cloudflare account (account tag). Omitted when account is not part of the requested grouping, and always omitted for usage measured at contract level, even when grouping by account: that usage is returned as its own record with no account.

BillingAccountName?: string

Display name of the Cloudflare account. Omitted when account is not part of the requested grouping, and for usage measured at contract level.

BillingCurrency?: string | null

Currency that a charge was billed in (ISO 4217).

BillingPeriodEnd?: string | null

Exclusive end of the billing cycle that contains this usage record.

formatdate-time
BillingPeriodStart?: string | null

Inclusive start of the billing cycle that contains this usage record.

formatdate-time
ChargeClass?: "Correction" | null

Indicates whether the row represents a correction to one or more charges invoiced in a previous billing period.

ConsumedQuantity?: number

Measured usage amount within the charge period. Reflects raw metered consumption before pricing transformations.

ContractedCost?: number | null

Cost calculated by multiplying ContractedUnitPrice and the corresponding PricingQuantity.

ContractedUnitPrice?: number | null

The agreed-upon unit price for a single PricingUnit of the associated billable metric, inclusive of negotiated discounts, if present, while excluding any other discounts.

EffectiveCost?: number | null

The amortized cost of the charge after applying all reduced rates, discounts, and the applicable portion of relevant, prepaid purchases (one-time or recurring) that covered the charge.

ListCost?: number | null

Cost calculated by multiplying ListUnitPrice and the corresponding PricingQuantity.

ListUnitPrice?: number | null

Suggested provider-published unit price for a single PricingUnit of the associated billable metric, exclusive of any discounts.

PricingQuantity?: number | null

Volume of a given service used or purchased, based on the PricingUnit.

PricingUnit?: string | null

Provider-specified measurement unit for determining unit prices, indicating how the provider rates measured usage after applying pricing rules like block pricing.

RegionId?: string | null

Provider-assigned identifier for an isolated geographic area where a service is provided.

RegionName?: string | null

Name of an isolated geographic area where a service is provided.

SubAccountId?: string

Unique identifier assigned to a grouping of services. For Cloudflare, this is the subscription or contract ID.

SubAccountName?: string

Name assigned to a grouping of services. For Cloudflare, this is the subscription or contract display name.

Tags?: Record<string, string | true>

Tag values for the requested GroupBy keys. Omitted when GroupBy is not provided. Missing keys are omitted, and key-only tags are returned as boolean true. All other tag values are strings.

One of the following:
string
true
true
x_BillableMetricName?: string

The display name of the billable metric. Cloudflare extension; replaces FOCUS SkuMeter.

x_ProductCategoryName?: string

The product category the charge belongs to (e.g., “Developer”, “Cloudflare One”). Cloudflare extension; replaces FOCUS ServiceCategory.

x_ProductFamilyId?: string

The unique identifier for the product family in the Cloudflare catalog. Cloudflare extension; replaces FOCUS ServiceId.

x_ProductFamilyName?: string

The product family the charge belongs to (e.g., “R2”, “Workers”). Cloudflare extension; replaces FOCUS ServiceName.

x_ZoneId?: string | null

The identifier for the Cloudflare zone (zone tag). Omitted when zone is not part of the requested grouping, and always omitted for usage measured at contract level, even when grouping by zone. Cloudflare extension.

x_ZoneName?: string | null

The display name of the Cloudflare zone. Omitted when zone is not part of the requested grouping, and for usage measured at contract level. Cloudflare extension.

BillingCredits

Get Account Credits
client.billing.credits.get(CreditGetParams { account_id } params, RequestOptionsoptions?): CreditGetResponse { confirmed_balance_cents, currency, days_remaining, 7 more }
GET/accounts/{account_id}/billing/credits
ModelsExpand Collapse
CreditGetResponse { confirmed_balance_cents, currency, days_remaining, 7 more }
confirmed_balance_cents?: number

The confirmed credit balance in cents.

formatint64
currency?: string

Currency of the credit balance.

days_remaining?: number

Days remaining until the credits expire.

formatint64
eligible?: boolean

Whether the account is eligible to receive credits.

has_record?: boolean

Whether a credit record exists for the account.

original_amount_cents?: number

The original credit amount in cents.

formatint64
percent_consumed?: number

Percentage of the original credit amount consumed.

formatdouble
projected_depletion_date?: string

Projected date when the credits will be depleted.

formatdate-time
valid_from?: string

When the credits become valid.

formatdate-time
valid_to?: string

When the credits expire.

formatdate-time

BillingHistory

Get Account Billing History
client.billing.history.list(HistoryListParams { account_id, page, per_page, status } params, RequestOptionsoptions?): V4PagePaginationArray<HistoryListResponse { id, action, amount, 12 more } >
GET/accounts/{account_id}/billing/history
ModelsExpand Collapse
HistoryListResponse { id, action, amount, 12 more }
id?: string

Billing history item identifier.

action?: string

The billing item action.

amount?: number

The amount associated with this billing item.

amount_to_pay?: number

The amount remaining to pay.

currency?: string

The currency of the billing item.

description?: string

The billing item description.

external_invoice_id?: string

The external invoice identifier.

hosted_invoice_url?: string

URL to the hosted invoice.

invoice_id?: string

The associated invoice identifier.

occurred_at?: string

When the billing event occurred.

formatdate-time
receipt_id?: string

The associated receipt identifier.

source?: string

The source of the billing item.

source_invoice_id?: string

The source invoice identifier.

status?: string

The status of the billing item.

type?: string

The billing item type.

BillingBad Debt

Get Account Bad Debt
client.billing.badDebt.get(BadDebtGetParams { account_id } params, RequestOptionsoptions?): BadDebtGetResponse { already_paid, bad_debt_status, invoices, total_debt_amount }
GET/accounts/{account_id}/billing/bad-debt
ModelsExpand Collapse
BadDebtGetResponse { already_paid, bad_debt_status, invoices, total_debt_amount }
already_paid?: number

Amount already paid towards the debt.

bad_debt_status?: string

The current bad debt status of the account.

invoices?: Array<Invoice>

List of outstanding invoices contributing to bad debt.

id?: string

Billing history item identifier.

action?: string

The billing item action.

amount?: number

The amount associated with this billing item.

amount_to_pay?: number

The amount remaining to pay.

currency?: string

The currency of the billing item.

description?: string

The billing item description.

external_invoice_id?: string

The external invoice identifier.

hosted_invoice_url?: string

URL to the hosted invoice.

invoice_id?: string

The associated invoice identifier.

occurred_at?: string

When the billing event occurred.

formatdate-time
receipt_id?: string

The associated receipt identifier.

source?: string

The source of the billing item.

source_invoice_id?: string

The source invoice identifier.

status?: string

The status of the billing item.

type?: string

The billing item type.

total_debt_amount?: number

Total outstanding debt amount.

BillingUnpaid Invoice

Get Unpaid Invoices
client.billing.unpaidInvoice.get(UnpaidInvoiceGetParams { account_id } params, RequestOptionsoptions?): UnpaidInvoiceGetResponse { invoices }
GET/accounts/{account_id}/billing/unpaid-invoice
ModelsExpand Collapse
UnpaidInvoiceGetResponse { invoices }
invoices?: Array<Invoice>

List of unpaid invoices.

id?: string

Billing history item identifier.

action?: string

The billing item action.

amount?: number

The amount associated with this billing item.

amount_to_pay?: number

The amount remaining to pay.

currency?: string

The currency of the billing item.

description?: string

The billing item description.

external_invoice_id?: string

The external invoice identifier.

hosted_invoice_url?: string

URL to the hosted invoice.

invoice_id?: string

The associated invoice identifier.

occurred_at?: string

When the billing event occurred.

formatdate-time
receipt_id?: string

The associated receipt identifier.

source?: string

The source of the billing item.

source_invoice_id?: string

The source invoice identifier.

status?: string

The status of the billing item.

type?: string

The billing item type.

BillingRate Plans

Get Rate Plan by Public Key
client.billing.ratePlans.get(stringpublicKey, RequestOptionsoptions?): RatePlanGetResponse { id, components, currency, public_name }
GET/billing/rate_plans/{public_key}
ModelsExpand Collapse
RatePlanGetResponse { id, components, currency, public_name }
id?: string

The uppercase rate plan public key.

components?: Array<Record<string, unknown>>

Pricing components that make up this rate plan.

currency?: string

Currency of the rate plan pricing.

public_name?: string

Human-readable description of the rate plan.