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, Argent 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
Argent's solution leverages smart contracts to solve the double-spending problem:
- Your funds are stored in your Argent mobile account. It is a smart contract account requiring transactions to be signed by both the account owner and the co-signer
- The Argent backend serves as a co-signer alongside your wallet signature
- Before co-signing any USDC transaction, the Argent 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, Argent 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 Argent 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
