Accept USDC, with bank-grade checks.
Verification you can explain to an auditor
Every payment records the checks it passed and every event that changed it. No screenshots, no customer-submitted transaction hashes, no guesswork.
- Correct network
- Allowlisted token contract
- Correct recipient
- Exact amount
- 12 / 12 confirmations
- Allocated to one order only
Built for the edge cases
Exact quotes
The amount is calculated with exact decimal maths and rounded up to the token's precision, with a visible expiry.
Verified on-chain
Network, allowlisted token contract, recipient, successful execution and confirmations are all checked before an order is marked paid.
Exceptions handled
Underpayments wait for a top-up, overpayments are refunded, and wrong-network or late transfers go to review — never silently accepted.
One transfer, one order
A transfer is allocated to exactly one payment, so one payment can never settle two orders.
Refunds done right
Refunds go to a destination the customer confirms — not automatically to the sending address, which may belong to an exchange.
Same tools as card
Payment links, the API, webhooks, CSV exports and reconciliation work the same for crypto and card.
One line to add USDC
Use the same checkout API as card payments and restrict the session to USDC. Orion sends a signed webhook when the transfer is verified.
Sandbox only: networks are simulated and recipient addresses are non-payable placeholders. Live networks and assets depend on a provider supporting them for your business. Stablecoins are not guaranteed to hold their value. See the disclosures.
curl https://<orion-host>/v1/checkout-sessions \
-H "Authorization: Bearer sk_test_…" \
-H "Idempotency-Key: order-1043" \
-d '{ "order_reference": "NW-1043", "currency": "CAD",
"items": [{ "name": "Trail Pack", "quantity": 1, "unit_amount": 14900 }],
"amount": 14900,
"payment_methods": ["usdc"],
"return_url": "https://shop.example/thanks" }'