Cards, wallets and the local methods your customers actually reach for, plus payouts to individuals. One integration, wherever you sell. Your bank settles you directly.
A Dutch customer expects iDEAL. A Belgian expects Bancontact. Someone in Shanghai expects WeChat Pay. Offering only cards quietly costs you the sale.
A card, a Dutch bank redirect, a Portuguese cash voucher. All the same shape. Adding a method means changing one field, not writing another integration.
Scheme rules are checked before a bank is called, so an unsupported currency comes back as a precise error rather than an opaque decline.
curl https://api.cleonpay.com/v1/payments \
-H "Authorization: Bearer ck_live_..." \
-H "Idempotency-Key: order-1001" \
-d '{
"method": "ideal",
"amount": 1050,
"currency": "EUR",
"country": "NL",
"success_url": "https://shop.example.com/thanks",
"error_url": "https://shop.example.com/failed"
}'
Local methods, card schemes and bank rails across Europe, Asia and the Americas, behind one contract and one integration.
We create the payment, the customer pays, we tell you, and the institution settles you directly. Your money never sits with us.
You get an id and a URL to send the customer to.
On their bank's page, in a wallet, or at a cash machine days later.
A signed webhook when the money actually moves, not when the browser comes back.
Funds go from the institution straight to your account.
Most of the work is in the cases nobody demos.
A customer landing on your success page means their browser came back. Only the webhook proves the money moved, and Multibanco can take days because the customer pays at a cash machine.
A declined payment can retry at another institution. One that timed out never does, because the outcome is unknown and charging twice is worse than losing the sale.
Every delivery carries an HMAC signature and is retried for 24 hours. Receiving the same event twice is safe by design.
Multibanco cannot be refunded at all. Przelewy24 stops at 90 days. The API knows, and tells you before a bank does.
Integers throughout. A decimal amount is refused rather than guessed, because a ledger that drifts by a cent cannot be reconciled.
Force a decline, an abandonment, or a settlement that lands thirty seconds late. Test what a real acquirer will not perform on request.
{
"recipient_id": "6d4ff39f-72fb-44c4-9e13",
"method": "card_payout",
"amount": 2500,
"currency": "EUR",
"reference": "PAYOUT-2026-0001"
}
Winnings, marketplace balances, contractor pay. Money out to someone who may never have paid you, to a card or a bank account, over the same API.
Card details never reach us. A recipient is created from a token or a payment they already made, which keeps both sides out of the heavier parts of PCI DSS.
Integrate and test before any commercial conversation. No money moves and no bank approval is needed.