Working with an AI agent? Download the full documentation as a Markdown file to use as context.
Download full .mdEvery channel returned by GET /api/v1/channels carries a subscription object
describing its current billing state. This page explains what those states mean
and how they change over a channel's lifecycle. For the field types, see the
API Reference.
A channel can send and receive messages only while its subscription is
active. When it is not, send/receive calls are rejected until a license is
(re)attached.
"subscription": {
"status": "active",
"source": "paddle",
"tier": "pro",
"expires_at": "2025-02-15T10:30:00",
"auto_renew": true
}
status — active, expired, canceled, or none (no license bound;
the channel cannot send/receive).source — where the entitlement came from: trial (auto-granted on
signup), paddle (paid subscription), or enterprise (custom subscription
provisioned by Fiwano staff, e.g. a partner deal or invoice billing). null
when status is none.tier — starter or pro. pro is required for media messages and
WhatsApp template CRUD/send. null when status is none.expires_at — ISO-8601 UTC timestamp when the current period ends. If
auto_renew is true, this is the next renewal date; otherwise it is the
cutoff after which the channel stops working.auto_renew — true only for an active Paddle subscription that will renew
at expires_at. Always false for trial and Enterprise.{status: "active", source: "paddle", auto_renew: true, expires_at: <next renewal>}.{status: "active", source: "paddle", auto_renew: true, expires_at: <recently in the past>}.
While a renewal payment is retried, status stays active and expires_at may
sit slightly in the past — service continues during this short grace window.
It then resolves to renewed (future expires_at) or, if payment keeps failing,
lapses.{status: "active", source: "paddle", auto_renew: false, expires_at: <cutoff>}.
The customer cancelled in Paddle; service continues until expires_at, then the
channel becomes orphaned.{status: "active", source: "trial", tier: "pro", auto_renew: false, expires_at: <signup + 7 days>}.{status: "active", source: "enterprise", auto_renew: false, expires_at: <agreed term end>}.
Renewals are arranged with Fiwano staff before expires_at.{status: "none", source: null, tier: null, expires_at: null, auto_renew: false}.
Send/receive will fail; attach a license to restore service.Tip. Treat
statusas the single source of truth for whether a channel can operate. Do not infer it yourself fromexpires_at— during the Paddle grace window anactivechannel can legitimately have anexpires_atin the past.
Fiwano API Documentation