- Which account the funds are coming from and which token to send
- Which account should receive funds and which token they should get
- How much (in the token’s smallest unit)
- Your authorization to release the funds
What you sign locally
Before submitting, your app signs the request with your private key. The gateway validates the signature but never sees your private key — signing always happens on your machine.Push and pull payments
The same payment request model works for both directions: Push — the sender initiates (Anna sends $100 to Bob):Settlement providers on this payment
You can optionally restrict which settlement providers may fulfill this request. Setsettler_requirements on the request: an allow list (whitelist) and/or a deny list (blacklist) of settlement-provider identities (DIDs). If both are present, the deny list wins.
You set this per payment. The Payment Gateway applies it. It matches named identities, not credential types.
This is not counterparty authorization (recipient consent), and it is not a way to require a credential type of the other side. See Policy enforcement.
What happens after you submit
- Gateway validates the request and returns a
payment_id - Settlement providers compete to fulfill it
- Funds move on-chain asynchronously
- You collect the outcome (re-attempt the same purchase for x402/MPP flows, or read
/statusout of band)
Next steps
After you finish this page, the following go deeper:- Token approvals — one-time setup before your first payment
- Policy enforcement — identity lists vs credential-type trust
- Using the CLI — submit your first payment request