Skip to main content
v3 keeps the same concepts as v2 — products, payments, subscriptions, customers, webhooks — but exposes them as RESTful, plural, versioned resources under /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) — signed cs_xxx hosted-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-Key header, same sk_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: tokenizedInstrumentcard.tokenizedInstrument, and cryptoMode / chainId / assetIdcrypto.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.