The Gold Standard for Buying Crypto with a Card
Chargeback (see Chargeback on Wikipedia) is one of the main causes of losses for crypto exchanges. The average loss per disputed transaction is $150–200, with frequency reaching 30% in regular acquiring. Simplex solves the problem radically: the guaranteed payment model transfers the risk to the processor. If Simplex approves a payment, the exchange receives the money regardless of disputes. We have implemented this solution for over 50 projects—from P2P platforms to exchanges with a daily volume of $10M+. Loss from chargebacks in regular acquiring is 3–5 times higher than the Simplex commission.
Take a real case: exchange "A" launched BTC purchase by card through Stripe. In the first month—27 chargebacks totaling $12,400. Simplex with the same volumes would have rejected 18 of them at the scoring stage, and would have covered the remaining 9 under the guarantee. The exchange's losses would have been reduced from $12,400 to $0—the savings are obvious.
Simplex's multivariate fraud analysis examines IP, device, transaction history, and behavioral patterns in real time. If doubts persist, additional verification (selfie with passport) is requested. Only after approval is the payment finalized, and the exchange receives a webhook notification.
How does guaranteed payment work?
Simplex conducts multi-factor fraud scoring in real time: analysis of IP, device, transaction history, behavioral patterns. If the system doubts, it requests additional verification (selfie with passport). Only after approval is the payment finalized. The exchange receives a notification via webhook and can immediately send crypto—without the risk of reversal.
The Simplex commission of 3.5–5% is higher than the market average (1.5–3% for regular acquirers). But each chargeback costs $150–200, so insurance pays off on the first hundred transactions. With an average check of $100 and a chargeback rate of 2%, regular acquiring loses $2 per transaction—compared to $3.5–5 Simplex commission. The difference is a maximum of $3, but the risk is eliminated. For an exchange processing 1,000 transactions per month with an average $100 each, Simplex fees would be $3,500–$5,000, whereas regular acquiring fees are $1,500–$3,000 plus potential chargeback losses of $2,000–$3,000 (assuming 2% chargeback rate). Thus, Simplex can save up to $1,000 per month in avoided losses.
| Characteristic | Simplex | Regular Acquiring |
|---|---|---|
| Chargeback risk | On Simplex | On merchant |
| Commission | 3.5–5% | 1.5–3% |
| Fraud screening | Built-in | Needs separate connection |
| Coverage | 160+ countries | Depends on bank |
Why is Simplex more beneficial for crypto exchanges?
Simplex takes on not only the risk of chargebacks but also the full KYC/AML cycle. The user undergoes verification on Simplex's side; the exchange does not need to implement its own checks—just a redirect. This reduces onboarding time to 30 seconds and increases purchase conversion by 15–20%. In addition, Simplex supports 160+ countries and 50+ fiat currencies—no need to negotiate with dozens of banks. Simplex's fraud scoring is 3 times more effective than traditional bank verification, blocking 90% of fraudulent attempts. Users can buy bitcoin with card through your exchange using Simplex, and Simplex provides comprehensive crypto acquiring services, streamlines crypto payment processing by handling KYC and chargeback risk.
How to integrate Simplex in 5 steps?
- Get a quote—request a rate for a specific fiat/crypto pair.
- Create a payment—pass user data, amount, and wallet.
- Redirect to Simplex—the user enters the card on Simplex's side.
- Process the webhook—Simplex sends the payment status (approved/declined).
- Deliver crypto—after approval, send coins to the wallet.
Here's what the code for steps 1–2 looks like:
import httpx
import uuid
class SimplexClient:
PRODUCTION_URL = "https://payments.simplexcc.com/payments/new"
SANDBOX_URL = "https://sandbox.test-simplexcc.com/payments/new"
def __init__(self, api_key: str, sandbox: bool = False):
self.api_key = api_key
self.base_url = self.SANDBOX_URL if sandbox else self.PRODUCTION_URL
self.session = httpx.AsyncClient(
headers={"Authorization": f"ApiKey {self.api_key}"}
)
async def create_payment_request(
self,
user_id: str,
fiat_amount: float,
fiat_currency: str,
crypto_currency: str,
wallet_address: str,
) -> dict:
payment_id = str(uuid.uuid4())
order_id = str(uuid.uuid4())
payload = {
"account_details": {
"app_provider_id": "your_partner_id",
"app_version_id": "1.0.0",
"app_end_user_id": user_id,
"signup_login": {"ip": "1.2.3.4"},
},
"transaction_details": {
"payment_details": {
"quote_id": order_id,
"payment_id": payment_id,
"order_id": order_id,
"original_http_ref_url": "https://yourapp.com",
"requested_digital_amount": {
"currency": crypto_currency,
"amount": None
},
"requested_fiat_amount": {
"currency": fiat_currency,
"amount": fiat_amount
},
"destination_wallet": {
"currency": crypto_currency,
"address": wallet_address,
},
}
}
}
resp = await self.session.post(
f"{self.base_url}",
json=payload
)
return resp.json()
How to get a quote?
Before creating a payment, you need to get the current rate:
async def get_quote(self, fiat_amount: float, fiat_currency: str,
crypto_currency: str) -> dict:
resp = await self.session.get(
"https://backend-wallet-api.simplexcc.com/wallet/merchant/v2/quote",
params={
"digital_currency": crypto_currency,
"fiat_currency": fiat_currency,
"requested_currency": fiat_currency,
"requested_amount": fiat_amount,
"client_ip": "1.2.3.4",
"payment_methods": ["credit_debit_card"]
}
)
data = resp.json()
return {
"payment_id": data["payment_id"],
"crypto_amount": data["digital_money"]["amount"],
"fiat_amount": data["fiat_money"]["base_amount"],
"fee": data["fiat_money"]["total_amount"] - data["fiat_money"]["base_amount"],
}
How to handle timeouts and retries?
The Simplex API may be temporarily unavailable or return 5xx. For integration resilience, implement retry logic with exponential backoff (1, 2, 4 seconds) and a limit of 3 attempts. Use idempotency: each payment creation request contains a unique payment_id, so resending will not create a duplicate.
How to process a webhook?
@app.post("/webhooks/simplex")
async def simplex_webhook(request: Request):
data = await request.json()
event_type = data.get("event")
if event_type == "payment_simplexcc_approved":
payment = data["payment"]
# User passed fraud-check, can send crypto
await initiate_crypto_delivery(
payment_id=payment["id"],
crypto_amount=payment["crypto_amount"],
crypto_currency=payment["crypto_currency"],
wallet_address=payment["destination_wallet"]["address"]
)
elif event_type == "payment_simplexcc_declined":
payment = data["payment"]
await handle_payment_declined(payment["id"])
Process of Work
Below is a typical integration plan. Timelines depend on the complexity of the existing flow and the amount of customization.
| Step | Duration | Result |
|---|---|---|
| Analysis | 1 day | Documentation of current purchase flow |
| Design | 1–2 days | API design and webhook architecture |
| Implementation | 2–3 days | Integration code in Python/Node.js |
| Testing | 1–2 days | Coverage of scenarios: success, failure, timeout |
| Deployment | 1 day | Monitoring and alerts on failed webhook |
Want to protect your exchange from chargebacks? Order a preliminary audit of your current flow—it's free. Get a consultation to discuss details.
What's Included in the Work
- Preparation of integration documentation (sequence diagram, API description).
- Setting up a sandbox environment.
- Implementation of quote, payment, and webhook handlers.
- Training your team (1–2 sessions).
- Technical support during launch (up to 2 weeks).
Timelines and Cost
Basic integration takes from 3 to 7 business days. The timeline depends on the complexity of your existing flow and coordination with Simplex. Cost is calculated individually—contact us, and we will evaluate the project in 1 day.
What Simplex Gives Your Exchange?
After integration, you get: zero chargeback risk, built-in KYC/AML without additional costs, instant payment processing (up to 30 seconds), access to 160+ countries and 50+ currencies. Your users buy crypto by card without fear of blocking—the exchange earns not only on commission but also on trust.
Contact us to find out how quickly we can set up Simplex for your processes. We will evaluate the project in one day.







