Create Payment Intent (PYUSD)
POST
/v1/pyusd/payment-intentspayin:createCreate a one-time PYUSD payment intent on Ethereum. Idempotency-Key is
required (money write). Live API keys only — Tekko has no sandbox. test keys
return 503 payment_unavailable.
Request fields
| Field | Type | Required | Description |
|---|---|---|---|
amount | string (numeric) | Yes | PYUSD amount. 1–500000. |
merchantReference | string | Yes | Your order / reference id (max 128 characters) |
expiresInMinutes | number | No | Intent TTL in minutes. 5–1440, default 30 |
metadata | object | No | Opaque object echoed upstream |
Example
Request
{
"amount": "25.00",
"merchantReference": "order-4821",
"expiresInMinutes": 30,
"metadata": { "orderId": "4821" }
}Response fields
| Field | Type | Description |
|---|---|---|
transactionId | string | Primary id — use for status poll and support |
paymentIntentId | string | Upstream / Tekko payment intent reference |
status | string | e.g. awaiting_payment after create |
settlementStatus | string | Settlement lifecycle — credit PYUSD-USDC only when settled |
amount | string | Requested PYUSD amount |
currency | string | PYUSD (what the payer sends) |
settlementCurrency | string | Always PYUSD-USDC |
settlementCurrencyLabel | string | Display label: PYUSD USDC |
network | string | Always ethereum in this phase |
depositAddress | string | Ethereum address the payer must send PYUSD to |
expiresAt | string (ISO datetime) | When the intent expires |
environment | string | live |
Show the payer the depositAddress and amount (QR and/or copy button).
Network is always Ethereum. Do not treat create as settled — wait for
settled: true or settlementStatus: "settled" via
status poll or payin.completed. Do not treat “customer
sent crypto” as credited.
Next steps
Last updated on