- Email address confirmed
- Integration tested end to end with a Test key — a simulated payment walks every event — then a Live key in production
- API key with only the scopes you need, kept in an environment variable — not in code or git
- Every
POST /invoicessends anIdempotency-Key(one per order) - Amounts sent as
amountDecimal("49.99"); amounts read back divided by the asset's decimals -
assetType: "native"sent explicitly for a coin invoice (the default iserc20) - On the XRP Ledger,
receiveTagshown besidereceiveAddress - Webhook URL is
https://on a public domain and answers2xxwithin 30 seconds - Webhook signature verified on every delivery, and timestamps older than 5 minutes rejected
-
X-Request-Idstored so a retried delivery is never fulfilled twice - Orders fulfilled on
invoice.paid/invoice.overpaid— never oninvoice.receiving; physical goods shipped oninvoice.finalif you wait for depth -
expiresInSecondsmatches your checkout timeout
API docsGo-live checklist
Go live
Go-live checklistAPI docsGo live