Payments infrastructure · USDT · USDC
Stablecoin payments for platforms.
Your sellers get paid in USDT and USDC on Polygon, BNB Smart Chain and Base. Every payment is split between seller, affiliate and your markup on a double-entry ledger, the moment it is confirmed. 0.50 % per confirmed payment.
HMAC-signed webhooks · Idempotency-Key on invoices and payouts
Test mode on Polygon Amoy, BSC Testnet and Base Sepolia

Halden Type, Oslo
90.00 of 102.50 USDT
Polygon PoS
paid 14:05:52 UTC
(example seller)
Split on confirmation
Posted 14:05:52 · double-entry · USDT
| DR | ASSET: | 102.50 |
| CR | LIABILITY: | 90.00 |
| CR | LIABILITY: | 10.00 |
| CR | LIABILITY: | 2.00 |
| CR | REVENUE: | 0.50 |
- Debits
- 102.50
- Credits · 90.00 + 10.00 + 2.00 + 0.50
- 102.50
Entry balances to the cent0.00
How a payment splits
Halden Type gets 90.00. We take 0.50.
Glyphyard, a type marketplace in Berlin, sells a 100.00 USD license by Halden Type, a foundry in Oslo. Kerning Weekly referred the buyer for 10 %, and Glyphyard adds a 2 % markup. Ana Prado pays 102.50 USDT on Polygon PoS. When the transfer reaches 64 confirmations, one balanced ledger transaction books every part.
Glyphyard, Halden Type, Kerning Weekly and Ana Prado are example data, not customers.
90.00 + 10.00 + 2.00 + 0.50 = 102.50USDT
paid by the buyer
- Halden Type · seller90.00USDT
- Kerning Weekly · affiliate · 10 %10.00USDT
- Glyphyard · your markup · 2.00 %2.00USDT
- Aliquot · processing fee · 0.50 %0.50USDT
- Every part is a percentage of the base price, computed in integer token units. The seller absorbs the rounding, so the parts always add up to the total.
- With fee_payer CUSTOMER the fee and your markup are added to the price. With MERCHANT the buyer pays 100.00 and both come out of the seller's share.
- Debits equal credits in every transaction, enforced by the database. Journal rows are append-only and a balance never goes below zero.
"fee_payer": "CUSTOMER",
"markup_percent": 2,
"merchant": "halden_type",
"splits": [
{ "account": "kerning_weekly",
"percent": 10 }
]What you integrate
Use one surface, or all of them.
Hosted checkout
A page at /pay/:id with an EIP-681 QR code, one-click payment from a browser wallet and live status until the receipt.
EIP-681 · live status · 30 min window
Headless API
Draw your own checkout. The invoice returns the deposit address, the exact total and the payment URI.
POST /api/v1/crypto/invoices
Payment links
A fixed-price product page at /l/:slug. Each payment opens a fresh invoice and can deliver a file, a secret or a redirect.
No code
Splits on a ledger
Seller, partners, your markup and our fee, booked as one balanced transaction per payment, per network and token.
Double-entry · append-only
Payouts with 2FA
Settled balances go to a wallet. Every payout from the dashboard needs a TOTP code; API keys that can pay out are stepped up when they are created.
TOTP step-up
Signed webhooks
invoice.paid, payout.completed, refund.claimable and more, signed with HMAC-SHA256 and retried. Invoices and payouts require an Idempotency-Key.
X-Webhook-Signature: t=…,v1=…
React embed
Render the checkout inside your own page instead of redirecting the buyer.
<CryptoCheckout />
Telegram Mini-App
The same checkout runs inside Telegram, for communities that sell there.
/pay/:id?tg=1
Pull refunds
Overpayments, expired partial payments and late transfers are held in escrow. The buyer claims them to a wallet they control through a private link.
Claimed, never sent back blind
Networks and confirmations
Three networks, two stablecoins. Credited at a fixed depth.
- Polygon PoS64conf.USDT · USDC · ~2 minTest mode: Polygon Amoy · USDC
- BNB Smart Chain15conf.USDT (BEP-20, 18 decimals) · ~45 sTest mode: BSC Testnet · USDT
- Base30conf.USDC · ~1 minTest mode: Base Sepolia · USDC
For developers
One request opens an invoice. A signed webhook tells you it is paid.
curl -X POST "$ALIQUOT_API/api/v1/crypto/invoices" \
-H "authorization: Bearer $ALIQUOT_KEY" \
-H "content-type: application/json" \
-H "idempotency-key: glyphyard-order-77310" \
-d '{
"amount": "100.00",
"currency": "USD",
"network": "POLYGON_AMOY",
"token": "USDC",
"fee_payer": "CUSTOMER",
"markup_percent": 2,
"merchant": "halden_type",
"splits": [{ "account": "kerning_weekly", "percent": 10 }],
"title": "Halden Grotesk — Desktop license, 5 seats",
"merchant_order_id": "glyphyard-order-77310"
}'
{
"id": "inv_01JB7Q8M3X4K9TPZ2R6WVN5HDC",
"status": "PENDING",
"livemode": false,
"network": "POLYGON_AMOY",
"token": "USDC",
"base": "100.00",
"platform_fee": "0.50",
"markup": "2.00",
"merchant_net": "90.00",
"total": "102.50",
"deposit_address": "0x2830693ddff50d883cef82754913ea80c3c0b72e",
"payment_uri": "ethereum:0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582@80002/transfer?address=0x2830693ddff50d883cef82754913ea80c3c0b72e&uint256=102500000",
"required_confirmations": 64,
"expires_at": "2026-10-26T14:32:11.000Z",
"pay_url": "https://checkout.example/pay/inv_01JB7Q8M3X4K9TPZ2R6WVN5HDC",
…
}
- Idempotency-Key is required. The same key and body return the same invoice with Idempotent-Replay: true; the same key with another body is a 409.
- Leave out network and token and send mode instead, and the buyer chooses on the checkout.
- POST /api/v1/crypto/quote returns the same breakdown without creating anything.
Pricing
0.50 %per confirmed payment.
No plans and no monthly fee. You pay when a payment is confirmed, and you add your own markup on top.
- Processing fee
- 0.50 % of the base price
- Your markup
- 0 to 20 %, credited to your platform account
- Who pays
- fee_payer CUSTOMER or MERCHANT, per invoice
- Payouts and refunds
- A flat network fee, deducted from the amount sent
On a 100.00 sale100.00 + 0.50
Get test keys. Open your first invoice on testnet.
Test mode runs on Polygon Amoy, BSC Testnet and Base Sepolia, with the same API, ledger and webhooks as live mode.