Skip to main content
A crypto card is a payment card that can be funded with crypto. The cardholder pays at a shop the usual way, with a Visa or Mastercard, and the money behind the payment comes from stablecoins or other tokens instead of a bank balance. There are two common designs. In a self-custodial card, the cardholder’s tokens stay in an account they control, and the card program draws on that balance when a payment is made. In a custodial card, the cardholder tops up a balance held by the program or its partner, and the card spends from that. Both are in these tables. The payment itself is approved off-chain on the normal card networks, so no blockchain shows the purchase. What does leave a trail on-chain is the money around it: the cardholder funding the card, the program recording or collecting a spend, and the program paying back its issuer afterwards. Allium indexes those events and turns them into daily metrics for every card program we track.

Terminology

Programs we cannot name individually are grouped under other_<issuer>, for example other_rain, so their volume is still counted.

Why every program looks different on-chain

There is no shared standard for how a card program operates on-chain, and the differences affect the numbers. Some programs deploy a contract for each cardholder and emit an event for every purchase. Others keep their ledger internal and only touch a chain when they settle up with their issuer, often once a day. Some report a topup when money reaches the cardholder’s account, others once the balance becomes spendable, and a few report both for the same money. Adding up whatever each program emits would produce figures that cannot be compared. A program that reports two topup steps would look twice the size of one that reports one. A program that settles in batches would show 850 purchases behind $833M of spend. A cardholder who exists on four chains would be counted as four customers. Allium reconciles this activity program by program. We study how each program works on-chain, pick the events that represent a purchase and a topup for that particular design, and publish them as curated metrics on a common definition. The result is a set of figures that hold up on their own and can be compared, summed and charted across programs and issuers. The raw per-event numbers stay available underneath for drilling in, and the curated columns are the ones to build on.

The metrics

The tables

Every table has one row per day. Amounts and counts add up across rows, so a weekly or monthly view is a date_trunc and a group by:
Account counts need more care, and have their own section below.

Which table to reach for

crypto_card_spend_volume is the source of truth for total card spend. It counts each dollar once and includes the volume that no named program claims, which is what makes it a total. Reach for it when you are sizing the market, splitting spend by issuer, or comparing crypto card spend against something external. crypto_card_programs_overview covers named programs only. It is where the purchase counts, account counts and funding metrics live, so it is the right table for any question about a particular program.
Summing crypto_card_programs_overview gives named-program volume, not total card spend. The two tables are not meant to reconcile. The gap between them is the unattributed other_* volume, plus programs that run on two issuers and so appear once per issuer in spend volume and once in total in the overview.Ether.fi shows the difference well. The program tables report its own spend events, because they carry the purchase counts and active accounts. The spend volume table reports what Rain actually settled for Ether.fi. These are two different series, built for different questions, and their totals are expected to differ.

How we keep a dollar from being counted twice

The same purchase can be visible twice: once as a program’s own spend event, and again when its issuer settles up afterwards. Spend volume resolves this by choosing one source per issuer and reading every row of that issuer from it. spend_source records the choice. Wirex, UR and Bridge are read from their spend feeds, which already cover every purchase on the issuer. Gnosis Pay, MetaMask and Ready are read from the spends of their single program. Rain and Immersve are read from settlements instead, which means the spend data that Ether.fi, Exa, Plasma One and Ethena Pay produce is deliberately set aside, since those programs run on Rain and are already inside Rain’s settlements. The choice is made per issuer rather than per program on purpose. When a program changes the address it settles from, its settlements fall into other_rain while its own spend data keeps reporting the same purchases, and a per-program basis would count that volume twice. The same reasoning makes it crosschain: Ether.fi’s purchases on Scroll were settled through Rain on Optimism and later Ethereum. Publicly available reports can fall into this trap by adding a program’s own spend events to its issuer’s settlements. The Allium datasets pick one source per issuer, so the same purchase is never counted twice.

Counting accounts

Two things make account counts different from everything else here. The first is that a distinct count cannot be summed. The same cardholder active on Monday and Tuesday is one person, so adding daily counts over a month double-counts them. Each account column therefore carries companions that can be summed, and which one you want depends on the question:
  • _new_to_month and _new_to_week count a cardholder on their first active day inside that calendar month or week. Summed over the matching period, they give that period’s distinct count, which is monthly active accounts rather than new ones. Pair them only with a date_trunc of the same width.
  • _new_to_lifetime counts a cardholder on the first active day in their entire history. Summed over any range, it gives the accounts that showed up for the first time in that range, which is the new ones.
The second is that the by-chain table counts accounts per chain. A cardholder who exists on several chains under the same address is counted once on each, so summing across chains overcounts: roughly 2.11M all-time active accounts against a true 1.98M. An Ether.fi cardholder deployed on both Scroll and Optimism is the usual case, and a RedotPay deposit wallet can appear on many EVM chains at once. Cardholders can also appear more than once across kinds of chain. If someone uses a card on an EVM chain and on Solana or Tron, and we have nothing that links the addresses, we cannot tell they are one person, so they show up as one account on each. Account counts are therefore best read as accounts we can identify, which can run slightly above the number of people.
Use the by-chain table to see how a program’s volume is spread, and the crosschain crypto_card_programs_overview for any account figure. It deduplicates cardholders who share an address across chains. The _new_to_* companions are per chain in the by-chain table and overcount in the same way.
Monthly active accounts and new accounts together, per program:
Keep the grouping on card_program. Adding accounts across programs counts a cardholder once per program they use.

Reading the columns

The columns with _event_ in their name are the raw per-event numbers underneath the headline series. They are useful for drilling into one program, and they sit together at the end of the table.
Do not add an _event_ column to a headline column. For a program that has both kinds of event the same money appears in each, so spend_event_amount_usd + settlement_event_amount_usd double-counts it. Use spend_amount_usd, and topup_amount_usd for the funding equivalent.
The exception is issuer_network_settlement_event_*, which is the issuer paying the card network. That happens downstream of the purchase and is never a spend_source, so it stands on its own. A null count means the metric is not measured for that program, so a zero is always a real zero. spend_count is where this shows up most: it is null wherever one row is not reliably one purchase, which covers programs that settle in treasury batches, programs whose senders are not fully mapped, and programs whose rows can each cover several authorizations. The matching spend_amount_usd stays exact in all of those cases.

Data caveats

A few things worth knowing before reading too much into a number. Settlements arrive in batches. A single settlement row can cover many cardholders and many purchases at once, so a settlement count is a count of settlements rather than of purchases. Coverage follows the issuers we support. A card program can run part of its business through an issuer we do not track, and that part stays invisible here. The issuers column lists every issuer we have seen for a program, which is the best guide to what a program’s row actually covers. Account counts can sit above the number of people. Cardholders are matched by their on-chain address, so someone who appears on an EVM chain and on Solana or Tron counts once on each. This shows up most in the topup series for programs built on deposit addresses, such as RedotPay, Kast and Takenos, where each cardholder is handed a separate address per chain. Read unique_topup_accounts as an upper bound on people. Small topups are dropped. Deposit addresses attract spam and address-poisoning transfers, so a topup counts only from $0.01 upwards, and transfers we cannot price are left out. Only the on-chain side is here. These tables describe what card programs put on a blockchain. Whatever a program handles internally stays off the record, so the figures here describe on-chain activity rather than the whole business. Some chains are missing from programs we otherwise cover. The gaps we know about today are MetaMask spend on Solana, RedotPay topups on Bitcoin and XRP, and Kast topups on Stellar and XRP. Those three series read below the programs’ real activity until the chains are added.

Example queries

Spend, topups and accounts for each program, one row per month.
A null count means the metric is not measured for that program. Programs with no topup or purchase coverage show nulls in those columns.

Frequently asked questions

We track more than 50 named card programs, the widest coverage we are aware of, plus the issuer volume we have not yet tied to a named program, which is reported under other_<issuer> rather than dropped. What is missing falls into two groups.Issuers we have not added yet. We index a growing list of issuers and add more over time, so at any moment there are programs whose rails we do not read — Reap and StraitsX are two examples. A program that runs only on an issuer we have not added does not reach these tables at all.Cards run by centralized exchanges, such as Crypto.com, Binance, OKX and Bybit. A purchase on these can draw on a spot balance held on the exchange’s own ledger, so nothing about it touches a blockchain and there is no on-chain trail for us to index. We expect the volume is substantial, but we have no way today to put a figure on how much of the market it represents.
Our aim is to report what cardholders actually spent, which usually puts us below headline numbers built from raw on-chain activity. Every figure in these tables traces back to on-chain activity that anyone can audit, so we also leave out figures that programs report about themselves. Three examples of where the difference comes from:RedotPay. Public reports usually quote around $6.6B of RedotPay spend, which would be more than half of all the card spend we can track on-chain. Those figures come from the company and cannot be verified on-chain, so RedotPay spend stays out of our metrics.Wirex. We count card spends only. Reports built on raw activity also count outgoing bank transfers from Wirex accounts, which are not card purchases, and count Wirex settling with Visa on Stellar. That Stellar leg is the same money as the purchases it pays for, so counting both reports it twice.Ether.fi. We take Ether.fi’s volume from the settlements Rain makes on its behalf, which are net of refunds. Most published figures come from Ether.fi’s own on-chain spend events, which still include purchases that were later refunded. We cannot tell which individual Ether.fi spend events were refunded, so we rely on settlements for the headline number. The gross spend-event figure is still available in the per-program tables as spend_event_amount_usd if you want to compare against those reports.
These cards run on Fiat24, the Swiss institution behind the ur issuer in these tables. On 14 July 2026 Fiat24 paused crypto deposits and new user registrations while it upgrades its risk and compliance controls, and it has not announced when they resume.The tables show that cleanly. The last on-chain topup for all three programs lands on 2026-07-14, new accounts drop to roughly zero from August, and spend carries on as cardholders draw down balances they had already funded. SafePal and Bitget Wallet each ran about $4M to $5M of topups a month through the first half of 2026, then nothing. Spend has been decaying since, from around $4M a month to a few hundred thousand.Our coverage of these programs is unchanged over this period, so the decline reflects real activity on the cards.

Table Columns

Table name: payments.metrics.crypto_card_spend_volumeUnique key: unique_id