Skip to main content
POST
Creates (or resumes) a top-up. Unpaid requests receive 402 Payment Required with the exact payment requirements to sign; paid requests settle the payment and perform the merchant deposit. Replaying the same X-PAYMENT returns the existing top-up idempotently.

Path

string
default:"antseed"
required
Merchant id. Currently antseed. Unsupported merchant paths return 404.

Headers

string
required
Must be application/json.
string
Base64-encoded signed x402 payment payload. Omit on the first request to receive the payment requirements via a 402 response.

Body

string
Address to credit on the merchant contract. Required on an unpaid request; on a paid request it defaults to the payment signer. It may differ from authorization.from when the paid request includes a valid beneficiary binding.
string
Gross payment-token amount in 6-decimal base units (for example, "5000000" = 5 tokens). When omitted, the gateway uses the buyer’s maximum available headroom. When paying, it must match authorization.value and be within the bounds returned by the challenge or quote endpoint.
object
Signed x402 payment payload as JSON. Use either this field or the base64-encoded X-PAYMENT header.
object
Required when the payment signer (payer A) differs from buyer (buyer B). The preferred shape is { "kind": "payer-commitment-v1", "salt": "0x…32 bytes" }; the signed EIP-3009 nonce must be the corresponding commitment. Use @meridian/topup-client to construct this automatically.

Responses

The challenge below abbreviates the enabled source list for readability. The live response contains one accepts[] and topup.sources[] entry per source that can accept the requested amount.