Every invoice has aDocumentation Index
Fetch the complete documentation index at: https://docs.pawpayments.com/llms.txt
Use this file to discover all available pages before exploring further.
billing_type that decides what happens when the customer
sends an amount different from the requested one and when the invoice is
considered finalised.
STATIC — service / product purchase
Use this for fixed-price flows: subscription renewal, one-off product
purchase, paid plan upgrade, etc.
- The invoice expects exactly
amount. - An underpayment moves the invoice to
partially_paidwithout finalising it. The deposit address keeps listening, the customer can top up to the full amount, and only then does the invoice transition tosuccess. If they never finish paying, the invoice expires (expires_at) and is moved tocancelled. - An overpayment transitions the invoice to
paid_over(final). - An exact payment transitions the invoice to
success(final). - The hosted checkout exposes the remaining amount via
initial_amount/initial_fiat_amountso the page can render a “pay the rest” UI on a partial payment.
success, paid_over, failed, high_risk, cancelled.
VARY — balance top-up / open-ended deposit
Use this when you don’t know the exact amount in advance, e.g. a wallet
top-up, a tip jar, or a permanent address.
- Any incoming payment finalises the invoice in one shot:
- covers
amount→success - less than
amount→partially_paid(treated as finalized — no further top-ups are accepted on the same invoice) - more than
amount→paid_over
- covers
- This makes
VARYinvoices a single-payment record of the deposit rather than an open-ended ledger.
success, partially_paid, paid_over, failed,
high_risk, cancelled.
Permanent addresses
Settingpermanent_address: true when creating an invoice binds it to the
long-lived deposit address for (merchant, user_id, asset family). The
address is created on first use and reused for every subsequent invoice.
Required when permanent_address: true:
billing_typemust beVARY.user_idmust be supplied.assetmust belong to a family that supports permanent addresses (evm,tron,solana,xrp,bitcoin,litecoin,bitcoincash).
- If there is a non-finalised invoice already attached to the address
(e.g. a
createdinvoice the merchant just created withpermanent_address: true), the deposit is credited to that invoice. - Otherwise a new invoice is auto-created (
billing_type: VARY) and credited.

