The popular advice is to “check the crypto transaction fees chart” before sending funds and choose the cheapest network. That advice answers only one question, the cost of block space. It doesn't tell you what a cardholder pays after conversion, a card program adds its charge, a foreign merchant applies currency conversion, or an ATM operator adds its own surcharge.
A useful comparison therefore needs more than a single line. It needs a normalized view that separates on-chain network fees, card program fees, FX markups, and ATM surcharges, then shows which costs apply to the transaction you're making. The difference matters because a low Bitcoin median fee can coexist with an expensive international card purchase, while a “free” card can recover its economics through conversion spreads or withdrawal charges.
Table of Contents
- Why One Fee Chart Never Tells the Whole Story
- The Metrics That Belong on a Fee Chart
- On-Chain Network Fees Across Bitcoin and Ethereum
- Card Program Fees Compared Across Card Types
- FX Markups and the Hidden Spread on Every Swipe
- ATM Withdrawal Fees Across Card Programs
- How to Stack Fees for a Real Cost Estimate
- Quick-Reference Fee Lookup Table
Why One Fee Chart Never Tells the Whole Story
Most fee charts answer the wrong question. A Bitcoin fee chart measures what users pay to secure inclusion in a block, not the complete cost of spending crypto at a hotel, restaurant, or cash machine. A card program comparison does the opposite. It may list issuance, conversion, or withdrawal terms while hiding the network cost incurred when the provider converts or settles the asset.
The phrase crypto transaction fees covers several separate layers:
- On-chain network fees: Charges paid to a blockchain for transferring or settling an asset.
- Card program fees: Charges set by the card provider, such as conversion, loading, account, or replacement fees.
- FX markups: The difference between a reference exchange rate and the rate applied when crypto or fiat is converted into the merchant's currency.
- ATM surcharges: Charges from the card program, the ATM operator, or both.
These layers don't belong on one undifferentiated axis. They have different triggers, currencies, timing, and denominators. A network fee may be expressed in BTC, ETH, or satoshis per virtual byte. A card fee may be a percentage of purchase value. An ATM charge may be fixed, making it far more significant for a small withdrawal than a large one.

The missing denominator
A fee shown without transaction value can mislead. A fixed charge and a percentage charge may look similar in a list, yet their impact changes completely between a small purchase and a large one. The same problem appears when charts combine daily network fee revenue with the cost of one user transaction.
That's why the right output isn't a hero number. It's a stack of comparable charts. One chart should show network conditions. Another should show card costs at fixed purchase values. A third should isolate FX conversion. A fourth should model cash withdrawal. This is the same discipline used in broader transaction cost analysis for subscriptions, where recurring charges, usage costs, and payment friction need to be separated before comparing providers.
Practical rule: If two fees have different triggers or denominators, keep them on separate chart layers even when the customer experiences them in one payment.
The Metrics That Belong on a Fee Chart
A useful fee chart separates four cost categories before ranking them: on-chain network fees, card program fees, FX markups, and ATM surcharges. These charges have different triggers and denominators, so one sortable table should not force them onto a shared axis. For spending analysis, normalize each category to a common purchase or withdrawal value, then retain the original fee unit for network diagnostics.
The customer-facing view should include per-transaction cost in USD and fee as a percentage of transaction value. A fixed network charge can be minor on a large transfer and expensive on a small one. A percentage-based card charge moves in the opposite direction. Showing both measures lets readers compare the actual cost of spending crypto rather than only the cost of moving it.
For blockchain data, median and average answer different questions. The median describes a typical transaction more reliably when a small group of burst transactions produces unusually high fees. The average remains useful as a risk indicator because it includes those expensive outliers. The Bitcoin history in Spark's fee-rate chart shows why both measures belong in a congestion view.
A practical metric filter
| Metric | Unit | Chart-Worthy? | Why |
|---|---|---|---|
| Median on-chain fee | USD per transaction | Yes | Represents a typical user experience more effectively than an outlier-sensitive average. |
| Average on-chain fee | USD per transaction | Yes, secondary | Shows exposure to burst congestion and unusually expensive transactions. |
| Fee rate | sat/vB or gas-based unit | Yes, network view | Explains block-space or execution demand, but needs network context. |
| Total daily network fees | Native coin or USD per day | Yes, separate chart | Measures network-wide fee revenue, not an individual payment cost. |
| Fee percentage of purchase | Percentage | Yes | Makes fixed and variable charges comparable across transaction sizes. |
| Monthly fee cap | USD per month | Yes | Changes the effective cost for frequent users. |
| Quoted FX spread | Basis points or percentage | Conditional | Useful only if compared with the realized conversion rate. |
| Realized FX cost | USD per transaction | Yes | Measures the real cost of conversion. |
| ATM fee alone | USD per withdrawal | Misleading alone | Excludes operator charges and withdrawal size. |
| ATM fee plus operator surcharge | USD per withdrawal | Yes | Reflects the cash user's actual direct charge. |
A fee that cannot be expressed in dollars for both a $100 transaction and a $1,000 transaction should not share an axis with a directly comparable metric. The chart should also separate per-withdrawal limits from daily or monthly limits. A program may show a low withdrawal fee while its allowance limits practical use.
FX requires the same separation. An advertised spread describes stated pricing; the realized spread reflects the rate, timing, and terminal conversion choice applied to the customer's transaction. Charting only the advertised figure can understate the cost.
On-Chain Network Fees Across Bitcoin and Ethereum
On-chain fees are not the cost of spending crypto. They are the cost of securing a transaction on a specific network, and a chart that places them beside card charges or FX markups without labeling the layer produces a misleading comparison. Bitcoin's average fee reached $127.97 on April 20, 2024, during the Runes protocol launch, versus $2.86 two weeks earlier, a reported 4,375% increase (Spark Bitcoin fee-rate history). The median fee rate also reached 1,805 sat/vB, up from about 100 sat/vB the previous day.
The pattern was driven by demand shocks rather than a steady trend. During the December 17, 2023 Ordinals resurgence, the average fee reached $38.43, while bear-market periods in 2018 and 2019 saw fees around $0.50 to $2.00. A yearly average can therefore hide the conditions users encounter during launches, inscriptions, or sudden bursts of activity. For a spending-cost chart, record the network fee separately from card-program fees, FX markups, and ATM surcharges.
Median first, average second
A useful dashboard leads with the median fee, then places the average and fee-rate distribution beside it. The median better represents ordinary transactions when urgent or unusually large transactions pull the average upward. The average remains useful for showing how expensive congestion can become across the network.
Recent Bitcoin data shows how quickly a quieter period can change the reading. The historical daily series lists an average fee of $0.3396 on August 26, 2026 (YCharts Bitcoin average transaction fee), compared with $0.4045 the previous day and $0.8057 a year earlier. A separate fee-history summary described 2026 as relatively stable, with typical fees around $0.82 and 2 to 17 sat/vB, versus approximately $9.39 and 18 to 29 sat/vB during January through March 2024.
| Network or rail | Asset | 12-month median fee | 12-month average fee | Peak fee observed |
|---|---|---|---|---|
| Bitcoin | BTC | Not provided in verified data | $127.97 during the Runes launch | $127.97 |
| Ethereum L1 | ETH | Not provided in verified data | Not provided in verified data | Not provided in verified data |
| Tron | USDT | Not provided in verified data | Not provided in verified data | Not provided in verified data |
| Ethereum L1 | USDC | Not provided in verified data | Not provided in verified data | Not provided in verified data |
| Solana | USDC | Not provided in verified data | Not provided in verified data | Not provided in verified data |
The table is incomplete by design. Ethereum and stablecoin rails need their own observed series, asset, transaction type, and time window. Missing values should remain visible instead of being filled with assumptions. An Ethereum token transfer and a Bitcoin transaction also require different normalization choices because Bitcoin's block-space market and Ethereum's gas market operate differently, as explained in this comparative fee-market analysis. On a side-by-side spending chart, the defensible comparison is the dollar fee for the same transaction value and scenario, with each network's measurement method shown alongside it.
Card Program Fees Compared Across Card Types
A card with no annual fee can still be expensive to use. Issuers distribute charges across monthly access, loading, crypto conversion, replacement, or account administration, so a headline fee rarely represents the full program cost. Comparisons become meaningful only after these charges are mapped to the same spending profile and assigned to the party that collects them.
Choose a fixed monthly purchase amount, then calculate the direct program charges triggered by that activity. Keep issuance, replacement, inactivity, loading, and conversion in separate fields. A one-time replacement charge should not be treated as recurring, and a waived charge should not be assumed permanent unless the published terms support that interpretation.
Program fee versus issuer fee
The crypto program may set the conversion charge, while an issuing bank or payment partner controls replacement, account, or ATM terms. The merchant can also offer its own currency conversion choice. These fees belong in separate columns because the responsible party determines which terms a customer can change or avoid.
| Card program | Card type | Annual or monthly fee | Per-transaction fee | Load or top-up fee | Foreign transaction fee | Inactive account fee | Notes |
|---|---|---|---|---|---|---|---|
| Program A | Debit | Not provided | Not provided | Not provided | Not provided | Not provided | Requires current issuer schedule. |
| Program B | Credit | Not provided | Not provided | Not provided | Not provided | Not provided | Credit terms and card fees must be separated. |
| Program C | Prepaid | Not provided | Not provided | Not provided | Not provided | Not provided | Loading and conversion may be distinct events. |
| Program D | Secured | Not provided | Not provided | Not provided | Not provided | Not provided | Security or collateral terms need separate treatment. |
The missing values are intentional. No verified card-program schedules were provided, so inserting familiar-looking fees would produce a false comparison. A usable sortable dataset needs the source schedule, region, currency, effective date, eligibility tier, and waiver conditions for every row.
The chart should also keep card program fees separate from the other three spending costs: on-chain network fees, FX markups, and ATM surcharges. A card transaction may involve none, one, or several of these categories, but combining them into one unexplained rate makes side-by-side comparison difficult. Compare the same purchase value and funding path, then add each applicable fee as its own dollar amount.
For readers building a model, Sambapay's fee optimisation tips provides context for comparing transaction charges instead of relying on one headline fee. Record the amount, trigger, collecting party, and conditions under which the charge disappears. That record makes a quoted zero fee auditable rather than automatically treating it as free spending.
FX Markups and the Hidden Spread on Every Swipe
A card can advertise low fees while charging more through its exchange rate. The cost may appear as a separate conversion fee, a rate below the reference market rate, or dynamic currency conversion at the merchant terminal. These mechanisms must remain separate in the chart because they affect different parts of the transaction and create different choices for the customer.
For a $1,000 international purchase, a 2% spread would represent $20. This is a mathematical illustration, not a verified fee for any card program. Apply the same calculation to an advertised percentage, label the result as modeled, and verify whether the spread covers the entire purchase or only the currency-conversion leg.
Quoted rate versus realized rate
The advertised rate and the rate applied at settlement answer different questions. A zero-FX-fee card may still use a conversion rate above the reference rate, while an explicit fee can be easier to audit because it appears as a separate line item. Dynamic currency conversion adds a terminal-level choice between the local currency and the card's billing currency, so the selected path belongs in the comparison data.
| Card program | Advertised FX markup | Effective cost on $1,000 | Conversion path | DCC risk | Notes |
|---|---|---|---|---|---|
| Program A | Not provided | Not calculable | Crypto to fiat to merchant currency | Must verify | Requires rate and region. |
| Program B | Not provided | Not calculable | Fiat conversion at card network | Must verify | Check statement rate. |
| Program C | Not provided | Not calculable | Stablecoin-funded card conversion | Must verify | On-chain conversion may occur before authorization. |
| Program D | Not provided | Not calculable | Merchant-selected conversion | Must verify | Terminal choice can alter the applied rate. |
The table should show both the quoted markup and the realized rate when the provider's schedule or statement data makes that comparison possible. Otherwise, mark the effective cost as not calculable rather than treating a missing value as zero.
Stablecoin-funded cards need their own conversion-path field. The asset may become fiat before authorization, either through an on-chain transaction or inside the provider's system. That timing determines whether the analyst should examine a network fee, an internal spread, or both. Without the field, the chart can wrongly assign the conversion cost to the merchant or card network. This category should remain separate from on-chain fees, card program charges, and ATM surcharges, then be added only when the tested spending path triggers it.
ATM Withdrawal Fees Across Card Programs
ATM withdrawals combine three separate charges: the card program's withdrawal fee, the ATM operator's surcharge, and any currency conversion cost. Putting only the program fee on a chart makes the cash cost look lower than the total charged.
Fixed fees also need a withdrawal-value column. A $2.50 card fee plus a $3.00 operator fee on a $100 withdrawal equals a $5.50 direct cost, or 5.5% of the withdrawal value. This calculation uses the stated example, not a verified schedule for a named program. Its analytical use is clear: the same dollar charges produce a different effective percentage at another withdrawal size.
ATM comparison fields
| Card program | ATM fee, own network | ATM fee, out-of-network | Monthly ATM limit | Reimbursement policy | Effective cost on $100 withdrawal | DCC risk | Notes |
|---|---|---|---|---|---|---|---|
| Program A | Not provided | Not provided | Not provided | Not provided | Not calculable | Must verify | Separate provider and operator charges. |
| Program B | Not provided | Not provided | Not provided | Not provided | Not calculable | Must verify | Check whether reimbursement has conditions. |
| Program C | Not provided | Not provided | Not provided | Not provided | Not calculable | Must verify | Review foreign-currency withdrawal terms. |
| Program D | Not provided | Not provided | Not provided | Not provided | Not calculable | Must verify | Confirm monthly limit and reset date. |
The monthly limit can change the ranking for actual cash use. A low per-transaction fee may suit occasional withdrawals, while operator-fee reimbursement may matter more to frequent users, provided the customer meets the refund conditions. Record the threshold, eligible ATM network, claim process, and reset rule instead of treating “reimbursement” as an unconditional reduction.
ATM choice can also change the conversion rate. Selecting the local currency generally leaves conversion to the card network or program. Accepting the ATM's currency conversion can introduce a separate rate, so record that choice as DCC risk, not as a guaranteed fee. The cost depends on the terminal and the customer's selection.
For a sortable reference, use the NomadCrypto ATM fee dataset to structure the ATM fields, then verify current terms by region and program. Keep ATM surcharges separate from on-chain network fees, card program charges, and FX markups until the tested withdrawal path shows that they apply. A missing fee remains not calculable, rather than zero.
How to Stack Fees for a Real Cost Estimate
A fee chart should help answer one question: What leaves the customer's pocket for this purchase? That requires applying charges in the order they occur, rather than selecting the smallest number from separate columns.
Consider a modeled $500 international purchase. The stated assumptions are a $0.15 Ethereum mainnet fee, a 1% program fee, a 1.5% FX markup, and a 0.5% card-issuer spread. The network fee is applied before conversion, the program fee is calculated on the purchase amount, and the FX markup is embedded in the converted amount. Under those assumptions, the combined modeled cost is approximately $13.15, producing a total of approximately $513.15. The result is an illustration built from the supplied assumptions, not a published card quote.

The three-step stacking formula
- Start with the purchase value. Add any on-chain settlement or off-ramp network cost that occurs before the card balance becomes spendable.
- Apply program and conversion charges. Calculate percentage fees on the correct base, then add the realized FX spread rather than relying only on the advertised rate.
- Add cash-only charges when relevant. For ATM use, combine the card fee, operator surcharge, conversion cost, and any limit-related consequence.
Cashback or staking rewards belong in a separate offset column. They can reduce the net cost, but only if the user qualifies, receives the reward under the applicable terms, and can use it. A reward shouldn't be allowed to conceal a high conversion fee in the gross-cost view.
The same logic applies when reviewing card fee data and methodology. Keep gross fees, rewards, and net cost visible together, rather than presenting only the reward-adjusted result. That prevents a high-cashback card from appearing cheaper when its underlying conversion or ATM charges are materially higher.
Analyst's rule: Choose a card from the total transaction stack, not from the lowest isolated column.
Quick-Reference Fee Lookup Table
A useful lookup table must keep unlike costs in separate fields. On-chain network fees, card program fees, FX markups, and ATM surcharges describe different steps in a spending route, so combining them into one “transaction fee” column hides the actual cost. The table below is a sortable model for comparing program terms without inventing missing values.
| Card program | Program fee | FX markup | ATM fee | ATM monthly limit | Best for |
|---|---|---|---|---|---|
| Program A | Not provided | Not provided | Not provided | Not provided | Compare after regional terms are verified. |
| Program B | Not provided | Not provided | Not provided | Not provided | Review credit-specific charges separately. |
| Program C | Not provided | Not provided | Not provided | Not provided | Check prepaid loading and conversion terms. |
| Program D | Not provided | Not provided | Not provided | Not provided | Evaluate secured-card costs and conditions. |
| Program E | Not provided | Not provided | Not provided | Not provided | Filter for low recurring charges. |
| Program F | Not provided | Not provided | Not provided | Not provided | Check international spending terms. |
| Program G | Not provided | Not provided | Not provided | Not provided | Compare cash withdrawal economics. |
| Program H | Not provided | Not provided | Not provided | Not provided | Examine reward offsets against gross fees. |
| Program I | Not provided | Not provided | Not provided | Not provided | Confirm supported regions and currencies. |
| Program J | Not provided | Not provided | Not provided | Not provided | Verify current tier and promotional terms. |
“Not provided” is preferable to false precision. Fee schedules can vary by tier, geography, promotion, partner arrangement, card type, settlement currency, and waiver conditions. Each row should therefore record the source document, verification date, applicable region, and whether the charge is fixed, percentage-based, conditional, or reimbursed.
The NomadCards master card-fee table provides a machine-readable starting point for normalized comparisons across conversion, FX, ATM, top-up, and recurring charges. Its fields can place products side by side, but current issuer terms still require verification before a card is selected. That check matters most for regional availability, reimbursement rules, loading costs, and foreign-currency settlement.
The chart should also keep network data separate from card data. Bitcoin's total daily fees describe aggregate demand for block space, while an individual transaction fee describes one settlement event. Neither number directly represents the cost of swiping a crypto-linked card, which may add program, conversion, FX, or ATM charges.
The CryptoTimes fee analysis supports the broader observation that Bitcoin fee conditions weakened as demand slowed. It should not be used here to substantiate later-dated figures or the additional percentage changes listed in the original table, because that April publication cannot independently verify claims dated after publication. A sound chart pairs fee values with their measurement date and scope, rather than placing incompatible observations in one ranking.
NomadCards offers a comparison view for crypto-linked debit and credit cards, with normalized fields covering conversion, FX, ATM, top-up, and recurring fees. Visit NomadCards to compare the fee layers relevant to a spending pattern before treating a single crypto transaction fees chart as the full cost.