Contents

API reference

Billing

API reference descriptions are provided in English to preserve the exact published contract.

Configure tax-gated invoicing periods and durable collection retries

PUT /v1/accounts/{AC}/billing/automation

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
Request body (12 fields)
Request body
NameTypeRequiredDescription
collectionobject
collection.paymentIntentIdstring (uuid)yes
collection.retryDelaysHoursinteger (0–8760)[]yes
collection.stepUpTokenstring (max 4096 chars)yes
currencystring (pattern ^[A-Z]{3}$)yes
nextPeriodEndstring (date-time)yes
nextPeriodStartstring (date-time)yes
providerStatementobject
providerStatement.nextPeriodEndstring (date-time)yes
providerStatement.nextPeriodStartstring (date-time)yes
providerStatement.providerstring (max 128 chars)yes
providerStatement.wabaSidstring (WB… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

List settled charges with their message, sender, market and evidence

GET /v1/accounts/{AC}/billing/charges

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
limitquery · integer (1–100)
cursorquery · string (max 2048 chars)
fromquery · string (date-time)
toquery · string (date-time)
senderSidquery · string (WA… SID)
campaignSidquery · string (CP… SID)
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

List durable invoices without exposing payment-provider credentials

GET /v1/accounts/{AC}/billing/invoices

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
limitquery · integer (1–100)
cursorquery · string (max 2048 chars)
statequery · "draft" | "pending_provider" | "open" | "past_due" | "paid" | "void" | "uncollectible" | "failed"
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Fetch an invoice and its immutable line references

GET /v1/accounts/{AC}/billing/invoices/{IN}

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
INpath · string (IN… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Issue a ledger-backed credit note without rewriting invoice history

POST /v1/accounts/{AC}/billing/invoices/{IN}/credit-notes

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
INpath · string (IN… SID)yes
Request body (8 fields)
Request body
NameTypeRequiredDescription
amountMinorstring (pattern ^[1-9][0-9]*$)yes
approvalSidstring (AP… SID)
currencystring (pattern ^[A-Z]{3}$)yes
evidenceobjectyes
idempotencyKeystring (max 255 chars)yes
reasonstring (max 500 chars)yes
scaleinteger (0–9)yes
taxMinorstring (pattern ^[0-9]+$)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Re-queue a terminally failed invoice submission

POST /v1/accounts/{AC}/billing/invoices/{IN}/resubmit

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
INpath · string (IN… SID)yes
Request body (1 fields)
Request body
NameTypeRequiredDescription
stepUpTokenstring (max 256 chars)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Void an invoice issued in error

POST /v1/accounts/{AC}/billing/invoices/{IN}/void

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
INpath · string (IN… SID)yes
Request body (3 fields)
Request body
NameTypeRequiredDescription
evidenceobjectyes
idempotencyKeystring (max 255 chars)yes
reasonstring (max 500 chars)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Write a past-due invoice off as uncollectible

POST /v1/accounts/{AC}/billing/invoices/{IN}/write-off

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
INpath · string (IN… SID)yes
Request body (3 fields)
Request body
NameTypeRequiredDescription
evidenceobjectyes
idempotencyKeystring (max 255 chars)yes
reasonstring (max 500 chars)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Read the low-balance alert of each live wallet

GET /v1/accounts/{AC}/billing/low-balance-alerts

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Set the balance below which the wallet warns its owners

PUT /v1/accounts/{AC}/billing/low-balance-alerts/{currency}

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
currencypath · string (pattern ^[A-Z]{3}$)yes
Request body (1 fields)
Request body
NameTypeRequiredDescription
thresholdstring (pattern ^[0-9][0-9,]*(\.[0-9]+)?$, max 24 chars) | nullyes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Quote one message from the effective immutable pricing fact

POST /v1/accounts/{AC}/billing/message-quote

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
Request body (5 fields)
Request body
NameTypeRequiredDescription
categorystring (pattern ^[A-Z][A-Z0-9_]{0,63}$)yes
identifierType"PHONE_E164" | "BSUID" | "USERNAME"yes
recipientstring (max 512 chars)yes
senderSidstring (WA… SID)yes
transport"CLOUD_API" | "MARKETING_MESSAGES"

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

List payment lifecycle state without exposing payment credentials

GET /v1/accounts/{AC}/billing/payments

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
limitquery · integer (1–100)
cursorquery · string (max 2048 chars)
statequery · string (max 64 chars)
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Submit signed provider pricing evidence and reprocess a pending settlement

POST /v1/accounts/{AC}/billing/pricing-remediation/{CS}

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
CSpath · string (CS… SID)yes
Request body (11 fields)
Request body
NameTypeRequiredDescription
pricingobjectyes
pricing.billablebooleanyes
pricing.categorystring (max 64 chars)yes
pricing.customerCurrencystring (pattern ^[A-Z]{3}$)yes
pricing.marketstring (max 16 chars)yes
pricing.pricingModelstring (max 128 chars)yes
pricing.pricingType"REGULAR" | "FREE_CUSTOMER_SERVICE" | "FREE_ENTRY_POINT"yes
pricing.providerEvidenceobjectyes
pricing.transportstring (max 64 chars)yes
signaturestring (pattern ^v1=[0-9a-f]{64}$)yes
stepUpTokenstring (max 256 chars)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

What this account is charged per message, in force today

GET /v1/accounts/{AC}/billing/rate-card

The same effective-dated pricing facts the quote and the settlement read, filtered to what the account holder is actually charged. The admin listing beside this one needs platform:configure, which no customer holds, so until now a business could be charged a rate it had no way to read. Provider cost and margin are deliberately absent: what the platform pays Meta is not the customer's charge and showing it would invite the two to be confused. Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

List the receipts issued for captured wallet top-ups

GET /v1/accounts/{AC}/billing/receipts

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
limitquery · integer (1–100)
cursorquery · string (max 2048 chars)
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Fetch a top-up receipt with its immutable document

GET /v1/accounts/{AC}/billing/receipts/{RC}

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
RCpath · string (RC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

List reconciliation discrepancies with their statement evidence

GET /v1/accounts/{AC}/billing/reconciliation-cases

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
limitquery · integer (1–100)
cursorquery · string (max 2048 chars)
statequery · "open" | "investigating" | "resolved" | "rejected"
outcomequery · "amount_mismatch" | "missing_platform_event" | "unexpected_provider_charge" | "missing_provider_status"
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Fetch one reconciliation discrepancy and its evidence

GET /v1/accounts/{AC}/billing/reconciliation-cases/{CS}

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
CSpath · string (CS… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Resolve a reconciliation case with append-only operator evidence

POST /v1/accounts/{AC}/billing/reconciliation-cases/{CS}/resolve

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
CSpath · string (CS… SID)yes
Request body (3 fields)
Request body
NameTypeRequiredDescription
evidenceobjectyes
reasonstring (max 500 chars)yes
resolution"resolved" | "rejected"yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Issue a provider refund against a captured payment

POST /v1/accounts/{AC}/billing/refunds

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
Request body (9 fields)
Request body
NameTypeRequiredDescription
amountMinorstring (pattern ^[1-9][0-9]*$)
approvalSidstring (AP… SID)yes
currencystring (pattern ^[A-Z]{3}$)
idempotencyKeystring (max 255 chars)yes
invoiceSidstring (IN… SID)
paymentIntentIdstring (uuid)
reason"duplicate" | "fraudulent" | "requested_by_customer"yes
scaleinteger (0–9)
stepUpTokenstring (max 256 chars)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

List monthly statements for prepaid wallets

GET /v1/accounts/{AC}/billing/statements

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
limitquery · integer (1–100)
cursorquery · string (max 2048 chars)
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Fetch a monthly statement with its immutable document

GET /v1/accounts/{AC}/billing/statements/{ST}

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
STpath · string (ST… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Set the tax profile an account's invoices are calculated under (staff only)

PUT /v1/accounts/{AC}/billing/tax-profile

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
Request body (7 fields)
Request body
NameTypeRequiredDescription
currencystring (pattern ^[A-Z]{3}$)yes
invoiceProviderstring (max 128 chars)yes
reasonstring (max 500 chars)yes
stepUpTokenstring (max 4096 chars)yes
taxCodestring (max 128 chars)yes
taxJurisdictionstring (max 128 chars)yes
taxProviderstring (max 128 chars)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Start provider-hosted wallet funding

POST /v1/accounts/{AC}/billing/top-ups

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
Request body (5 fields)
Request body
NameTypeRequiredDescription
amountMinorstring (pattern ^[1-9][0-9]{0,7}$)yes
currencystring (pattern ^[A-Z]{3}$)yes
idempotencyKeystring (max 255 chars)yes
saveCardForInvoicesboolean
stepUpTokenstring (max 4096 chars)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

List billing wallets and ledger-derived available funds

GET /v1/accounts/{AC}/billing/wallets

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
limitquery · integer (1–100)
cursorquery · string (max 2048 chars)
currencyquery · string (pattern ^[A-Z]{3}$)
commercialModequery · "prepaid" | "postpaid" | "credit_line" | "invoice" | "hybrid"
billingStatusquery · string (max 64 chars)
dunningStatequery · string (max 64 chars)
ACpath · string (AC… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Fetch the effective WABA billing mode and migration state

GET /v1/accounts/{AC}/wabas/{WB}/billing-mode

Required scope: `billing:read`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
WBpath · string (WB… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Start a safely gated migration to partner billing

POST /v1/accounts/{AC}/wabas/{WB}/billing-mode-switch

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
WBpath · string (WB… SID)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Accept partner-billing terms with a single-use MFA step-up grant

POST /v1/accounts/{AC}/wabas/{WB}/billing-mode-switch/accept

Required scope: `billing_mode:accept`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
WBpath · string (WB… SID)yes
Request body (2 fields)
Request body
NameTypeRequiredDescription
stepUpEvidencestring (max 4096 chars)yes
termsVersionstring (max 128 chars)yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

Revert partner billing only after durable Meta credit-allocation revocation

POST /v1/accounts/{AC}/wabas/{WB}/billing-mode-switch/revert

Required scope: `billing:write`.

Parameters

Parameters
NameTypeRequiredDescription
ACpath · string (AC… SID)yes
WBpath · string (WB… SID)yes
Request body (2 fields)
Request body
NameTypeRequiredDescription
idempotencyKeystring (max 255 chars)yes
reason"customer_disconnected"yes

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.

The published platform rate card

GET /v1/pricing

What ShipMsg charges per delivered message, by category, pricing type, transport, market and currency. Meta bills the business directly for the conversation itself; this fee is the entire ShipMsg charge. Public: no key is needed to read a price.

Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.