Subscription billing options
When you create a product or checkout with charge_type: "recurring", three fields work together to control when and how much the first charge is:
billing_cycle_anchor_day on its own does not change the first charge: it only takes effect when combined with proration_behavior: create_prorations or defer_to_billing_day: true.
What happens in each combination
A customer subscribes on April 10 to a monthly plan of GTQ 300, with billing_cycle_anchor_day: 15:
From the second charge on, charges happen on the 15th of each month.
If the subscription has a free trial (free_trial_interval), both proration and deferral are ignored. The trial takes precedence.
Example 1: Prorate the first charge
Charge only the days left until the anchor day. The next charge will be the full amount on the anchor day.
At checkout, the customer will see the full monthly amount minus a credit line item for the unused days. The difference is the prorated amount charged today.
Example 2: Defer the first charge until the anchor day
Don’t charge anything when the subscription is created. Tokenize the card via SetupIntent; the first full charge happens automatically on the next anchor date.
When the customer completes the checkout, you’ll receive a setup_intent.succeeded webhook (not payment_intent.succeeded) because no charge happened. The subscription.create webhook arrives at the same time with the subscription already active. The first real charge fires payment_intent.succeeded on the anchor day.
proration_behavior: create_prorations and defer_to_billing_day: true are mutually exclusive: if both are enabled, proration wins and the first charge happens today with the prorated amount.
Reading the next charge date
After creating a subscription, the response of GET /api/subscriptions/{id} includes current_period_end, which is the next automatic charge date:
- If you used
proration_behavior: create_prorations,current_period_endpoints to the next anchor date (when the first full charge happens). - If you used
defer_to_billing_day: true,current_period_endpoints to the anchor day (when the first charge happens). - With neither flag,
current_period_endiscreated_at + billing_interval.
Considerations
- Monthly intervals only. The fields
billing_cycle_anchor_day,proration_behavior, anddefer_to_billing_dayonly apply whenbilling_intervalismonth. - If the month has fewer days than
billing_cycle_anchor_day, the charge happens on the last day of the month. For example,billing_cycle_anchor_day: 31charges on Feb 28. - Changing the price of an active subscription is not possible via API (
PUT /api/products/{id}does not allow editing prices with active subscriptions).

