LedgerBee Developer
  • Getting started
  • Conventions
  • Products
  • Configuration
  • API Reference
Subscriptions
    OverviewAssign a subscriptionData modelLifecycle & statusesBilling & cadenceProrationUsage commitmentsChange flowsParent & childWebhooks
Payment flowCard paymentsProducts & PricingProduct Entitlements
Billing documents
Webhooks
Customer Portal
Subscriptions

Assign a subscription

POST /v1/subscriptions assigns a plan to a customer and returns the new subscription, whose id is the stable id you keep for every later call.

TerminalCode
curl -X POST https://api.ledgerbee.com/api/v1/subscriptions \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "customerId": "0190…", "planId": "0190…", "startDate": "2026-07-01" }'
Code
{ "id": "0190abcd-…", "customerId": "0190…", "planId": "0190…", "status": "scheduled" }

Request fields

FieldRequiredEffect
customerIdyesThe customer to assign the plan to (UUID).
planIdyesThe plan to assign (UUID).
startDateyesWhen the subscription begins (ISO 8601). A future date creates it scheduled.
endDatenoA fixed end date; the subscription expires then.
billingCycleAnchornoThe date the billing cycle aligns to. Defaults to startDate.
prorationBehaviornoHow the partial period from startDate to the anchor is handled. Default none — see Proration.
trialDaysnoTrial length (0–365). The subscription is trial until it elapses.
billingDirectionnoadvance (charge at the start of the period) or arrears (at the end). Default advance. See Billing & cadence.
productOverridesnoPer-product quantity overrides against the plan template ([{ priceId, quantity }]).
automaticBillingnoWhether to auto-charge the subscription's card each cycle. Takes effect only once a card is attached; cards are attached by the buyer (see below), never on this call.
customerDepartmentId / departmentContactOverrideIdnoRoute invoice delivery to a customer department / contact.

What you can't set over the API

  • currency — a subscription's currency is contractual, resolved from the customer and plan; there is no currency field on assign. Multi-currency is not selectable at assign time.
  • Send-offset / prebill days — the lead time for issuing an invoice before the period is operator-configured, not a public field.
  • A card / payment method — a subscription's card is attached by the buyer with their consent, through a card-save link or portal checkout; it is never set on this call. A subscription is created without a card and bills by invoice until the buyer attaches one. paymentMethodId is deprecated and non-functional — any value sent is rejected.

What the first invoice does

The first charge depends on three inputs:

  • Trial — with trialDays, no charge is taken until the trial ends; the subscription sits in trial until then.
  • Billing direction — advance charges at the start of the first period; arrears charges at the end.
  • Proration — when startDate doesn't equal the billingCycleAnchor, the partial first period is handled per prorationBehavior. The default none gifts it; the other modes charge it (immediately or on the next invoice). See Proration for the worked examples.

A card pay-first subscription (its first charge taken on a card up front) sits in awaiting_payment and grants no access until that charge clears; subscriptions billed by other means activate directly. See Lifecycle & statuses.

Last modified on July 30, 2026
OverviewData model
On this page
  • Request fields
  • What you can't set over the API
  • What the first invoice does
JSON