Transaction cost analysis for stablecoin FX

Every stablecoin payout, priced against the venues you didn't use.

BPSMeter reprices your past payouts against the venues that could have filled them, shows you the gap in basis points and turns it into a routing sheet your desk can follow. You keep executing on your own accounts.

No integrationNo custodyAnonymized on your machine
shadow_tca / sample_psp / 89 days synthetic sample
cost gap vs best single venue
19.6bps$136,993 over the period
you paid
31.4 bps
best venue
11.7 bps
best split
11.4 bps
USD-COP
20.0
USD-NGN
70.0
USD-BRL
15.0
USD-MXN
10.4
USD-EUR
8.0
paidbest availablebps, by corridor
120 fills · $69.7M notional · 5 corridorssample book, not a customer
01 / the report

One number, and every ticket behind it.

For each payout we find the cheapest venue that would have accepted that exact ticket size, at its published or quoted rate, and compare it with what you actually paid. The result is free, and it's yours to keep.

  • Per-fill repricingAgainst the best single venue, the best split across venues and a composite benchmark.
  • BreakdownsBy corridor, by provider and by month, including where your volume is concentrated.
  • Signed resultsFills where you beat the model count against the gap, not only the ones where you lost.
  • Nothing silently droppedA ticket we can't price is listed with the reason, next to what you paid for it.
  • Traceable to your filesWhat each file contributed, and every row we couldn't use, with its line number and why.
  • PDF and JSONA document for your finance team and the raw data for your engineers.
sample report / cost by corridor
corridorfillspaidbest venuegap
USD-COP22142.120.0$82,307actionable
USD-MXN3424.010.4$21,124actionable
USD-BRL2629.715.0$18,596actionable
USD-EUR2012.08.0$13,603at market
USD-NGN1886.270.0$1,363actionable

bps unless noted. "actionable" means a gap of 10 bps or more, the bar we use for a corridor worth changing.

02 / the routing sheet

Then a sheet your desk can actually follow.

The findings become a standing instruction. For each corridor, a handful of ticket-size bands, each naming the venue to use (or the order to fill a split in) and the all-in cost to expect. Your desk places the trades. We never do.

sample sheet / usd-cop / ticket size, log scale
$1k$10k$100k$1M$10M
off-ramp  · 95.0 bps
stablecoin FX RFQ  · 20.0 bps
split
each mark is one of your tickets. all 22 sit in a band where a different venue is cheaper.
ticket sizesend itexpectedyou paidverdict
$1k to $50klocal off-ramp95.0 estimateno flowno flow here
$50k to $3Mstablecoin FX RFQ20.0 estimate142.1move this flow
above $3Msplit, RFQ first20.0 to 21.3no flowno flow here
back-tested on your book
31.4→12.7

Every ticket in your export is re-priced under the band it falls in, so the headline is what following the sheet would have done. Figures shown are from the sample book.

band tolerance
0.5 bps

Inside a band, the instruction is never more than 0.5 bps worse than deciding that exact ticket on its own. That's what keeps the sheet short enough to use.

your constraints
exclude or restrict

Leave out venues you won't onboard, whole channels or specific issuers, or limit the sheet to GENIUS Act permitted issuers. Excluded venues never appear.

03 / quotes

Priced on real quotes, capped at real liquidity.

Where a venue publishes prices, we pull them read-only at several ticket sizes and measure how much size it can actually take. No venue is ever offered past the size it could fill.

source
what we read
pairs
Kraken
Order book, walked for price impact, plus the published fee
EUR / USD
LI.FI
Aggregated on-chain quotes
USDC to EURC on Base, USDC to MXNe on Solana
KyberSwap
Aggregated on-chain quotes
USDC to wBRL on Base
ECB
Reference rates
fair-value benchmark

OTC desks and off-ramps quote privately, so their prices are modeled and marked as estimates everywhere they appear. Sources are public market data. They aren't partners of BPSMeter.

corridors covered todayUSD → EURUSD → MXNUSD → BRLUSD → COPUSD → NGN
04 / your data

We see six columns. Nothing else.

The analysis needs date, corridor, provider, notional, fee and cost in bps. Our anonymizer runs on your machine first, strips everything else and tells you exactly what it removed.

your machine
$ node cli.mjs anonymize --fills payouts-q3.csv --out safe.csv

kept (safe to send)
  date, corridor, provider, notional_usd, fee_usd, bps

dropped (never leaves your machine)
  Status, Payment ID

# safe.csv is the only file you'd ever send

No custody, no credentials

We never hold funds, never ask for venue logins and never place a trade.

Nothing sent anywhere

The anonymizer and the report engine read a local file and write a local file. The only outbound calls are for public market quotes.

Used once

Your file is used for your report and deleted on request, under a mutual NDA and a data processing agreement. Or share your screen for fifteen minutes and send nothing.

05 / api

The same engine, before the ticket goes out.

Design partners get pre-trade routing over an API. Send a corridor, a size and a deadline, and get back the route, the expected all-in cost and the quotes behind it. It isn't public yet.

POST /v1/routedesign partner preview
curl https://api.bpsmeter.com/v1/route \
  -H "Authorization: Bearer $BPSMETER_KEY" \
  -d '{"corridor":"USD-COP","notional":250000,"deadline":"2m"}'

# response
{
  "all_in_bps": 20.0,
  "vs_single_source_bps": 142.1,
  "route": [{ "venue": "stablecoin_fx_rfq", "pct": 100 }],
  "execute_on": "your_credentials"
}
06 / pricing

Start with the free report.

If the report doesn't find a gap worth closing, you've lost nothing. If it does, the routing sheet is how you close it.

Cost report
$0

A one-off look at 30 to 90 days of your payouts.

  • Full repricing of every fill
  • Gap by corridor, provider and month
  • The specific tickets worth moving
  • PDF and JSON, yours to keep
Request a report
Routing
Monthlypriced on volume

The sheet, kept current as venues and your flow change.

  • Routing sheet rebuilt each month
  • Priced on fresh venue quotes
  • Your constraints and exclusions applied
  • Tracking of whether your gap is closing
Talk to us
API
Partners

Pre-trade routing for each ticket, built with a few early users.

  • Route and expected cost per ticket
  • The quotes behind every answer
  • Execution stays on your accounts
  • Limited design partner spots
Ask about access
> get started

Send us 90 days of payouts. Get your number back.

Run the anonymizer, send the file, and we'll come back with your all-in cost, the gap by corridor and where the next ticket should go.