Pre-1.0 · one maintainer · Stripe and cards only · no SDKs (client libraries) yet · no production users yet. Docs describe v0.9.1 (29 Oct 2026) · What’s new →
Trigger billing cycle
POST
/v1/billing/run
const url = 'http://localhost:8080/v1/billing/run';const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:8080/v1/billing/run \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Idempotency-Key
string
Makes the call safe to retry. Send a unique value (a UUID works) and
the same value on every retry. For 24 hours, a repeat with the same
key, method, path and body gets the first response again, with an
Idempotent-Replayed: true header, instead of running again. The
error cases are in docs/api-surface.md. The usage routes do not take
it: each usage event carries its own idempotency_key.
Responses
Section titled “Responses”Every due subscription was billed. errors is empty.
Media typeapplication/json
object
invoices_generated
required
integer
errors
required
Array<string>
Example generated
{ "invoices_generated": 1, "errors": [ "example" ]}errors is not empty. The invoices the run made are kept. Each
entry is one of:
subscription <id>: billing failed: that subscription could not be billed.billing run failed: the run stopped before it reached every due subscription, because the list of due subscriptions could not be read or the request ran out of time (30 seconds). The subscriptions it did not reach are still due, and the next billing run bills them.billing run completed but its audit record failed: the run’s audit record could not be written.
Media typeapplication/json
object
invoices_generated
required
integer
errors
required
Array<string>
Example generated
{ "invoices_generated": 1, "errors": [ "example" ]}