Skip to Content
PYUSDPYUSD — One-time payments (Ethereum)

PYUSD — One-time payments (Ethereum)

Base URL

https://api.transacty.ai

Summary

Accept one-time PYUSD payments on Ethereum. The payer sends PYUSD to a deposit address. When settlementStatus is settled, Transacty credits your PYUSD USDC wallet (PYUSD-USDC) once — a dedicated pocket, separate from Europe USDC.

There is no merchant PYUSD withdraw in this phase. EUR payouts cannot debit PYUSD-USDC. Do not treat PYUSD as settling to your Europe USDC wallet.

Live only

Tekko has no sandbox. Use a live API key. Requests with a test key return 503 { "code": "payment_unavailable" }.

Settlement & credit rule

CollectPayer sends PYUSD on Ethereum to depositAddress
SettleWhen settlementStatus is settled, Transacty credits PYUSD-USDC once (display PYUSD USDC)
SpendNo merchant PYUSD / PYUSD-USDC withdraw in this phase. EUR payouts cannot debit this pocket
Live onlyTekko has no sandbox. Use a live API key. test503 payment_unavailable
Marketpyusd must be approved
  • Transactions appear on the pyusd rail.
  • USDC (Europe) and PYUSD-USDC are different pockets. List them separately on GET /v1/balance items[].

Enable the pyusd market first. Until the market is KYB-approved, /v1/pyusd/* returns 403 (market_not_enabled).

Limits

  • Minimum amount: 1 PYUSD
  • Maximum amount: 500,000 PYUSD per intent
  • Scope: payin:create
  • Idempotency-Key required on create

Required headers

Every request uses HMAC authentication (same scheme as all /v1/* endpoints):

  • X-Transacty-Key
  • X-Transacty-Timestamp (Unix seconds)
  • X-Transacty-Signature = HMAC-SHA256(secret, "{timestamp}.{rawBody}")
  • Content-Type: application/json
  • Idempotency-Key (required on create — money write)

Required scope

  • payin:create

Merchant flow

StepMerchant serverTransacty API
1Create payment intentPOST /v1/pyusd/payment-intents
2Show depositAddress + amount (QR / copy). Network is always Ethereum
3Payer sends PYUSD
4Poll or wait for webhookGET /v1/pyusd/payment-intents/:transactionId
5Mark the order paid only when settled is true (or settlementStatus is settled)

Do not treat “customer sent crypto” as credited.

Webhook events

When a webhook URL is configured, Transacty sends:

  • payin.completed — PYUSD-USDC credited (currency: "PYUSD-USDC", paidAmount = net credited)
  • payin.failed — expired or failed intent

See Webhooks for signature verification.

Next steps

Last updated on