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:- The Billing page confirms the returned
session_id. - Stripe sends the purchase webhook to SnapIt.
Buying credits (API key)
Same packages and Stripe Checkout, without logging into the dashboard:GET /api/v1/credits/packagesPOST /api/v1/credits/checkoutwith{ "packageId": "…" }→ openurlPOST /api/v1/credits/checkout/confirmwith{ "sessionId": "cs_…" }
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
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.
