{"slug":"fiat-onramp-cost","title":"Fiat on-ramp all-in cost, EUR to BTC premium over exchange mid","subtitle":"What a French retail buyer actually pays per bitcoin, in basis points over the Kraken EUR mid, once the declared fee, the network fee and the spread hidden in the provider's rate are folded into one number. 500 EUR by card, quoted every 5 minutes. Lower is better.","category":"On-ramps","metric":"All-in premium over spot","unit":"bps","status":"live","higherIsBetter":false,"filters":null,"value":410.027,"leader":{"name":"Transak","slug":"transak","value":410.027},"rankings":[{"name":"Transak","slug":"transak","ms":{"p50":410.027,"p90":420.919,"p99":434.58,"mean":409.395},"successRate":100,"sampleSize":288.1,"sampleHealth":1.0003472222222223,"dataConfidence":"healthy"},{"name":"MoonPay","slug":"moonpay","ms":{"p50":812.026,"p90":816.638,"p99":828.165,"mean":811.979},"successRate":100,"sampleSize":288.1,"sampleHealth":1.0003472222222223,"dataConfidence":"healthy"}],"sparkline":[410.114,410.363,411.745,409.442,407.786,409.124,410.503,383.02,403.027,415.598,406.352,406.004,410.038,411.961,401.871,411.017,411.289,418.705,414.262,408.944,412.16,392.677,406.378,407.016,408.038,430.934,419.652,414.071,408.201,398.429,393.25,395.803,420.744,409.092,408.991,406.922,404.105,412.075,407.477,409.68,416.263,398.225,417.243,394.507,399.195,423.024,378.419,427.293,371.691,417.94,406.705,421.496,393.283,423.832,414.377,398.709,400.501,398.895,413.358,411.263,417.667,413.79,405.393,405.559,413.879,413.333,421.528,409.11,421.668,406.915,419.904,415.28,416.418],"sampleSize":576.2,"expectedN":288,"dataConfidence":"healthy","asOf":"2026-09-21T22:29:26.801Z","freshness":{"asOf":"2026-09-21T22:29:26.801Z","ageHours":0,"stale":false},"measured":2,"headline":"Transak posts the lowest all-in premium over spot at 4.10% (24h avg) on Fiat on-ramp all-in cost, EUR to BTC premium over exchange mid.","quote":"Transak posts the lowest all-in premium over spot at 4.10% (24h avg) on Fiat on-ramp all-in cost, EUR to BTC premium over exchange mid. Source: OpenChainBench (https://openchainbench.com/benchmarks/fiat-onramp-cost).","cite":{"plain":"OpenChainBench. \"Fiat on-ramp all-in cost, EUR to BTC premium over exchange mid\". Retrieved 2026-09-21. https://openchainbench.com/benchmarks/fiat-onramp-cost","bibtex":"@misc{ocb_fiat_onramp_cost,\n  author = {OpenChainBench},\n  title  = {Fiat on-ramp all-in cost, EUR to BTC premium over exchange mid},\n  year   = {2026},\n  url    = {https://openchainbench.com/benchmarks/fiat-onramp-cost},\n  note   = {Retrieved 2026-09-21}\n}","apa":"OpenChainBench. (2026). Fiat on-ramp all-in cost, EUR to BTC premium over exchange mid. Retrieved September 21, 2026, from https://openchainbench.com/benchmarks/fiat-onramp-cost","ris":"TY  - GEN\r\nAU  - OpenChainBench\r\nTI  - Fiat on-ramp all-in cost, EUR to BTC premium over exchange mid\r\nPY  - 2026\r\nUR  - https://openchainbench.com/benchmarks/fiat-onramp-cost\r\nY2  - 2026-09-21\r\nER  - \r\n"},"pageUrl":"https://openchainbench.com/benchmarks/fiat-onramp-cost","ogImage":"https://openchainbench.com/api/og/fiat-onramp-cost","source":"https://github.com/ChainBench/OpenChainBench/tree/main/harnesses/fiat-onramp-cost","methodology":["Persona. One buyer profile: country France, fiat EUR, region eu-west. Providers whose API takes a country code receive FR (Transak, Ramp, Onramper, Meld); providers that geolocate the request are quoted from an EU vantage (MoonPay, Mercuryo). The country_source label on every sample says which.","Headline cell. BTC on Bitcoin, card, 500 EUR, premium measured against the Kraken EUR mid. Card and BTC are the one method and the one asset every provider in the cohort quotes, so every row is scored on the same cell. The other grid cells (USDC on Base or Arbitrum, ETH, SEPA, 100 EUR) are emitted with their own labels and will become drill-down tabs once the site renders non-chain dimensions.","Metric. all_in_premium_bps = (fiat_in / crypto_out minus spot) / spot times 10 000. fiat_in is the total the buyer pays including every fee the provider adds; crypto_out is the amount the provider says will be delivered. Positive means the buyer pays above the exchange mid. A value near zero means the provider's rate plus fees matched the mid.","Spot reference. Kraken public Ticker, EUR pairs, mid of best bid and ask, fetched in the same cycle as the quotes (within two seconds). A second reference from Pyth Hermes (BTC/USD, ETH/USD, USDC/USD divided by EUR/USD) is recorded on every quote under spot_ref=pyth and the gap between the two is published as spot_reference_divergence_bps. Kraken is the headline because it has no FX leg.","Declared versus hidden. declared_fee_bps = (provider fee plus network fee plus partner fee) / fiat_in times 10 000 as the provider itemizes them. hidden_spread_bps = all_in minus declared, the part of the cost that lives in the rate rather than in the fee line.","Cohorts. Direct providers (MoonPay and Transak today; Ramp and Mercuryo once keyed) are one cohort. Aggregators (Onramper, Meld, once keyed) are another: one request returns one quote per member ramp, each member sample is labelled provider=member and via=aggregator, and the aggregator's row is the minimum across its members. The two cohorts are not ranked against each other.","Cadence. Every 5 minutes with a plus or minus 10 percent jitter, 12 cells per provider per cycle, at most 2 requests in flight per provider. Ramp documents 100 requests per minute per IP; the harness stays two orders of magnitude below that. A 4xx is never retried; a 5xx or timeout is retried once.","Failures. A provider that answers without a usable quote counts as success 0 on that cell and its gauges are deleted rather than frozen. A provider whose key is not configured is skipped, not failed. Errors are counted by reason: no_quote, http_4xx, http_5xx, rate_limited, timeout, network, parse.","Sample size. The harness increments a counter per usable quote; the table reads increase() over 24h so the count is quote events, not Prometheus scrapes of a gauge. Expected 288 per cell per day.","Reproducibility. Every sample carries the SHA-256 of the raw provider response in the harness log. The adapters are written against each provider's documented schema; the parameters not yet exercised with a live key are listed in harnesses/fiat-onramp-cost/CHECKLIST.md and stay marked UNVERIFIED until they are.","Not measured yet. Ramp, Onramper and Meld have adapters in the harness and enter the table when their keys are granted (requested 2026-09-14). Coinbase Onramp is excluded pending a read of the CDP terms on benchmarking. Apple Pay and Google Pay cells need a wallet session and are not quotable server-side. ATM operators publish no quote API. Banxa and Alchemy Pay reach the bench only through the aggregators in this version."],"license":"CC-BY-4.0"}