---
title: Billing
description: 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.
---

import { Callout } from "fumadocs-ui/components/callout";

# 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.

<Callout type="info">
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.
</Callout>

## 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](https://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:

```json
{
  "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

<NextStepsGrid items={[
  { label: "PRICING", title: "Public rate card", description: "The same numbers, with the lane table and worked examples.", href: "https://codespar.dev/pricing" },
  { label: "CONCEPT", title: "Sessions", description: "Session lifecycle, scoping, and userId-based attribution.", href: "/docs/concepts/sessions" },
  { label: "CONCEPT", title: "Tools & Meta-Tools", description: "What each meta-tool does — tool calls are not billing events.", href: "/docs/concepts/tools" },
  { label: "CONCEPT", title: "Refunds", description: "How a refund reverses the fee on the outcome it undoes.", href: "/docs/concepts/refunds" },
  { label: "COOKBOOK", title: "Marketplace Payout", description: "One charge on Get paid, one payout on Move.", href: "/docs/cookbooks/marketplace-payout" },
]} />
