Join our waitlist
Enter your work email below and we'll reach out directly
By subscribing you agree to with our Privacy Policy and provide consent to receive updates from our company.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
kulipa logo image
kulipa logo image
Features
platform overview kulipa icon
Platform overview
All our features in one place
debit cards kulipa
Debit Card
Enable a best-in-class experience for your users
prepaid card kulipa
Prepaid card
The fastest way to launch a card program
digital wallets kulipa
Apple Pay® and Google Pay™
Turn your users mobile-first and grow daily usage
dashboard kulipa
Dashboard
Supercharge your support team and track performance
Developers
api kulipa icon
API
A high-level view of how it works
documentation kulipa icon
Documentation
Dive in our API and infrastructure
How it worksCase StudiesAbout usCareersBlog
Get in touch
Blog
Payments 101

How does Kulipa's crypto debit card work for self-custodial wallets?

By
Victor Guiraud
October 18, 2024
•
X min
Share this post
Subscribe to newsletter
Subscribe to receive the latest blog posts to your inbox every week.
By subscribing you agree to with our Privacy Policy.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Share this post

Including an answer to the big question: How to prevent double spending?

‍

In our previous article, we explained the criteria for determining if your wallet would be best served by a debit card or a prepaid card. As mentioned, the smooth user experience offered by crypto debit cards comes with some additional technical issues; below, we detail how Kulipa handles them based on account characteristics, security keys, risk management, and more.

‍

When a wallet comes to Kulipa to ask about deploying our crypto debit cards to their users, the conversation quickly turns to some relatively technical points. On our side, we want to know more about the wallet’s current goals, as issuing a debit card is a resource intensive endeavor. On their side, they need to know exactly how Kulipa manages the various flows of authorization, clearing, fund transfer and more. 

‍

Those are good questions, and we’re happy to go over the details for each particular situation. Here, though, we’d like to explain how the flow of funds works for debit cards, depending on the various characteristics a wallet can have.

First up: The double spending issue 

Debit cards for self-custodial wallets are quite new. Instead of the classical prepaid card model, a debit card transmits funds directly from the user’s self-custodial wallet to the merchant’s bank. This means we at Kulipa have around 5-6 seconds to:

‍

  1. Receive the authorization request that begins when the card is being used,
  2. Check if there are enough funds in the user’s wallet,
  3. Say yes or no to Visa/Mastercard.

‍

After that, there’s another thing we have to do before the payment is cleared and the funds are settled:

  1. Somehow ensure the user doesn’t move the funds before we send them to the merchant.

‍

Step 4 is known as the double spending issue. As we saw in our previous article on payment networks, clearing and settlement happen quite some time after the payment authorization is granted (ranging from 24-72 hours, depending on what day of the week it is).

‍

Thus the transaction can be approved quickly, but the funds only leave the user’s account when it’s time for Kulipa to settle the payment with the card network. Double spending would occur if, in the meantime, the user had placed another transaction before the settlement that depleted the account to the point where there are no longer enough funds available for the transaction.

‍

We clearly need to prevent that, and how it happens depends on the wallet infrastructure. What does that mean? Wallets can generally be characterized as: 

‍

  • Account abstraction (AA), often referred to as smart wallets. These are managed by smart contracts and are therefore programmable. This means that we can have some special rights over the user’s funds, including freezing them. Argent, Avocado, and Trust Wallet SWIFT are examples of this kind of wallet.
  • Externally-owned accounts (EOA), including MPC wallets, which are a bit more tricky. As their infrastructure is hard-coded into protocols, they have limited functionalities and need different safeguards to prevent double spending. Some examples here are Metamask, Trust classic, and Coinbase wallet.

‍

Let’s see how we implement debit cards into each of these, starting with Account Abstraction. 

Account Abstraction Wallet: The Flow of Funds

Let’s use the example of Argent, one of the wallets using Kulipa’s crypto debit cards. It’s a very instructive one, showing how we can use the specific characteristics of AA wallets to fit within the existing debit card system.

‍

TLDR for the model

The full flow of funds, from authorization to clearing and settlement, looks like this:

Argent's flow of funds

‍

Authorization

  1. The user enters their key via Argent’s app to execute a transaction with a merchant (i.e., they try to pay for something).
  2. Our issuer processor receives the transaction request from the card network and sends it to Kulipa.
  3. Kulipa checks the user’s account balance with Argent. If sufficient funds are available, we send a transaction approval to both Argent and the card network.
  4. Argent places a hold on the funds using their cosigner key (more details on that below); The card network sends an approval message to the merchant’s point of sale machine.
  5. Kulipa updates the user’s account balance on the backend (a process that also works when funds are added to the wallet using an on-chain transaction).

‍

Clearing & settlement

  1. At the end of each day, the card network sends the clearing file to Kulipa.
  2. Kulipa uses its session key to send USDC from the user’s wallet to an offramp account that is owned by Mastercard, Visa, or another EMI, depending on the region.
  3. Funds are offramped into a settlement account before being sent along traditional payment rails to the merchant’s bank account.

‍

Argent’s specificities

Argent uses a cosigner model, meaning that both the user and Argent need to validate a transaction with their respective keys in order for it to be validated on-chain. Cosigning is important because it avoids double spending using an enforced hold of the funds being used for a debit card transaction. This then enables the funds to only truly move at the end of the day, when Kulipa has received the clearing file from the card network.

‍

‍

While the user has a key generated when they create their wallet, and Argent has its own key that lets them cosign transactions, Kulipa needs to become part of this flow as well. This happens thanks to session keys, which Argent has been developing for quite some time.

‍

Session keys allow Kulipa to hold its own key, generated when the user orders their debit card. This key gives Kulipa very specific rights to the user’s funds held in Argent: Kulipa can only touch USDC, and the funds are offramped.

Externally-owned accounts

Issuing a debit card for EOA wallets works a bit differently since these wallets can’t enforce smart policies on users’ funds like those seen with account abstraction wallets. As such, Kulipa can’t block a third-party transaction after authorizing a payment, nor can we wait for the clearing file to arrive before collecting the funds.

‍

Therefore, in order to solve the double spending problem, there’s an additional account added to the flow of funds: an escrow account, where the funds are placed directly after authorization takes place.

Authorization

‍

  1. The user uses their card to execute a transaction with a merchant (i.e., they try to pay for something).
  2. The issuer processor sends Kulipa a request for authorization.
  3. Kulipa attempts to move the funds to the escrow account. 
    1. If the transaction is validated by the blockchain, that means there were enough funds and we can say “Yes” to the card network.
    2. If the transaction fails, there aren't enough funds and we say “No”.
  4. Kulipa updates the user’s account balance on the backend (a process that also works when funds are added to the wallet using an on-chain transaction).

‍

Clearing and settlement

‍

  1. At the end of each day, the card network sends the clearing file to Kulipa.
  2. Kulipa sends the funds from the escrow account to an offramp account that is owned by Mastercard, Visa, or another EMI, depending on the region.
  3. Funds are offramped into a settlement account before being sent along traditional payment rails to the merchant’s bank account.

‍

And that’s it for this product deep dive! Stay tuned for next week’s article, and in the meantime, feel free to follow us on X or stop by our brand new website for more information. 

‍

What we do

Similar articles

Payments 101
X min

What is the interchange fee? And how can it improve revenue for crypto wallets?

In previous articles, we’ve detailed how payments work, noting that the incentive for much of the work done by various players is being able to receive a portion of the interchange fees. Today, we’ll go into more detail on the interchange fee, including who shares it, how it’s calculated, and why Kulipa brings clarity to its partner wallets about what they’ll earn.
Read more

What is the interchange fee?

You go into Starbucks and order. “That’ll be $7.89,” the cashier says. (Inflation!) You tap your card, the payment is authorized, and a minute later you’re sipping your latte.

It was convenient, fast, and Starbucks was happy you paid with a card and moved along rather than fumbling in your pocket for change. But the convenience of that card payment also costs Starbucks money, a little piece of the transaction that goes to the companies making the payment system work smoothly. One key part of that cost is called the interchange fee.

The interchange fee varies heavily depending on a variety of factors: the country in which the transaction takes place, the kind of merchant where a purchase is made (online vs. in person), whether or not it is a cross-border transaction, the type of card used (debit vs. credit, for example), and more. At Kulipa, we see that the average interchange fees on consumer purchases amount to:

  • 0.2% in Europe
  • 1.5% in Latin America, Africa, Asia, and the Middle East
  • 2.0% in USA

‍

‍

In money terms, that means the interchange fees would be:

  • €0.20 on €100 in France
  • R$1.50 on R$100 in Brazil
  • $2.00 on $100 in New York

Who shares the interchange fees?

Interchange fees are divided among the different players in the transaction – with the exception of Mastercard or Visa, who have a different role that we’ll get into below.

Card issuers take the largest part of the pie in exchange for coordinating the activity among all these players. If the transaction’s card issuer has a BIN sponsor, that sponsor is also paid out of the portion of the interchange fees that goes to the issuer.

(A BIN sponsor lends their financial license to a card issuer, acting as the issuer’s guarantor with the relevant financial authorities. It is, of course, also possible that no BIN sponsor is involved if the card issuer itself has gone through the regulatory process, as for example Kulipa has done in multiple geographies.)

Interchange fees are paid by the acquirer of the transaction to the issuer (for definitions on these, check out our article on How card payments work).

From Matt Brown’s article “Payfac in 1,000 words”

How is the interchange fee calculated?

This is where Mastercard or Visa come in, as they are the ones tasked with defining and facilitating the system of interchange fees.

There’s only one place in the world where it’s quite easy to define the interchange fee: Europe. For transactions in Europe, the interchange fee is fixed by regulation for domestic transactions at 0.2% (for debit cards). 

In the rest of the world, however, it’s very complicated to understand how much the interchange fee will be, today, for a given transaction happening in a given location. It can, and does, vary based on a variety of circumstances. 

Final interchange fees are calculated with an Interchange Rate Designator (IRD), which is essentially a set of rules that covers pretty much any combination of potential factors to come up with the final number for a given transaction. 

The range of IRDs is, frankly, wide. Here, it’s enough to say that an IRD is impacted by the type of card used, the type of merchant where the purchase is made, the geographic location of everyone involved, the technology used to complete the transaction, and the time when the transaction is submitted.

What does this all mean for a crypto wallet that issues payment cards?

Interchange fees have the potential to be an attractive new revenue stream for crypto wallets. But due to the complicated calculations involved, there’s also a certain opacity that opens the door to salesmanship in the industry. 

Specifically, because it’s natural to start dreaming when thinking about the benefits of a new revenue stream, some card issuers try to sell a dream. We’ve talked with clients who have told us they were promised up to 90% of the net interchange fee on a transaction. The thing is that this flashy number is often standing in front of hidden costs, or is actually not true. 

At Kulipa, our stance is that clarity and openness is better. That’s why our contracts spell out how we’ll keep somewhere between 20-50% of what we’re actually getting, depending on transaction volume, while being up front about what that number is.

‍

That leads to one big conclusion: Wallets should be aware that while interchange fees can indeed be a great new revenue stream, they aren’t really enough to be the foundation of a thriving business. The bottom line is that payments can be a great new use case that leads to happier customers; in exchange, interchange fees are a good incentive for providing these services.

‍

Want to learn more about how to enhance your crypto wallet with a branded debit card? Check out kulipa.xyz and reach out to set up a call to talk about your specific needs.

Payments 101
X min

How does Kulipa's crypto debit card work for self-custodial wallets?

In our previous article, we explained the criteria for determining if your wallet would be best served by a debit card or a prepaid card. As mentioned, the smooth user experience offered by crypto debit cards comes with some additional technical issues; below, we detail how Kulipa handles them based on account characteristics, security keys, risk management, and more.
Read more

Including an answer to the big question: How to prevent double spending?

‍

In our previous article, we explained the criteria for determining if your wallet would be best served by a debit card or a prepaid card. As mentioned, the smooth user experience offered by crypto debit cards comes with some additional technical issues; below, we detail how Kulipa handles them based on account characteristics, security keys, risk management, and more.

‍

When a wallet comes to Kulipa to ask about deploying our crypto debit cards to their users, the conversation quickly turns to some relatively technical points. On our side, we want to know more about the wallet’s current goals, as issuing a debit card is a resource intensive endeavor. On their side, they need to know exactly how Kulipa manages the various flows of authorization, clearing, fund transfer and more. 

‍

Those are good questions, and we’re happy to go over the details for each particular situation. Here, though, we’d like to explain how the flow of funds works for debit cards, depending on the various characteristics a wallet can have.

First up: The double spending issue 

Debit cards for self-custodial wallets are quite new. Instead of the classical prepaid card model, a debit card transmits funds directly from the user’s self-custodial wallet to the merchant’s bank. This means we at Kulipa have around 5-6 seconds to:

‍

  1. Receive the authorization request that begins when the card is being used,
  2. Check if there are enough funds in the user’s wallet,
  3. Say yes or no to Visa/Mastercard.

‍

After that, there’s another thing we have to do before the payment is cleared and the funds are settled:

  1. Somehow ensure the user doesn’t move the funds before we send them to the merchant.

‍

Step 4 is known as the double spending issue. As we saw in our previous article on payment networks, clearing and settlement happen quite some time after the payment authorization is granted (ranging from 24-72 hours, depending on what day of the week it is).

‍

Thus the transaction can be approved quickly, but the funds only leave the user’s account when it’s time for Kulipa to settle the payment with the card network. Double spending would occur if, in the meantime, the user had placed another transaction before the settlement that depleted the account to the point where there are no longer enough funds available for the transaction.

‍

We clearly need to prevent that, and how it happens depends on the wallet infrastructure. What does that mean? Wallets can generally be characterized as: 

‍

  • Account abstraction (AA), often referred to as smart wallets. These are managed by smart contracts and are therefore programmable. This means that we can have some special rights over the user’s funds, including freezing them. Argent, Avocado, and Trust Wallet SWIFT are examples of this kind of wallet.
  • Externally-owned accounts (EOA), including MPC wallets, which are a bit more tricky. As their infrastructure is hard-coded into protocols, they have limited functionalities and need different safeguards to prevent double spending. Some examples here are Metamask, Trust classic, and Coinbase wallet.

‍

Let’s see how we implement debit cards into each of these, starting with Account Abstraction. 

Account Abstraction Wallet: The Flow of Funds

Let’s use the example of Argent, one of the wallets using Kulipa’s crypto debit cards. It’s a very instructive one, showing how we can use the specific characteristics of AA wallets to fit within the existing debit card system.

‍

TLDR for the model

The full flow of funds, from authorization to clearing and settlement, looks like this:

Argent's flow of funds

‍

Authorization

  1. The user enters their key via Argent’s app to execute a transaction with a merchant (i.e., they try to pay for something).
  2. Our issuer processor receives the transaction request from the card network and sends it to Kulipa.
  3. Kulipa checks the user’s account balance with Argent. If sufficient funds are available, we send a transaction approval to both Argent and the card network.
  4. Argent places a hold on the funds using their cosigner key (more details on that below); The card network sends an approval message to the merchant’s point of sale machine.
  5. Kulipa updates the user’s account balance on the backend (a process that also works when funds are added to the wallet using an on-chain transaction).

‍

Clearing & settlement

  1. At the end of each day, the card network sends the clearing file to Kulipa.
  2. Kulipa uses its session key to send USDC from the user’s wallet to an offramp account that is owned by Mastercard, Visa, or another EMI, depending on the region.
  3. Funds are offramped into a settlement account before being sent along traditional payment rails to the merchant’s bank account.

‍

Argent’s specificities

Argent uses a cosigner model, meaning that both the user and Argent need to validate a transaction with their respective keys in order for it to be validated on-chain. Cosigning is important because it avoids double spending using an enforced hold of the funds being used for a debit card transaction. This then enables the funds to only truly move at the end of the day, when Kulipa has received the clearing file from the card network.

‍

‍

While the user has a key generated when they create their wallet, and Argent has its own key that lets them cosign transactions, Kulipa needs to become part of this flow as well. This happens thanks to session keys, which Argent has been developing for quite some time.

‍

Session keys allow Kulipa to hold its own key, generated when the user orders their debit card. This key gives Kulipa very specific rights to the user’s funds held in Argent: Kulipa can only touch USDC, and the funds are offramped.

Externally-owned accounts

Issuing a debit card for EOA wallets works a bit differently since these wallets can’t enforce smart policies on users’ funds like those seen with account abstraction wallets. As such, Kulipa can’t block a third-party transaction after authorizing a payment, nor can we wait for the clearing file to arrive before collecting the funds.

‍

Therefore, in order to solve the double spending problem, there’s an additional account added to the flow of funds: an escrow account, where the funds are placed directly after authorization takes place.

Authorization

‍

  1. The user uses their card to execute a transaction with a merchant (i.e., they try to pay for something).
  2. The issuer processor sends Kulipa a request for authorization.
  3. Kulipa attempts to move the funds to the escrow account. 
    1. If the transaction is validated by the blockchain, that means there were enough funds and we can say “Yes” to the card network.
    2. If the transaction fails, there aren't enough funds and we say “No”.
  4. Kulipa updates the user’s account balance on the backend (a process that also works when funds are added to the wallet using an on-chain transaction).

‍

Clearing and settlement

‍

  1. At the end of each day, the card network sends the clearing file to Kulipa.
  2. Kulipa sends the funds from the escrow account to an offramp account that is owned by Mastercard, Visa, or another EMI, depending on the region.
  3. Funds are offramped into a settlement account before being sent along traditional payment rails to the merchant’s bank account.

‍

And that’s it for this product deep dive! Stay tuned for next week’s article, and in the meantime, feel free to follow us on X or stop by our brand new website for more information. 

‍

Payments 101
X min

What’s better for your crypto wallet: a prepaid card or a debit card?

Choosing between prepaid and debit crypto cards is a crucial decision for wallets looking to enhance user experience and drive engagement. This article explores the key differences between the two, to help wallets determine the best fit for their growth strategy.
Read more

Some people dream of buying a Lamborghini with their crypto; others are just looking to get some pizza delivered.

‍

And while that last one might not take 10,000 BTC anymore, given the problems crypto holders still have when trying to spend their funds in their local economy, it can sometimes feel like it does.

‍

Could your wallet actually make it easy to spend crypto holdings on everyday purchases, whether at the grocery store, the hairdresser, or even the car dealership? With Kulipa, the answer is yes.

‍

But whether that happens through a prepaid card or a debit card depends on some characteristics of your wallet. And making the right decision between one or the other is fairly important, as implementing a card is a resource-intensive process.

‍

How do you know which solution is right for you?

What’s the difference between a prepaid card and a debit card? 

Let’s take a moment to define what we’re talking about. 

‍

  • Whenever a user pays with a debit card, the funds are moved directly from the wallet to the merchant. It provides a seamless purchasing experience and can thus encourage more daily use.
  • A prepaid card works the same in the moment of purchasing something, but prior to paying with it users need to put funds in a segregated wallet that the card issuer – Kulipa – owns. They can only pay using those preloaded funds, which can be fine for many scenarios but also means a bit more friction for the end user. 

‍

Keeping that high level view in mind, let’s dive into the two options to look at the types of wallet they fit best. 

What criteria are a good signal for issuing crypto debit cards?

  • Goal - Delighting users: Some wallets are more focused on the user experience than others, whatever their reasoning. Debit cards are great for these, as they take away the friction of needing to regularly add funds to the card. Users simply have a card that’s always connected to their wallet, ready to use whatever funds they have there. So while they take more resources to set up, debit cards do operate much more smoothly once they’re in the users’ pockets.

‍

  • A scaled team: Issuing a debit card takes a certain amount of time to implement. We’re not talking in terms of years, but we are talking about a few months. Aside from validating the program with Visa and/or Mastercard, card production, and BIN issuance, a debit card is technologically delicate to implement. For example, we need to prevent double spending (to avoid authorizing a transaction and then having the user empty their wallet before the funds are actually pulled for settlement); this requires some tailored solutions for each wallet, depending on their infrastructure. Having engineers and product people ready to commit fully to launching a debit card is very important to have a smooth launch. 

‍

  • Available budget: Issuing a debit card is a real process, including many different stakeholders (we covered this in a previous article). As the card issuer, Kulipa handles most of the heavy lifting, from project management to technical integration in our implementation fee. Then there are some costs that come with launching the card program itself: creating a dedicated BIN, implementing the design for the manufacturer and card network, shipping physical cards… When it’s all totaled up, creating and issuing your brand’s debit card is a five figure matter. For this reason, a debit card can be better suited for wallets with a live product and growing traction. 

What criteria are a good signal for issuing crypto prepaid cards?

  • Goal - Testing the waters: Prepaid cards are a great way to get a foot in the door with card products. They’re a standard and fast way to test users’ appetite for payments. Once you’re convinced that it works, it’s always possible to upgrade to debit for a superior experience. 

‍

  • Easy implementation: Because prepaid cards always have the same mechanism, there is less tailored work to be done and thus lower implementation fees. There are still some project management aspects that need to be handled – card design, program validation, etc. – but the total cost is always going to be lower than with a debit card program.

‍

  • Speed over UX: There are similar savings in time to market and implementation. As the technical setup is standard, a prepaid card can be live just a few weeks after agreeing on the terms. 

‍

One of our slides to sum things up

The virtuous circle of crypto cards

For wallets that start their own card program, whether debit or prepaid, there’s a relatively tight feedback loop that shows why adding the powerful experience of global crypto spending for your users can take your wallet to the next level.

‍

  1. Higher retention, generated by daily wallet use. By enabling crypto to be used everywhere, you’re creating the best possible situation for frequent card usage, leading to increased retention and mindshare. Seeing people pay with a card branded with your wallet’s name also contributes to organic acquisition, further growing your wallet usage.

‍

  1. New revenue streams, enabled by significantly more fund movement. By entering the card transaction flow, wallets can access part of the standard interchange fees (from 0.5%-1.5% of the total price) paid by merchants at each card payment. Additionally, Kulipa only handles stablecoins; this means that Kulipa card users holding only BTC (for example) will have an exchange from BTC to USDC when making a payment, generating in-wallet DEX fees. The same goes for bridging, if there aren’t enough funds on the chain used by the card for payment. 

‍

  1. Additional product features that can be built on top of the card program: cashback, loyalty programs, quests, points, airdrops, etc.  This can have benefits in terms of product, marketing, customer service and more. Working together, your teams can deliver an experience that brings you right back to having more customers using their wallets on a daily basis, letting the whole cycle start back up again.

‍

‍

In conclusion

  • Prepaid crypto payment cards are easier and more affordable to set up, but include an intermediary step (topping up funds on a separate wallet) that creates a bit more friction for the user.

‍

  • Debit crypto payment cards take more time and resources to get up and running, but can create a seamless user experience that matches the typical “pull out my card and tap it on the machine” experience that users expect from traditional finance, eventually leading to even more fund movement.

‍

For crypto wallets that want to issue their own branded debit cards, there are some technical questions that always come up: How do funds move between various players? How do you prevent double spending? What do security and permissions look like?

‍

In our next article next week, we’ll explain just that for our debit card! And no matter which option feels like the right one for your wallet now, be sure to follow us to stay up to date on how Kulipa’s bringing the power of crypto payments to users around the world.

‍

Let's talk

About your project

Let’s innovate today together, by discussing about your use case and how we can help.

Get in touch
Logo Kulipa Footer
Entreprise
Our MissionCareersTeamsBlog
Product
Plateform OverviewDebit CardApple Pay®Google Pay™DashboardPrepaid Card
Solutions
APIHow it worksCase StudiesDocumentation
© 2025 Kulipa. All rights reserved.
Terms of Service