/v3/*.
Existing v2 integrations keep working. The legacy
/api/* URLs are preserved
(internally routed to the compatibility layer), so you can migrate endpoint by
endpoint rather than all at once.Endpoint mapping
What’s new (no v2 equivalent)
- Setup Intents (
POST /v3/setup-intents) — save a customer payment method for later off-session charges. - Saved payment methods (
GET/DELETE /v3/customers/:id/payment-methods). - Checkout Sessions (
POST /v3/checkout/sessions) — signedcs_xxxhosted-checkout tokens. - Balance (
GET /v3/balance) — unified balance across card + crypto rails. - Webhook Endpoints (
POST /v3/webhook-endpoints) — manage outbound webhook destinations and rotate secrets via the API. - Analytics (
GET /v3/analytics,GET /v3/products/:id/analytics,GET /v3/customers/:id/analytics).
What stays the same
- Authentication — same
X-Suby-Api-Keyheader, samesk_live_…/sk_sandbox_…keys. - Response envelope —
{ "success": true, "data": … }on success,{ "success": false, "error": { code, message } }on failure. - Monetary values — prices in cents as strings (
"999"= 9.99), fees in basis points, token amounts in smallest unit. - Webhook signing — HMAC-SHA256,
X-Webhook-Signature: v1=<hex>, 5-minute replay window.
Migration checklist
1
Swap base paths
Point your client at
/v3/* and switch to the plural, RESTful resource names above.2
Group your method-specific fields
On
POST /v3/payments and POST /v3/subscriptions, card and crypto options live in a card / crypto object rather than flat on the body: tokenizedInstrument → card.tokenizedInstrument, and cryptoMode / chainId / assetId → crypto.mode / crypto.chainId / crypto.assetId. See the changelog for the full mapping.3
Adjust the cancel verb
Subscription cancel is now
POST /v3/subscriptions/:id/cancel (not DELETE). Refunds are not yet exposed on the public v3 API — issue them from the dashboard for now.4
Re-register webhook endpoints
Create your webhook destinations via
POST /v3/webhook-endpoints and store the returned whsec_… secret.5
Test in sandbox
Run the full flow with a
sk_sandbox_… key before flipping production traffic.
