BEP-20 and TRC-20, live on mainnet

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

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.

  1. 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.

  2. 02

    We watch the chain

    A worker matches incoming transfers against the expected receiver and amount, and settles the payment the moment they match.

  3. 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.

POST /api/v1/payments
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
  }'
Webhook you receive
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.