SUQODocs
User GuideAPI ReferenceSDKs
Subscriptions

Create a subscription

Create a subscription for a client against one of your billing periods. `client.phone` identifies the buyer and must be a Nepali mobile number (10 digits starting with 96, 97 or 98); a +977 country code is accepted and stripped. The subscription starts in `pending_checkout`; send the returned `checkout_url` to the client to collect payment. `client.email` and `client.phone` are read back on the subscription as `client.email` and `client.phone`, but the `client.billing` block loses its `billing_` prefix on the way back out. `return_url` is required despite reading as optional on the model behind this body — a missing, null or blank value is rejected the same way. A client may hold only one live recurring subscription per product, so a second one on a different billing period of the same product is refused. This endpoint takes no idempotency key: a retried request that timed out opens a second subscription and a second checkout, so reconcile by `subscription_id` before retrying.

POST
/subscriptions/
AuthorizationBearer <token>

API key issued to the partner, sent with the Bearer prefix — for example: Authorization: Bearer su_key_9f2c4d1ab3….

Keys minted on the live instance are prefixed su_key_ and keys minted on sandbox su_test_key_. The two instances keep separate key tables and separate hosts, so a sandbox key sent to the live host — or the reverse — answers Invalid API key. rather than falling back to the other environment.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/subscriptions/" \  -H "Content-Type: application/json" \  -d '{    "pbp_id": "string",    "return_url": "http://example.com",    "client": {      "phone": "string",      "full_name": "string",      "email": "[email protected]"    }  }'
{  "created_at": "2026-07-03T10:15:00Z",  "pbp_id": "pbp_3n9k2x",  "subscription_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",  "status": "pending_checkout",  "checkout_url": "https://app.suqo.ai/pay/3fa85f64-5717-4562-b3fc-2c963f66afa6",  "next_billing_cycle": "2026-08-03T00:00:00Z"}