trialing, bills nothing, and converts on its own when the
trial ends.
Where the trial length comes from
During the trial
status: "trialing",trialStartandtrialEndset.- The current period is the trial:
currentPeriodEnd = trialEnd. A 14-day trial on a monthly plan gives 14 days, not 14 + 30. - No invoice, no payment request.
- You receive
subscription.trial_endingat creation (API door only — the hosted page does not emit it). It is not a D-3 reminder: do not use it as one. pauseis refused during a trial.cancelis possible (see below).
When the trial ends
1
Conversion, within the hour
An hourly cron finds expired trials and moves the subscription to
active. The paid period
is anchored on trialEnd: currentPeriodStart = trialEnd, currentPeriodEnd = trialEnd + interval, trialConverted = true. No subscription.* webhook is emitted at that point.2
First payment request, at the next 11:00 (Brazzaville)
The invoice for the first paid period is issued and a payment request is pushed to the
customer’s default Mobile Money number. You receive
invoice.finalized, then invoice.paid
and payment.completed if the customer approves.Cancelling during a trial
UsecancelImmediately: true. An “at period end” cancellation during a trial sets
cancelAt = trialEnd, but conversion runs hourly while scheduled cancellations only run at
03:00 UTC: the subscription would be converted and a payment request would go out before
the cancellation applies.
Checking the trial state
GET /v1/subscriptions/{id} returns statistics.isInTrial and statistics.trialDaysRemaining,
in addition to trialEnd.