WooCommerce
Upload the plugin, activate it, and paste your wallet under Payments. A signed webhook marks each order paid when the USDC lands.
Card in · USDC out
Accept card, Apple Pay and Google Pay on your store and get paid in USDC on Polygon, straight to your own wallet. Install the plugin or call the API, paste your address, and you are live.
You're paying
USDC$136.41 USD
chk_8Qe2TnV4kR
Pay with
Your card provider's fee is shown before you confirm.
Checkout by Caravel Pay
Paid · 133.68 USDC sent to 0x9f…3c2
$136.41 · order #1042 · Polygon
Buyers who already hold crypto can also pay in USDC, USDC.e or POL on Polygon.
Setup
Connect your store, paste the wallet you want paid to, and start taking cards. If you can copy an address, you can run Caravel Pay.
Install the WooCommerce plugin, or make one API call from your own site. No integration project.
Any Polygon address you control. Every payout goes there, automatically.
Your checkout is live. The first payment pays you out like every one after it.
Integrations
Every integration ends the same way: one field, your wallet address.
Upload the plugin, activate it, and paste your wallet under Payments. A signed webhook marks each order paid when the USDC lands.
Custom site, app or headless shop: create a checkout, redirect the buyer, get a signed webhook when it's paid.
More plugins are on the way. Tell us what your store runs on; it helps decide what we build next.
How a payment moves
The buyer never touches crypto, and you never wait on a payout schedule.
Card, Apple Pay or Google Pay on the hosted checkout. The buyer pays the card provider's fee there.
$136.41 + the provider's fee
awaiting_paymentThe card provider charges the card and delivers USDC on Polygon to the checkout.
136.41 USDC on Polygon
Once the transfer confirms, the payment minus our 2% fee is sent to your wallet automatically.
133.68 USDC to you · 2.73 Caravel fee
paidA signed checkout.paid webhook updates the order, with the payout's transaction hash.
Order #1042 → Processing
webhook · 200 OKAPI
Create a checkout, send the buyer to its URL, listen for the webhook. Plain JSON over HTTPS, signed with HMAC-SHA256.
order_id always returns the same checkout.awaiting_payment to paid.# Sign "timestamp\nMETHOD\npath\nbody" with your secret
BODY='{"order_id":"1042","amount":"136.41","currency":"USD","return_url":"https://shop.example/thanks","cancel_url":"https://shop.example/cart","callback_url":"https://shop.example/webhooks/caravel"}'
TS=$(date +%s)
SIG=$(printf '%s\n%s\n%s\n%s' "$TS" POST /v1/checkouts "$BODY" \
| openssl dgst -sha256 -hmac "$CARAVEL_SECRET" | awk '{print $NF}')
curl https://api.caravelpay.app/v1/checkouts \
-H "Content-Type: application/json" \
-H "Caravel-Merchant: $CARAVEL_MERCHANT" \
-H "Caravel-Timestamp: $TS" \
-H "Caravel-Signature: $SIG" \
--data-binary "$BODY"
// caravel() signs each request; it's 20 lines, see the docs
const checkout = await caravel("POST", "/v1/checkouts", {
order_id: "1042",
amount: "136.41",
currency: "USD",
return_url: "https://shop.example/thanks",
cancel_url: "https://shop.example/cart",
callback_url: "https://shop.example/webhooks/caravel",
});
// Send the buyer to the hosted checkout
res.redirect(303, checkout.checkout_url);
// caravel() signs each request; it's 25 lines, see the docs
$checkout = caravel('POST', '/v1/checkouts', [
'order_id' => '1042',
'amount' => '136.41',
'currency' => 'USD',
'return_url' => 'https://shop.example/thanks',
'cancel_url' => 'https://shop.example/cart',
'callback_url' => 'https://shop.example/webhooks/caravel',
]);
// Send the buyer to the hosted checkout
header('Location: ' . $checkout['checkout_url'], true, 303);
# caravel() signs each request; it's 20 lines, see the docs
checkout = caravel("POST", "/v1/checkouts", {
"order_id": "1042",
"amount": "136.41",
"currency": "USD",
"return_url": "https://shop.example/thanks",
"cancel_url": "https://shop.example/cart",
"callback_url": "https://shop.example/webhooks/caravel",
})
# Send the buyer to the hosted checkout
return redirect(checkout["checkout_url"], code=303)
{
"id": "chk_8Qe2TnV4kR",
"checkout_url": "https://pay.caravelpay.app/c/chk_8Qe2TnV4kR",
"status": "awaiting_payment",
"amount": "136.41",
"currency": "USD",
"expires_at": "2026-11-09T15:04:12Z"
}
Pricing
Our fee, on every payment and every method, Apple Pay and Google Pay included. No monthly fee. No setup fee.
Drag your monthly sales
/ month
With Caravel you keep about $150 a month more than PayGate's estimated average, and $300 more than on its Apple Pay and Google Pay routes ($3,600 a year).
Bars: what you keep (dark) and the platform fee (amber). Platform fees only: in both cases the buyer pays the card provider's fee on top. PayGate's tiers as published by PayGate, 9 Nov 2026; the 3.5% average is our estimate from public blockchain data, July–September 2026 (how we estimated).
Worked example
The provider's fee never comes out of your payout, and nothing else does either.
| Service | Platform fee | Card provider's fee |
|---|---|---|
| Caravel Pay | 2% on every method, Apple Pay and Google Pay included | Paid by the buyer, on top of the order, shown before they pay |
| PayGate1 | 2% on most routes 3% on Coinbase, Blockchain.com and Cash App 5% on Apple Pay, Google Pay and credit cardAbout 3.5% on average in practice: our estimate2 |
Paid by the buyer, on top, on every route (listed as “+ Provider”) |
Why a caravel
In the fifteenth century, Portuguese shipwrights built the caravel. Its lateen sails could work into a headwind that kept heavier square-riggers in port. A small crew, a shallow draft, and coastlines nobody else could reach.
Caravel Pay is built on the same idea. Card rails on one shore, open chains on the other, and a hull light enough to cross between them. Every integration ends the same way: one field, your wallet address.
Your buyers pay the way they always have. You receive dollars in a wallet only you control, without waiting on anyone's payout calendar.
Sail against the wind.
Built for merchants the old processors leave on the dock.
A plugin or one API call. Nothing heavier.
Paid out automatically to your wallet. No balance to withdraw.
FAQ
Straight answers. If yours isn't here, ask us.
Our fee is 2% of each payment, on every method. There is no monthly fee and no setup fee, and Polygon gas for your payout is covered by the 2%.
Your buyer pays the card provider's own fee in the hosted checkout. It is shown to them before they confirm, and it never comes out of your payout.
Automatically, as soon as the payment confirms on Polygon. There is no payout schedule, no minimum and nothing to withdraw. How long confirmation takes depends on the card provider and the network.
Save your wallet in the WooCommerce plugin and it connects your store for you. On any other platform, make one API call with your site and wallet, and you get your keys back. No account, no forms.
To change your payout wallet or get a new secret, just connect again. Every payout is on Polygon for anyone to check, and the API lists your checkouts whenever you need them.
Any ordinary Polygon address you control: a self-custody wallet such as MetaMask, Rabby or a hardware wallet works well. Smart-contract wallets can't be used for payouts.
If you paste an exchange deposit address, check that the exchange accepts USDC on the Polygon network. Transfers to an address that can't receive them can't be reversed.
No. They pay by card, Apple Pay or Google Pay. Buyers who already hold crypto can also pay in USDC, USDC.e or POL on Polygon.
You do. Payouts are final on-chain transfers to your wallet, so Caravel Pay can't pull money back. Refunds and chargebacks are the merchant's responsibility: refund buyers directly, and keep order and delivery records in case a card provider asks for them.
It depends on the card provider. Card, Apple Pay and Google Pay availability varies by the buyer's country and the provider's own rules, and the checkout only shows options that buyer can use.
USDC, USDC.e and POL on Polygon are all credited and paid out in the token that arrived, never swapped. If less than the order total arrives, the checkout is marked underpaid and your store is told, so nothing ships by mistake.
Other tokens, or payments on other networks, can't be credited automatically. The checkout goes to review; contact us with the transaction hash and we'll look into it, though recovery isn't always possible.
Install the plugin or make one API call, paste your wallet, and you're live.