Stablecoin payments you can actually trust
One REST call creates a payment. We watch the chain, match the amount and receiver, and deliver a signed webhook the moment a transfer settles — with retries until your endpoint answers.
Forypay is a developer API for creating and verifying USDT payments on BSC and TRON.
- < 3s
- Detection latency
- 2
- Networks
- Backoff
- Webhook retries
pay_8Fq2mZx1LrKd
25.00 USDT
- Transfer detectedblock 42,181,905 · 0.8s
- Amount + receiver matchedexact match · 25.00 USDT
- Verified on chainsettles at once · no confirmation wait
- Webhook deliveredpayment.confirmed · 200 OK
What you get
The unglamorous parts of crypto payments, handled
Reorgs, partial payments, duplicate transfers, dead webhook endpoints. The failure modes that only show up in production are the ones we built this around.
One call to create a payment
POST an order id, amount, receiver and network. You get back a payment id and an expiry — no chain plumbing on your side.
Signed webhooks with retries
payment.detected, payment.confirmed and payment.expired are delivered with an HMAC signature and retried with exponential backoff until your endpoint returns 2xx.
BSC and TRON in one API
BEP-20 and TRC-20 token transfers behind a single interface, with per-network adapters handling the differences in address format and log decoding.
Settles the moment it is detected
A transfer that appears in a chain log is already accepted by the network, so it settles at once. No confirmations to wait on, no threshold to tune, nothing to release late.
Exact amount only
A payment settles only when a transfer matches its expected amount exactly — no more, no less. Underpaid, overpaid and duplicate transfers are never auto-credited — they are recorded for manual handling, and unpaid payments expire automatically.
Idempotent by design
Send an Idempotency-Key header and a retried create returns the original payment instead of a duplicate — safe to call from an unreliable network.
Integration
Two endpoints and a webhook handler
No SDK to install and no chain node to run. If your stack can make an HTTPS request and receive one, you are done in an afternoon.
- 01
Create the payment
Tell us the order, the token, the receiving address and the expected amount. A matching transfer settles it on its own — no threshold to tune.
- 02
We watch the chain
A worker matches incoming transfers against the expected receiver and amount, and settles the payment the moment they match.
- 03
You get a signed webhook
Verify the HMAC signature, mark the order paid, and move on. Failed deliveries retry with backoff until your endpoint answers.
curl https://your-host/api/v1/payments \
-H "Authorization: Bearer $FP_API_KEY" \
-H "Idempotency-Key: order-1042" \
-H "Content-Type: application/json" \
-d '{
"order_id": "ORDER-1042",
"network": "bsc",
"receiver": "0x2f1a…9c3e",
"amount": "25.00",
"expires_in": 1800
}'POST /your/webhook
Content-Type: application/json
X-Forypay-Event: payment.confirmed
X-Forypay-Delivery: whk_3Kd9vQ2mTz
X-Forypay-Timestamp: 1755820800
X-Forypay-Signature: sha256=6f1b…a92c
{
"event": "payment.confirmed",
"data": {
"payment_id": "pay_8Fq2mZx1LrKd",
"order_id": "ORDER-1042",
"network": "bsc",
"token": "USDT",
"amount": "25.00",
"transaction_hash": "0x9d4c…7b21",
"status": "CONFIRMED"
}
}Verify your first payment today
Create a project, generate a test key and watch a testnet transfer settle the moment it is detected. No card required.