Supported sources
Supported sources
Three provider adapters ship today, each mapping that provider's export into the normalized model:
| Source | Adapter | Amount unit | Dates | Natural keys |
|---|---|---|---|---|
| Stripe | StripeAdapter |
integer minor units | unix epoch | opaque ids (price_…) |
| Chargebee | ChargebeeAdapter |
integer minor units | unix epoch | ids |
| Recurly | RecurlyAdapter |
decimal major units | ISO-8601 | code |
Adding another provider is a single class implementing SourceAdapter, registered in the
AdapterRegistry — no calling code changes.
What to upload
An export is a bundle of per-resource files (JSON). You can either:
- upload one file per resource — the file name is the resource (e.g.
customers.json,prices.json,subscriptions.json); or - paste / upload a single combined JSON document whose top-level keys are the resource names:
{
"products": [ … ],
"prices": [ … ],
"coupons": [ … ],
"customers": [ … ],
"subscriptions": [ … ],
"invoices": [ … ]
}
Each record inside uses that provider's native field names — the adapter maps them. A { "data": [ … ] } envelope (the shape provider list-API dumps use) is also accepted.
Resources per source
Every adapter's expectedFiles() lists the resources it reads and what each provides; the console
renders this under Supported sources & export files. In summary:
- Stripe —
products,prices,coupons,customers,subscriptions,invoices. - Chargebee —
item_families(products),plans,coupons,customers,subscriptions,invoices. - Recurly —
plans,coupons,accounts(customers),subscriptions,invoices.
A partial export imports what it can — provide only the resources you want to migrate. (Prices are
carried inside the prices/plans records, so there is no separate prices file for Chargebee or
Recurly.)
Producing the export
Each provider offers a data export or a list API that emits these objects as JSON. Export the objects to files named for their resource (or assemble the combined JSON above) and upload. No API credentials are handled by Cbox Billing on this path — see the API-pull seam for the credentialed alternative and why it is a seam, not a shipped client.