Skip to content

Subscriptions API ​

The Subscriptions API allows you to create and manage recurring payment subscriptions for both authenticated users and guest customers.

Base URL ​

https://your-instance.pubflow.com/bridge-payment

Authentication ​

Include one of the following in your requests:

  • Header: X-Session-ID: <session_id> (recommended)
  • Header: Authorization: Bearer <token>
  • Query Parameter: ?session_id=<session_id>
  • Guest: Provide guest_data in request body (no auth required)

Endpoints Overview ​

MethodEndpointDescription
POST/subscriptionsCreate subscription
GET/subscriptions/:idGet subscription
GET/subscriptionsList subscriptions
PUT/subscriptions/:idUpdate subscription
POST/subscriptions/:id/cancelCancel subscription
POST/subscriptions/:id/reactivateReactivate subscription
GET/subscriptions/guest/:emailGet guest subscriptions

Create Subscription ​

Create a new recurring subscription.

Request ​

http
POST /bridge-payment/subscriptions
Content-Type: application/json
X-Session-ID: <session_id>

Request Body ​

FieldTypeRequiredDescription
customer_idstringYesCustomer ID
product_idstringNoProduct/plan ID (optional for custom)
payment_method_idstringYesPayment method ID for billing
provider_idstringNoPayment provider (default: "stripe")
trial_daysnumberNoTrial period in days (default: 0)
Custom Pricing (when product_id is null)
subtotal_centsnumberNo*Base amount (*required for custom)
tax_centsnumberNoTax amount (default: 0)
discount_centsnumberNoDiscount amount (default: 0)
total_centsnumberNo*Final amount (*required for custom)
currencystringNo*Currency code (*required for custom)
billing_intervalstringNo*Billing frequency (*required for custom)
interval_multipliernumberNoInterval multiplier (default: 1)
Tracking Fields
conceptstringNoSubscription title/name
descriptionstringNoSubscription description
reference_codestringNoYour internal reference
categorystringNoSubscription category
tagsstringNoComma-separated tags
Guest Data
guest_dataobjectNo*Guest customer data (*required for guests)
guest_data.emailstringYesGuest email
guest_data.namestringYesGuest name

Billing Intervals ​

  • daily - Every day
  • weekly - Every week
  • monthly - Every month
  • quarterly - Every 3 months
  • yearly - Every year

Response ​

json
{
  "id": "sub_1234567890",
  "customer_id": "cust_abc123",
  "product_id": "prod_premium",
  "payment_method_id": "pm_card_123",
  "provider_id": "stripe",
  "provider_subscription_id": "sub_stripe_xyz789",
  "status": "active",
  "current_period_start": "2025-01-15T10:30:00Z",
  "current_period_end": "2025-02-15T10:30:00Z",
  "cancel_at_period_end": false,
  "trial_end": null,
  "subtotal_cents": 2500,
  "tax_cents": 250,
  "total_cents": 2750,
  "currency": "USD",
  "billing_interval": "monthly",
  "interval_multiplier": 1,
  "next_billing_date": "2025-02-15T10:30:00Z",
  "billing_status": "active",
  "concept": "Premium Monthly Plan",
  "is_guest_subscription": false,
  "created_at": "2025-01-15T10:30:00Z"
}

Examples ​

Product-Based Subscription ​

bash
curl -X POST "https://your-instance.pubflow.com/bridge-payment/subscriptions" \
  -H "Content-Type: application/json" \
  -H "X-Session-ID: session_abc123" \
  -d '{
    "customer_id": "cust_user_123",
    "product_id": "prod_premium_monthly",
    "payment_method_id": "pm_card_visa_1234",
    "provider_id": "stripe",
    "trial_days": 14,
    "concept": "Premium Monthly Plan"
  }'

Custom Subscription ​

bash
curl -X POST "https://your-instance.pubflow.com/bridge-payment/subscriptions" \
  -H "Content-Type: application/json" \
  -H "X-Session-ID: session_abc123" \
  -d '{
    "customer_id": "cust_user_123",
    "payment_method_id": "pm_card_visa_1234",
    "provider_id": "stripe",
    "subtotal_cents": 2500,
    "tax_cents": 250,
    "total_cents": 2750,
    "currency": "USD",
    "billing_interval": "monthly",
    "concept": "Custom Monthly Plan",
    "trial_days": 7
  }'

Guest Subscription ​

bash
curl -X POST "https://your-instance.pubflow.com/bridge-payment/subscriptions" \
  -H "Content-Type: application/json" \
  -d '{
    "payment_method_id": "pm_card_123",
    "provider_id": "stripe",
    "total_cents": 1000,
    "currency": "USD",
    "billing_interval": "monthly",
    "concept": "Monthly Donation",
    "guest_data": {
      "email": "[email protected]",
      "name": "John Doe"
    }
  }'

Get Subscription ​

Retrieve a specific subscription by ID.

Request ​

http
GET /bridge-payment/subscriptions/:id
X-Session-ID: <session_id>

Response ​

Returns complete subscription object.


List Subscriptions ​

List all subscriptions for authenticated user.

Request ​

http
GET /bridge-payment/subscriptions
X-Session-ID: <session_id>

Query Parameters ​

ParameterTypeDescription
statusstringFilter by status (active, canceled, etc.)
limitnumberLimit results (default: 100)
offsetnumberOffset for pagination

Response ​

json
[
  {
    "id": "sub_123",
    "status": "active",
    "total_cents": 2750,
    "billing_interval": "monthly",
    "next_billing_date": "2025-02-15T10:30:00Z",
    "concept": "Premium Plan",
    "created_at": "2025-01-15T10:30:00Z"
  }
]

Update Subscription ​

Update subscription details.

Request ​

http
PUT /bridge-payment/subscriptions/:id
Content-Type: application/json
X-Session-ID: <session_id>

Request Body ​

FieldTypeDescription
payment_method_idstringUpdate payment method
subtotal_centsnumberUpdate subtotal
tax_centsnumberUpdate tax
total_centsnumberUpdate total
conceptstringUpdate concept
metadataobjectUpdate metadata

Example ​

bash
curl -X PUT "https://your-instance.pubflow.com/bridge-payment/subscriptions/sub_123" \
  -H "Content-Type: application/json" \
  -H "X-Session-ID: session_abc123" \
  -d '{
    "payment_method_id": "pm_new_card_456"
  }'

Cancel Subscription ​

Cancel a subscription.

Request ​

http
POST /bridge-payment/subscriptions/:id/cancel
Content-Type: application/json
X-Session-ID: <session_id>

Request Body ​

FieldTypeDescription
cancel_at_period_endbooleanCancel at end of period (default: true)

Example ​

bash
# Cancel at end of billing period
curl -X POST "https://your-instance.pubflow.com/bridge-payment/subscriptions/sub_123/cancel" \
  -H "Content-Type: application/json" \
  -H "X-Session-ID: session_abc123" \
  -d '{
    "cancel_at_period_end": true
  }'

# Cancel immediately
curl -X POST "https://your-instance.pubflow.com/bridge-payment/subscriptions/sub_123/cancel" \
  -H "Content-Type: application/json" \
  -H "X-Session-ID: session_abc123" \
  -d '{
    "cancel_at_period_end": false
  }'

Reactivate Subscription ​

Reactivate a canceled subscription.

Request ​

http
POST /bridge-payment/subscriptions/:id/reactivate
X-Session-ID: <session_id>

Example ​

bash
curl -X POST "https://your-instance.pubflow.com/bridge-payment/subscriptions/sub_123/reactivate" \
  -H "X-Session-ID: session_abc123"

Get Guest Subscriptions ​

List subscriptions for a guest email.

Request ​

http
GET /bridge-payment/subscriptions/guest/:email

No authentication required.


Subscription States ​

  • active - Currently active, billing normally
  • trialing - In trial period, no charges yet
  • past_due - Payment failed, retrying
  • canceled - Subscription ended
  • paused - Temporarily suspended

Next Steps ​