LedgerBox

What everyone actually pays, as a CSV.

Nobody publishes what businesses really pay to take cards, so we are publishing it. One row per group, no signup, no key, no per-merchant records at any count.

Download the CSV

No group has cleared 20 submissions yet

What is in the file

Each row is one group of businesses, keyed by processor and monthly volume tier, optionally narrowed by industry or by state. There is no row for a business, and there is no request that produces one.

  • dimension

    Which axes the row aggregates over: processor_tier, processor_tier_industry, or processor_tier_state.

  • processor_key

    One of square, stripe, clover, toast, fiserv, or other. The processor name printed on a statement is never in the dataset, only this key.

  • volume_tier

    Monthly card volume bucket, normalized to a 30.44-day month before the bucket is picked.

  • industry

    The industry the submitters chose, from a fixed list. Empty on a cell that aggregates every industry.

  • state

    The US state the submitters chose. Empty on a cell that aggregates every state. Never set on the same row as an industry.

  • n

    Submissions behind the row. Never below 20, because a row below the floor is not served at all.

  • p10_bps, p25_bps, p50_bps, p75_bps, p90_bps

    Effective rate percentiles in basis points, as integers. 245 is 2.45%. Basis points rather than percentages so nothing in the file is a rounded float.

  • mean_markup_share_bps

    Average share of total fees that was processor markup, in basis points of fees. This is the negotiable part of the bill.

  • mean_other_fees_share_bps

    Average share of total fees that was monthly, statement, PCI, batch, chargeback, and equipment charges.

  • fee_taxonomy_version

    The version of the classification rules the row was computed under. Compare rows across versions only after reading the changelog.

  • updated_at

    When the row was last recomputed. Rows recompute the moment a qualifying submission lands, so this is also the freshness stamp.

The endpoint serves whatever has cleared the floor at the time you call it. The benchmark pages on this site read a committed snapshot of the same aggregates, refreshed weekly, so a page and the live file can differ by a few days. The JSON carries two things the CSV of cells cannot express: the shape of the whole index as binned counts, and each processor across every volume tier at once. Both clear the same floor as a cell. How the numbers are made

Changelog

Classification rules change as unfamiliar fee descriptions arrive, and a change moves dollars between categories. Every change bumps the version, every published row carries the version it was computed under, and every version is listed here.

Request your processor

Statements from processors we have not named still convert and still get you a result; they are grouped under the key "other" in the index. Naming yours is what earns it a key and a benchmark page of its own, so tell us who bills you.

Nothing else is sent with this, and there is nothing to unsubscribe from. If you would rather write, the address is contact@ledgerbox.io.