PIX checkout
PIX checkout is the rail where the buyer does not leave your site. They enter name and CPF, pay the QR, and USDT is delivered to the partner wallet on file.
Use this path when the person arrives ready to pay in BRL. The classic TRP checkout remains for buyers who already hold USDT and sign with TonConnect.
How it works
Section titled “How it works”- Your backend creates the checkout with the API key (
POST /v1/c). TRPgeneratedoes not open this rail. - You open or embed
https://api.tonramp.io/v1/c/{id}. - The buyer enters name and CPF (GOWD requires the real payer) and pays the PIX.
- The webhook sends
paidwhen PIX lands andcompletedwhen USDT arrives in your wallet. - Release the order only on
completed.
No Telegram, TON wallet or TonRamp account is required at purchase time.
Create the checkout
Section titled “Create the checkout”curl -X POST https://api.tonramp.io/v1/c \ -H "Content-Type: application/json" \ -H "Authorization: Bearer tonr_YOUR_API_KEY" \ -d '{ "amount": 10.00, "currency": "USDT", "tx_id": "order-001" }'Response (200):
{ "success": true, "id": "c_ab12cd34ef56ab78", "url": "https://api.tonramp.io/v1/c/c_ab12cd34ef56ab78", "tx_id": "order-001", "status": "pending", "amount_usdt": "10.000000", "amount_brl": "54.20", "needs_payer": true}tx_id is your order identifier. Creating again with the same tx_id reuses the active checkout.
Read status
Section titled “Read status”GET /v1/c/{id} in a browser serves the page (name, CPF, QR). With Accept: application/json or ?format=json it returns state:
| Field | Meaning |
|---|---|
status |
pending, paid, completed, error, expired, cancelled, refunded |
needs_payer |
name and CPF still required to issue the QR |
pix_copy_paste |
PIX copy-and-paste, after the QR is issued |
amount_brl / amount_usdt |
amount charged and USDT you receive |
POST /v1/c/{id}/pay with { "full_name", "document" } issues the QR. The hosted page already does this.
Iframe
Section titled “Iframe”<iframe src="https://api.tonramp.io/v1/c/c_ab12cd34ef56ab78" width="440" height="640" style="border: none; border-radius: 12px;"></iframe>Register https://yourdomain.com in the console. Otherwise the browser blocks the frame.