Accepting payments
Accept USDT, BTC and more with a dedicated address and network.
Crypto payments
List active assets
bash
1curl https://paylinky.vercel.app/api/v1/crypto/assets -H "Authorization: Bearer $PAYLINKY_KEY"json
1[2 { "asset_code": "USDT.TRC20", "name": "Tether (TRON)", "network": "TRC20", "symbol": "USDT" },3 { "asset_code": "BTC", "name": "Bitcoin", "network": "BTC", "symbol": "BTC" }4]Use an asset_code from this list — never assume a network is active. Administrators can disable any asset (including Bitcoin) at any time.
Create a crypto payment
http
1POST https://paylinky.vercel.app/api/v1/crypto/collect| Field | Required | Description |
|---|---|---|
amount | Yes | Amount in USDT (string or number) |
currency | No | USDT (default) |
asset_code | Yes | From /crypto/assets |
customer.email | Yes | Payer email |
customer.firstName | Yes | Payer first name |
customer.lastName | Yes | Payer last name |
reference | No | Your order reference (idempotent) |
country | No | Payer country code |
notify_url | No | Webhook URL for this payment |
customer.email, customer.firstName and customer.lastName are mandatory. Never invent them — ask the payer.bash
1curl -X POST https://paylinky.vercel.app/api/v1/crypto/collect \2 -H "Authorization: Bearer $PAYLINKY_KEY" \3 -H "Content-Type: application/json" \4 -d '{5 "amount": "25",6 "currency": "USDT",7 "asset_code": "USDT.TRC20",8 "reference": "crypto_order_12345",9 "customer": { "email": "payer@example.com", "firstName": "Ada", "lastName": "Lovelace" }10 }'Response — 202 Accepted
json
1{2 "transaction_id": "7a1f…",3 "reference": "PLK-3QW8N5ZK2D",4 "merchant_reference": "crypto_order_12345",5 "status": "pending",6 "payment_method": "crypto",7 "amount": 25,8 "fee_amount": 0.5,9 "credited_amount": 24.5,10 "currency": "USDT",11 "asset_code": "USDT.TRC20",12 "network": "TRC20",13 "address": "T…",14 "memo": null,15 "amount_usdt": 25,16 "credited_amount_usdt": 24.5,17 "fee_amount_usdt": 0.5,18 "customer": { "email": "payer@example.com", "firstName": "Ada", "lastName": "Lovelace" },19 "sandbox": false,20 "expires_at": "2026-01-01T10:15:00.000Z"21}Address, memo and QR code
Show the address (and memo when present) and render a QR code in your app. The payer must send on exactly the returned network — a wrong network can make funds unrecoverable.
Expiry and confirmation
Addresses are temporary: a crypto payment still pending after 15 minutes (expires_at) becomes expired. Never reuse an expired address. The payment is complete only after the payment.completed webhook (or status: "success").