Onboarding & Going Live
URLs
| API base | https://api.abstrapay.com — all server-to-server calls |
| Widget | https://widget.abstrapay.com/?sid=<SESSION_ID> — embed the url returned by /session/create |
| Live reference | https://operator-demo.abstrapay.com — a fully working operator (widget embed + webhook handling) you can copy from |
What AbstraPay provides you
- Your
OPERATOR_SECRET_KEY, sent over a secure channel — authenticates/session/createand signs/verifies every webhook. - The API + widget above, and this guide.
What we need from you
- Your webhook callback URL — where we
POSTDEPOSIT/WITHDRAW_REQUEST/WITHDRAW_COMPLETE. - The site domain(s) where you'll embed the widget or call the API, so we can whitelist them (CORS / embedding).
Steps
- Send us your callback URL + domain(s); we send you your
OPERATOR_SECRET_KEY. - Server-side: call
/session/create, embed the returned widgeturl, and implement the webhook handlers with signature verification (see Webhooks). - Validate end-to-end with a small deposit (e.g. 0.01 USDC) on a fast, low-fee network such as Base or Arbitrum.
- You're live.
Best Practices
- Idempotency — webhooks may be delivered more than once. Dedupe deposits on
idempotencyKey, withdrawals onwithdrawRequestId. - Always verify the signature before trusting a payload; keep
OPERATOR_SECRET_KEYserver-side. - Credit/debit the USD value (
amountInDollar/amountInUsd), not the raw on-chainamount. - Respond to
WITHDRAW_REQUESTfast — it's a synchronous gate; slow responses delay the user. - Ack webhooks immediately (
200) and process asynchronously.