Billing
The CodeSpar rate card — free to build, 10 bps to move money under mandate, 1% to get paid, never more than R$2.00 per transaction, R$4.90 per governed account — and how the dashboard shows what you owe.
Billing
One public rate card, the same for every account, in BRL:
Build, measure and think: free. Move money under mandate: 10 bps. Get paid: 1%. Never more than R$2.00 per transaction. Rails always pass through at the partner's price. And one line that is not per transaction: Account governance, R$4.90 per governed account active in the month.
The direction the money moves picks the line. Money leaving your organization under a signed mandate pays the Move lane. Money arriving in your account pays the Get paid lane. A governed account that exists and is active in the month pays Account governance. Anything that does not settle money and is not a governed account pays nothing. The lane is a fact of the ledger, not a choice you or we make, so the same outcome never pays two lines.
The rate card
| Lane | What it covers | Free | Self-serve | Committed volume |
|---|---|---|---|---|
| Build | Sandbox, catalog, SDK, CLI, Meter | Unlimited, always | R$0 | R$0 |
| Move | Pay, Embed, Cards at GA: value executed under your mandate | First R$1,000 settled per month, per organization | 10 bps, floor R$0.05, cap R$2.00 per transaction | 8 bps, cap R$1.50 from R$5M/month; 6 bps, cap R$1.00 from R$50M/month |
| Get paid | Gate, Collect, Shop seller side: value that settles in your account | First R$1,000 settled per month, per organization | 1% of settled, no floor, cap R$2.00 per transaction | 0.7% from R$1M/month; 0.5% from R$10M/month |
| Account governance | A governed account exists: mandate, identity, guardrails and receipts kept for that account | Accounts with no outcome in the month: R$0 | R$4.90 per governed account active in the month | R$4.90 per governed account active in the month |
| Operate | Fiscal documents, identity checks, shipping labels, messages | Included while in preview | Included while in preview | Included while in preview |
Rules that apply to every line:
- Rails pass through at the partner's price, on their own line, never marked up. Pix, boleto, card networks and USDC settlement cost what the partner charges.
- Cross-border FX is a published line, not a spread: 0.5% of the converted amount self-serve, 0.3% with committed volume, on top of the partner's exchange rate at cost.
- Governance features are never a per-transaction line item. Mandate, receipt, identity (KYA), guardrails, audit and routing come inside every paid line; the Account governance line is per governed account, not per feature.
- No rev-share, no platform fee, no minimum. The rate card is public and identical for every customer; if it goes down, every contract goes down with it.
- A full refund within 7 days reverses the fee on the original outcome, once per payer-payee pair every 30 days.
- Committed-volume steps trigger on trailing three-month volume with a true-up, never on a minimum with a shortfall penalty.
Status, plainly: Gate and Embed have this pricing in effect for new contracts today. Pay, Collect, Shop, Wallet, Cards and Meter carry the same price as a commitment for general availability, locked for 24 months for anyone who signs before GA, and cost R$0 until then. That is a price promise, not an availability promise. On the billing side, only the Move lane is computed by the backend today; the Get paid lane and the Account governance line are published prices that are not yet charged.
What counts
Only what settles, plus the account that exists. A Move transaction is one mandate that actually executed a transfer. A Get paid transaction is one payment that actually landed. One settled invoice is one transaction. A governed account counts once per month in which it had any outcome.
| Counts | Does NOT count |
|---|---|
| Payout, supplier payment or purchase executed under mandate (Move) | Attempt, retry, decline, quote, verification, deliberation |
| Paywall settlement, paid link, storefront sale (Get paid) | Session creation, tool listing, catalog browsing |
| A governed account with at least one outcome in the month (Account governance) | A governed account with no outcome in the month |
| Sandbox runs, Meter usage tracking, mandate creation, simulations | |
| Wallet creation, balances, internal transfers inside the same organization | |
| Card issuance, binding and authorizer controls |
Tool calls are logged for audit, debugging and rate limiting. They are never billing events.
Worked examples
Past the free tier, the arithmetic is the one you can do in your head:
| What happened | Lane | Rule | CodeSpar fee |
|---|---|---|---|
| Move R$0.30 under mandate | Move | floor | R$0.05 |
| Move R$100 under mandate | Move | 10 bps | R$0.10 |
| Move R$5,000 under mandate | Move | cap | R$2.00 |
| Get paid R$100 | Get paid | 1% | R$1.00 |
| Get paid R$0.50 | Get paid | 1%, no floor | R$0.005 |
| R$900 settled in the whole month | either | free tier | R$0 |
| 12 governed accounts active in the month | Account governance | R$4.90 each | R$58.80 |
The rail's own fee, if any, shows up as a separate line at the partner's price. Fractions of a centavo (the R$0.50 paywall call) accumulate on the invoice and round once, at invoice time.
Tracking what you owe
Via the dashboard
codespar.dev/dashboard/billing shows the Pay fee card: the Move-lane fee computed for the current period from money moved under mandate, the amount moved, the number of payers and the rate tier applied. Until invoicing goes live the card carries a "Not yet charged" badge, and a workspace that has not had a period computed yet sees "Not computed yet" instead of a number. The rate card block below it repeats the published numbers, including the Account governance line, which is not yet charged either. There is no plan grid and no upgrade button: there is nothing to upgrade to.
The shapes the dashboard renders
Every /v1/billing* route lives in the API's service-auth subtree, alongside api-keys, team and project members. A csk_ Bearer key is not read there and answers 401 {"error":"unauthorized"}. These are not customer-callable endpoints; the dashboard proxies them through its own server routes. The fee read below lives under /v1/fees/ instead, behind the fees:read scope; the dashboard reaches it with its service credential. The shapes are documented because they are what the dashboard renders, not as a request you have to make.
GET /v1/fees/movimentar — the latest computed Move-lane period for the organization, or null when nothing has computed one yet:
{
"period": "2026-09",
"consumerCount": 3,
"movedMinor": 1250000,
"feeMinor": 1150,
"rateTier": "self_serve",
"computedAt": "2026-09-09T12:00:00Z"
}Amounts are BRL minor units: movedMinor: 1250000 is R$12,500.00 moved and feeMinor: 1150 is R$11.50 owed.
POST /v1/billing/portal returns a Stripe Customer Portal URL for payment methods and invoice history. The dashboard exposes it only to organizations that already have a live paid agreement.
FAQs
Do tool calls count toward billing? No. Tool calls, sandbox runs and Meter usage are free without limit. Only a settled money movement bills, plus the governed account that exists.
What if a transaction fails? Attempts, retries and declines carry no counter. R$0.
What is a governed account, and when does it pay? An account CodeSpar keeps a mandate, identity, guardrails and receipts for: a payer under Embed, a counterparty your agents pay, a customer your paywall collects from. It pays R$4.90 in a month it had at least one outcome, and R$0 in a month it had none.
What about invoicing, shipping, messaging? The Operate lane, for outcomes that do not move money, is included while in preview. Its price is not published yet, and we will not print a number before it is.
What if the payment is refunded? A full refund within 7 days reverses the fee on that outcome, once per payer-payee pair every 30 days.
Is there a minimum? No minimum, no platform fee, no rev-share. The first R$1,000 settled per month, per lane, per organization, is free.
Next steps
Connect Links
Hosted OAuth flow that lets your end users connect their own Stripe, Mercado Pago, Shopify, and other provider accounts, without you building or maintaining a connection UI.
Refunds
How money goes back: outbound refunds through codespar_pay, provider-level refund tools such as Pix devolution, and the commerce.payment.refunded trigger event that tells your backend it happened.