Architecture of a traditional card payment
A traditional card payment involves three key parties: the merchant's bank (acquirer), the payment network (Visa/Mastercard), and the cardholder's bank (issuer).
- Authorization (seconds): When a customer taps their card, transaction details flow from merchant terminal → acquirer → payment network → issuer. The issuer verifies available funds and fraud checks, holds the funds then sends approval back through the same chain to complete the purchase.
- Clearing (1-2 days): The acquirer batches authorized transactions and sends them to the payment network, which reconciles amounts and calculates fees between banks.
- Settlement (1-3 days): Actual funds move from issuer to acquirer based on clearing data. The cardholder's account is debited, and the merchant receives payment minus processing fees.

đź’ˇ Payment authorization must happen almost instantly but the settlement might only takes place after several days.
Architecture of a self-custody crypto card
By definition, in a self-custodial setup the Issuer does not have control over the user’s funds which introduces three challenges:
- Bridging traditional and crypto worlds: Without a traditional issuing bank, how can a self-custody account interface with established payment infrastructures?
- Preventing double spending: How can the system temporarily reserve funds for authorized card transactions while maintaining self-custody?
- Enabling seamless settlements: Â How can blockchain transactions occur automatically without requiring users to manually approve each payment?
1. Bridging worlds: Kulipa as the interface
Kulipa serves as the critical interface between blockchain technology and traditional payment rails:
- Handles regulatory compliance (KYC/AML requirements)
- Performs fraud monitoring and risk assessment
- Verifies onchain USDC balances in real-time
- Communicates with payment networks using banking industry protocols
- Represents the "issuer" in the traditional card flow, despite never holding user funds
By integrating with Kulipa, Ready enables your self-custodial wallet to communicate with global payment networks without surrendering control of your assets.

2. Preventing double-spending: smart account & co-signer
Ready's solution leverages smart contracts to solve the double-spending problem:
- Your funds are stored in your Ready mobile account. It is a smart contract account requiring transactions to be signed by both the account owner and the co-signer
- The Ready backend serves as a co-signer alongside your wallet signature
- Before co-signing any USDC transaction, the Ready backend checks with Kulipa to verify if funds are reserved for pending card settlements
- If a transaction would conflict with outstanding card authorizations, the co-signer rejects it
This creates a temporary soft reserve on your USDC without ever removing self-custody:
đź’ˇNote that only USDC transactions are monitored (other assets remain completely unrestricted) and that the co-signer can be removed by the user after all outstanding card payments have been settled.
Example:
- Total account balance:
100 USDC
- Card transactions awaiting settlement:
60 USDC
‍ - Available spending balance:
100 USDC - 60 USDC = 40 USDC
‍ - If you attempt to send more than 40 USDC onchain, the co-signer validation would fail, preventing accidental double-spending and ensuring your card transactions will complete successfully.
3. Seamless settlement: session key
To eliminate the need for manual transaction approval for each card payment, Ready implements session keys, a system that allows an approved actor to execute certain transactions on behalf of the user:
- Users generate a cryptographic key with limited permissions, called a session key
- This key is granted specifically to Kulipa for settlement transactions only (USDC)
- The key allows Kulipa to initiate settlement transactions on the user's behalf
- Multiple card transactions from a same user are efficiently batched into single on-chain settlements
- Each settlement transaction uses the session key to move USDC from the user's wallet, which eliminates user friction from manual approvals

💡 The session key is given permission on USDC only – other assets remain out of the session’s scope
From USDC to fiat at no cost
Unlike other crypto cards, there is no conversion fees, top-up fees, or hidden spreads and you benefit from the best exchange rates.
Here is what happens when 1 USDC leaves your account:
- USDC is transferred from your Ready account to Kulipa at no cost
- Kulipa sends USDC to Mastercard’s Circle account where 1 USD is redeemed for 1 USDC
- The USD is then converted to the local fiat currency
- In USD, perfect 1:1 value (1 USDC = $1)
- In other currencies: Mastercard's base exchange rates with no added markup

‍