Subscriptions API

await accend.subscriptions.create({
  customerId: "cus_123",
  productId: "prod_123",
  paymentMethod: "pix_manual"
});

Endpoints

  • POST /v1/subscriptions
  • GET /v1/subscriptions
  • GET /v1/subscriptions/{subscriptionId}
  • POST /v1/subscriptions/{subscriptionId}/cancel
  • POST /v1/subscriptions/{subscriptionId}/pause
  • POST /v1/subscriptions/{subscriptionId}/resume

POST /v1/subscriptions

Scopes: write
Idempotency-Key: required
{
  "customerId": "cus_abc123",
  "productId": "prod_abc123",
  "paymentMethod": "pix_manual"
}
  • customerId string required
  • productId string required
  • paymentMethod enum optional: pix_manual | pix_auto | usdc_invoice | usdc_pull
Response 201
{
  "data": {
    "id": "sub_abc123",
    "status": "active",
    "customerId": "cus_abc123",
    "productId": "prod_abc123",
    "priceId": "price_abc123",
    "paymentMethod": "pix_manual",
    "currentPeriodStart": "2025-01-15T00:00:00Z",
    "currentPeriodEnd": "2025-02-15T00:00:00Z",
    "createdAt": "2025-01-15T10:00:00Z"
  },
  "error": null,
  "success": true
}

GET /v1/subscriptions/

Scopes: read Response 200: full subscription object. Status values:
  • trialing: awaiting first payment
  • active: active and in good standing
  • past_due: payment failed
  • paused: paused by you
  • canceled: canceled
Error:
  • 422 rail_not_available this payment method is not available for your account

GET /v1/subscriptions

Scopes: read Query params:
  • customerId string optional
  • limit int (default 100, max 500)
  • before string (cursor)
Response 200
{
  "data": {
    "items": [
      {
        "id": "sub_abc123",
        "status": "active",
        "customerId": "cus_abc123",
        "productId": "prod_abc123",
        "currentPeriodEnd": "2025-02-15T00:00:00Z",
        "createdAt": "2025-01-15T10:00:00Z"
      }
    ],
    "hasMore": false,
    "nextCursor": null
  },
  "error": null,
  "success": true
}

POST /v1/subscriptions//cancel

Scopes: write
Idempotency-Key: required
Response 200
{
  "data": {
    "id": "sub_abc123",
    "status": "canceled",
    "canceledAt": "2025-01-15T10:30:00Z"
  },
  "error": null,
  "success": true
}

POST /v1/subscriptions//pause

Response 200
{
  "data": { "id": "sub_abc123", "status": "paused" },
  "error": null,
  "success": true
}

POST /v1/subscriptions//resume

Response 200
{
  "data": { "id": "sub_abc123", "status": "active" },
  "error": null,
  "success": true
}