Why buying cryptocurrency with a card fails at payment
The chain of buying cryptocurrency with a card consists of four links: issuing bank, payment provider, exchange, and blockchain network.
A break at any of them looks the same to the user — "payment declined" or an endless "processing" status, although the cause each time is different.
That is why failed transactions cannot be treated with a single method: first you need to understand at which link the confirmation was lost.
Most common cause — issuing bank decline. Scoring evaluates merchant category, geography, share of similar transactions, and customer history, and a crypto-related transaction falls into an increased risk zone.
Add transaction limits — daily, monthly, and per single payment — plus failed cardholder verification, and the user gets a decline without a clear explanation.
Third scenario — stalled payment status. Funds are already frozen or debited, but cryptocurrency is not credited: provider waits for final confirmation from bank, exchange — for required number of network confirmations. If even one callback is lost, transaction remains in an intermediate state until manual review.
We break down how this is closed: end-to-end transaction identifier at all links, repeated status requests on a schedule, automatic cancellation of stalled payments, and correct retry.
What setting up payment acceptance gives: effect in numbers
Setting up card payment acceptance is not "connect a gateway and wait." Losses hide in declines at the confirmation stage, in discrepancies between the payment route and blockchain, and in manual reconciliation that eats support time.
We take the metrics below before and after changes: they show that payment acceptance actually works, not just enabled.
- Share of successful transactions — from two thirds to 88–92%: retry via alternative route, correct handling of issuing bank declines, and cardholder verification request without losing the customer.
- Credit speed — crypto arrives in the wallet 1–3 minutes after debit: request does not wait for manual review, status is recalculated based on network confirmations.
- Volume of manual payment reviews — "debited but not credited" requests fall by an order of magnitude: discrepancies are caught by automatic reconciliation, not support.
- Class of declines that disappears entirely — payment stuck between debit and credit: amount is either returned after timeout or brought to credit, there is no third state.
- Antifraud rules — thresholds by amount, geography, attempt frequency, and device matching cut off fraudulent series, while the share of false blocks stays in single-digit percentages.
- Transaction reconciliation — daily automatic match of card network Visa reports and blockchain transactions: discrepancies are visible the same day, not at period closing.
This is not a one-time setup: antifraud rules and payment routes are revised as volumes grow, otherwise metrics slide back.
Card payment modes: comparison and limitations
The payment acceptance mode determines not only conversion at payment, but also how refunds proceed and what happens when a customer disputes.
With card cryptocurrency purchases, the bottleneck is almost always not in the code, but in payment provider rules: it evaluates the share of disputed transactions, transaction type, and payer region — and based on that decides whether to keep the channel.
In practice, we assemble not one channel but a combination: primary — aggregator or gateway, backup — manual confirmation, so payment acceptance does not stop when the provider's policy changes. Below is a comparison of schemes by when they fit and where they break.
| Option | When it fits | Limitations |
|---|---|---|
| Payment aggregator | Fast launch and several payment methods at once are needed | Provider limitations change without warning: for crypto-related business, limits and refund thresholds are stricter |
| Direct acquiring | Turnover is stable, own terms and predictable refund support matter | Long onboarding; the bank evaluates the business itself and may decline during review |
| Separate payment gateway | High conversion and automatic cryptocurrency issuance are needed | Dependence on one provider: its failure or policy change stops payment acceptance |
| Manual confirmation | Backup channel, large amounts, non-standard cases | No automatic refunds, manual reconciliation, slower crediting |
We fix the scheme before development starts: refund scenarios, transaction journal, and which order states need to be provided in the user account depend on it.
How we set up payment acceptance: stages of work
We start with a review of current payment acceptance: how the flow is arranged, where statuses are lost, who is responsible for reconciliation.
Then we go through stages — from the payment flow diagram to handover to support/maintenance, recording at each step what exactly was checked and how it is confirmed.
- Audit of the payment flow. We assemble the actual chain: acquiring, cardholder confirmation, conversion, cryptocurrency crediting. Separately, we analyze declines and discrepancies between provider status and accounting system.
- Payment flow diagram. We describe transaction states and transition rules: created, confirmed, debited, credited, canceled. For each transition, we specify initiator, deadline, and behavior on repeated request.
- Setting up status notifications. We connect callbacks from the provider, make reprocessing safe, add regular reconciliation — the status in the user account matches the actual one.
- Test transactions. We run a successful payment, bank decline, cancellation, refund, and repeated request with the same identifier — first on the test environment, then on real transactions with limited amounts.
- Observability. We expose metrics: share of successful payments, time from debit to credit, number of transactions with manual review. By them, degradation is visible before user complaints.
- Handover to support/maintenance. We hand over the scheme, incident review procedure, access, and escalation order.
The result of the stages is working payment acceptance with predictable statuses and a clear procedure for failures.
What we hand over: configurations, schemes, procedures
We deliver not only a working service, but also the layer without which it cannot be safely operated. The package lies in the customer's repository, is tied to release versions, and is updated with them — the logic will not have to be restored from code.
- Integration scheme. Flows between storefront, payment gateway, acquiring bank, and blockchain node: where the order is created, how statuses are matched, which steps are repeatable without double debit, and how the service behaves when responses diverge.
- Payment gateway configuration. Limits and currency pairs, payer verification rules, retries of failed requests, processing provider notifications, separation of test and production environments.
- Data storage policy. What we write to the database, what we mask, retention periods for personal data and signing keys, access matrix, owners of service accounts, and handover procedure when the team changes.
- Discrepancy handling procedure. Reconciliation for each order, crediting rules for incomplete confirmation, manual review queue, and response deadlines for each case type.
- Operator instructions. Stalled payment, bank decline, refund, partial credit — action order, response templates, and the boundary beyond which the on-call engineer is involved.
- Support and rollback procedure. Set of metrics and alerts (share of successful payments, crediting time, volume of stalled orders), procedure for editing configurations and returning to the previous version.
We write documents so that a new engineer understands the payment flow in one working day. Describe the task — we will come back with an estimate and plan.
Case: how we reduced the share of failed payments
The project — a service where buying cryptocurrency with a card happens directly in the interface: a person enters the amount, confirms the transaction at the bank, and waits for crediting to their account.
Before rework, one payment acceptance channel accounted for 71% successful payments: some transactions failed at confirmation, some hung in "processing" status, some closed with a decline without a clear reason for the user.
Every fourth failure turned into a support request, and reviewing one stalled transaction took an operator about 12 minutes.
What we changed. We assembled a routing layer over several acquiring services: if the issuer returns a decline, the attempt automatically goes to a backup channel, and the debit is correctly canceled, not leaving the person in uncertainty.
Notification processing from MoonPay was made idempotent — repeated event delivery no longer creates a second order, and the status model "created → authorized → confirmed → credited" brings the transaction to completion without manual involvement.
Metrics before and after
- Share of successful payments: 71% → 96%.
- Median crediting time: 32 minutes → 90 seconds.
- Transactions requiring manual review: 9% → 0.6%.
- Support requests about payments: minus 78%.
Separately, we moved into monitoring the share of declines for each channel and orders that hang longer than ten minutes.
Degradation of one acquirer is visible in the first minutes, and traffic goes to a working channel automatically — instead of sorting it out after the fact based on customer complaints.
How does a payment aggregator differ from direct acquiring?
Direct acquiring — an agreement with a bank that itself processes card transactions: risk checks, MCC code approval, integration of the bank interface. Onboarding speed is set by the bank — from weeks to months, and each new payment method is approved separately.
The aggregator stands a layer higher: agreements with banks are already signed, and you get one interface and one reconciliation point. Onboarding takes days, storage of payment data and requirements of payment systems such as Stripe — on the aggregator side.
| Criterion | Direct acquiring | Aggregator |
|---|---|---|
| Agreement | with the bank, separately for each method | one, for cards and alternatives |
| Onboarding speed | weeks and months | days, test environment immediately |
| Fees and limits | lower rate, but there is minimum turnover | markup for routing |
| Responsibility area | you and the bank: declines, reconciliation, refunds | aggregator: review through support |
| Behavior during failure | gateway decline — lost payment | routing to another acquirer |
Where the responsibility area ends
The difference is visible during failures: with direct acquiring, unavailability of the bank gateway means lost orders, and you write the retry logic.
The aggregator holds a pool of channels and switches flow between acquirers, but stalled holds and refunds are reviewed through its support — you do not have your own queue to the bank.
A practical scenario — not to choose forever. At launch, the aggregator gives fast onboarding and minimum own work, and at predictable turnover, a direct agreement reduces transaction cost. Both channels coexist in one scheme: aggregator primary, bank backup.
Frequent technical questions about payment acceptance
Card payment — a chain of independent systems: payment page, customer's bank, acquiring, and payment service. A break at any section does not mean loss of funds, but transaction status has to be confirmed separately.
What to do if the connection breaks at the moment of payment?
Crediting occurs only by confirmed status from the payment service, not by the response of the payment page. Until confirmation, the transaction hangs in the transaction journal in an intermediate state, and a repeated status request is sent on a schedule. Requests are idempotent, so a second payment is not created.
How are discrepancies handled?
Status can change between requests, so a discrepancy is normal background, not a failure. Reconciliation is based on the transaction journal: disputed cases go to a separate queue and are reviewed with a full log — what arrived, when, and at which step.
How are payment system requirements, limits, and thresholds taken into account?
Payment system requirements set the minimum customer verification, bank restrictions — the amount of one transaction and daily volume. Limits and thresholds live in configuration: above the threshold — additional verification, below — automatic crediting. We run rule changes on the test environment.
How are card data stored and how do refunds work?
We do not store card data: payment occurs on the payment service side, leaving only the transaction identifier and a masked fragment. Access to the journal is role-based, and every action is written to the log.
A refund is issued using the same identifier and goes through even where payment was confirmed with a delay.
Let's discuss your payment acceptance scheme
To come back with an estimate and work plan, it is enough to describe the current payment acceptance flow — in words, without access to systems and internal documentation. The more specific the picture, the fewer clarifying iterations and the more realistic the timelines. Below is a list of what gives maximum clarity at the stage of discussing the task.
- The customer's path to payment: website, app, user account, or chatbot, and what happens between choosing the amount and going to the bank page.
- Who services card acceptance: bank, payment service, or several channels at once, and in what form payment confirmations arrive.
- How the fact of payment is recorded: where request statuses are stored, whether a transaction journal is kept, and how discrepancies are reconciled at the end of the day.
- How the customer is verified and suspicious transactions are limited: what limits the bank sets and who approves them.
- How refunds, cancellations, and repeated payment attempts are processed — by what rules and with what delay.
- What has already been done: test environment, working integrations that need to be preserved, and security requirements from the bank and regulator.
This list is enough to assemble an estimate and work plan: we break onboarding into stages, fix the technical specification and integration boundaries, name onboarding timelines and points where your decision is required.
Upon completion, we hand over documentation — payment flow diagrams, status and decline descriptions, support instructions, and the daily reconciliation procedure.
Tell us how your payment acceptance is arranged today — we will come back with an estimate and work plan.







