Skip to content

Developers

Billing as an API.

The objects your services write to are the ones finance reads in the console. There is no second model to keep in sync.

What the API guarantees.

The contract

A versioned contract with documented migrations, so what you integrate against this quarter still answers the same way after the next release.

  • Idempotency keys on every write
  • Signed webhooks with retry and replay
  • A sandbox that mirrors production
  • Versioned, with documented migrations

Every billing event, delivered.

Webhooks

Signed, retried and ordered per subscription, so a slow consumer never sees a renewal before the upgrade that caused it.

  • Signed with HMAC and replay protected
  • Retried with backoff, every attempt visible
  • Ordered per subscription, never per endpoint

Integration
questions.

What happens if I send the same request twice?

It is answered from the first result rather than recorded again, so a timeout never becomes a second charge.

How are webhooks delivered and ordered?

Signed with HMAC, retried with backoff, and ordered per subscription rather than per endpoint. Every attempt is visible in the console.

Does the sandbox behave like production?

Exactly. It has its own scoped keys and webhook endpoints, and the same request returns the same shape against either.

What happens when the API changes?

Versions are pinned per key. A field added or a unit changed later does not reach an integration that has not opted in.