Skip to main content

Credits and billing

SnapIt meters usage with credits. Each accepted invoice upload deducts the current credit cost per invoice from your workspace balance. Open Settings → Billing to see balance, buy packages, and review transactions — or use the programmatic API with your workspace API key.

What you see in Billing

Typical transaction labels:

Buying credits (web app)

1

Open Billing

Go to Settings → Billing.
2

Choose a package

Select a package (credit amount and price are managed by SnapIt Root).
3

Complete Stripe Checkout

You are redirected to Stripe, then returned to Billing. The app confirms the session immediately; the Stripe webhook also fulfills the same purchase (idempotent). After a successful pay, Stripe emails an invoice/receipt.

What you see on Stripe

Test keys (sk_test_…) never take a real charge. Production billing uses sk_live_….
If checkout succeeds but balance has not updated yet, wait a moment and refresh — or stay on Billing so the app can confirm the session_id from the redirect.

Purchase confirmation

SnapIt confirms a successful Stripe Checkout session in two ways:
  1. The Billing page confirms the returned session_id.
  2. Stripe sends the purchase webhook to SnapIt.
Both paths are idempotent. A delayed webhook, a page refresh, or a repeated confirmation does not grant the same purchase twice. If the balance is still unchanged after refreshing Billing, contact the workspace administrator with the Stripe session reference.

Buying credits (API key)

Same packages and Stripe Checkout, without logging into the dashboard:
  1. GET /api/v1/credits/packages
  2. POST /api/v1/credits/checkout with { "packageId": "…" } → open url
  3. POST /api/v1/credits/checkout/confirm with { "sessionId": "cs_…" }
Full examples: Authentication.

Company caps

The workspace has one credit pool. Settings → Billing & credits groups this month’s usage by company so a firm can re-bill. An Owner can set a monthly cap on a company. Leave it empty for no cap. The month is UTC. Running out of pooled credits stops every company. Reaching a cap stops only that company. See Workspaces and companies.

Low balance

When balance falls below the platform low-credit threshold, SnapIt can email workspace owners (rate-limited). Uploads that would overdraw return 402 with an insufficient-credits message. Credits are charged when an upload is accepted for processing, not when extraction later finishes. If the upload cannot be queued, SnapIt attempts to refund the debit.

API balance check

Response shape:
Interactive docs: API overview.
Root (platform admin) accounts do not use tenant Billing. Set the price per credit under Admin → Settings → Credits (or Admin → Packages). Package totals are always credits × that rate — admins enter a credit count, not a custom price.
For operators: Checkout public name, statementDescriptor, test vs live keys, and webhook URL POST /api/webhooks/stripe are documented in docs/stripe-credit-checkout.md.