Charge Payments · global acceptance and payouts
Take any currency. Get paid in yours.
Your customer pays with whatever they hold: a stablecoin, BTC, ETH, a memecoin. Charge converts it and settles you in the one thing you picked: bitcoin, USDC, dollars, euros, or a wire to your bank. US account or offshore, same API.
Simulated flow · no funds move · do not send real assets
Settlement tape · last 60 seconds
Sample data
What a charge actually does
Your customer sends whatever they hold. You get a normal-looking payment.
Charge quotes the price, locks it, watches the chain, converts, and hands you a settled balance with a receipt. Everything between those two moments is our problem, not yours.
Conversion
Anything can come in. One thing goes out.
You never have to hold what your customer wanted to pay with. Pick the asset or currency you want to be paid in once, and Charge quotes, routes, and converts every incoming payment into it before it hits your balance.
Customer pays with
Charge engine
Quote, route, hedgeYou receive
Settlement asset
Bitcoin only Set once in the dashboard. Change it whenever you like to USD, EUR, GBP, CAD, AUD, USDC, ETH, or a wallet address you control.Rate quoted to the customer · slippage and spread absorbed by Charge · settled amount is the amount you were quoted
A memecoin becomes bitcoin
A buyer in Manila pays a $180 invoice in DOGE. The merchant in Lisbon has settlement set to BTC and never sees the DOGE.
- Charge quotes 1,499 DOGE and holds the rate for 15 minutes
- The transaction clears, gets screened, and is routed through partner liquidity
- 0.00262 BTC lands in the merchant's balance with one receipt
Crypto becomes euros in a bank
A SaaS company in Berlin bills in EUR. Its customers pay in USDT, SOL, and ETH from six countries.
- Every charge is converted to EUR at the quoted rate
- Balances sweep to a SEPA account on a daily or weekly schedule
- One reconciliation file, in EUR, regardless of what came in
Coverage
A US bank account is optional.
Charge settles to US accounts through domestic rails and to accounts outside the US through partner banks and local rails. Where a bank is hard to reach, settlement in stablecoin to your own wallet works everywhere a wallet does.
Settle in the US
ACH and same-day wire to a US business account. Standard KYB, EIN, and beneficial owner verification through licensed partners.
Settle outside the US
SEPA in the euro area, Faster Payments in the UK, and local rails in supported markets including Nigeria, Brazil, and the Philippines. Availability and timing vary by corridor.
Settle without a bank
Choose USDC, BTC, or any supported asset to a wallet you control. Charge holds nothing and the payout is on-chain. This is the default for merchants in markets we have not licensed yet.
Reference
The whole surface fits on one page.
Base URL https://pay.charge.fun/api/external. Authenticate with your merchant public key, either in the merchant-public-key header or in the request body. Full guide at integrate.charge.fun.
| Parameter | Type | Description | |
|---|---|---|---|
| storeOrderId | string | Required | Your internal order identifier. Comes back on every webhook so you can reconcile without storing ours. |
| amount | string | Required | Order amount as a string, for example "99.99". |
| currency | string | Required | USD, EUR, GBP, CAD, or AUD. This is what you price in, not what the customer pays with. |
| ipnUrl | string | Optional | Where signed webhooks are delivered. |
| successUrl | string | Optional | Where the customer lands after a successful payment. |
| failUrl | string | Optional | Where the customer lands after a failed or rejected payment. |
| cancelUrl | string | Optional | Where the customer lands if they abandon checkout. |
Returns the order with an id like ord_abc123xyz789, a status of pending, and a checkoutUrl on pay.charge.fun. Send the customer there. Read an order back any time with GET /orders/{id}, or list them all with GET /orders.
payment.successPayment completed. This is the event you fulfil on.
payment.pendingPayment seen and being processed. Do not fulfil yet.
payment.failedPayment failed or was rejected by the network.
order.expiredThe window closed without a payment. Create a new order.
Every callback is signed
Webhooks carry X-Webhook-Signature and X-Webhook-Timestamp. Redirects carry the same pair as query parameters.
- Sort the payload keys alphabetically, then encode canonically
- Sign timestamp.payload with HMAC-SHA256 and your secret
- Compare in constant time, and reject anything older than 300 seconds
- Acknowledge with 200 immediately, then process asynchronously
Three landing pages
Success, fail, and cancel each receive id, status, signature, and timestamp. Fail also carries a reason.
- Common failure reasons: insufficient funds, network rejection, amount mismatch, wallet connection
- A cancelled order is never charged and stays payable until it expires
- The gateway may send redirects as POST, with the payload in the body
- Treat the webhook as the source of truth, the redirect as what the customer sees
Both directions
Money in and money out, on the same balance.
The same account that accepts a payment can pay someone else. Every movement carries a direction, an asset, and a receipt, so your books reconcile without a spreadsheet.
Receive
Charge pages, embedded buttons, invoices, and subscriptions. Your customer pays from any wallet or exchange.
- Hosted checkout, embedded widget, or headless API
- One deposit address per charge, no memo matching
- Under and overpayment handled with automatic top-up links or refunds
- Recurring charges with on-chain allowance renewal
Send
Pay contractors, suppliers, and affiliates from the balance you just collected. Batch or single, with approvals.
- Batch payouts to thousands of addresses in one call
- Off-ramp to local bank accounts through licensed partners
- Spend the balance on a Charge Visa card, anywhere Visa is accepted
- Two-person approval and per-key spend limits
Charge Card · issued on Visa
Spend the balance without cashing it out.
The money you collected is already spendable. Charge issues a Visa card against your balance, converts at the moment of authorization, and works anywhere Visa is taken. Virtual instantly, physical where we ship.
Spendable now. Each authorization converts only what the merchant charges, at the rate quoted on the receipt.
- Convert at the till, not before. Charge converts only the amount authorized, so the rest of your balance stays in the asset you chose.
- Spend or borrow. Draw down the balance, or open a credit line against holdings you do not want to sell, priced off your Charge Credit Score.
- Any Visa merchant, any country. Online, in store, and in wallets like Apple Pay and Google Pay where supported.
- Cards for your team. Issue virtual cards per person or per vendor, each with its own limit, and freeze any of them from the API.
- One ledger. Card spend, inbound charges, and payouts sit on the same balance with the same receipts and the same webhooks.
Recent authorizations
Card issued by a licensed partner. Eligibility, limits, and availability vary by country. Sample activity.
Pricing
One rate. No interchange, no chargebacks.
You pay when a charge settles. Nothing monthly, nothing per API call, nothing for failed attempts.
Per settled charge, any asset, any network. Network fees are quoted to the customer, not billed to you.
Take BTC and keep BTC. No conversion, no extra fee, straight to an address you control.
Spread on conversion between assets. Thin-liquidity tokens carry a wider quoted spread, shown before the customer pays.
Off-ramp to a bank account through a licensed partner. Rates and corridors vary by country.
Security and compliance
Boring where it counts.
Non-custodial where possible
Settlement to your own wallet means Charge never holds the asset. Where custody is required by a product or a regulator, it sits with a licensed partner, and we say so in the dashboard.
Screened before it settles
Every inbound transaction is screened against sanctions and risk lists before it credits your balance. Flagged transactions are quarantined with a reason code, not silently dropped.
Regulated partners per market
Fiat off-ramps, card issuance, and any custody are handled by licensed issuers and local partners in each market where Charge operates. Availability varies by region.
Take your first crypto payment today.
Test keys are instant. Live keys come after verification, usually the same day for most markets.
Get API keys or email sales@charge.fun for volume pricing