POST
/payment/createCreate a new crypto payment. Returns a unique deposit address where the customer sends funds. Each payment expires in 15 minutes.
data_objectRequest Body (JSON)
| Parameter | Type | Description |
|---|---|---|
| network | string | Blockchain network: ethereum, polygon, bsc, arbitrum, tron, solana, bitcoin |
| coin | string | Coin symbol: USDT, USDC, ETH, BTC, TRX, SOL, BNB, POL |
| amount | number | Payment amount (positive number). In the specified currency (default USD). |
| currency | string | Amount denomination currency. Default: "USD" |
| customer_email | string | Customer email for reference/notification |
| customer_wallet | string | Customer wallet address (for reference) |
| metadata | object | Custom key-value metadata attached to the payment |
Request example
cURL
curl -X POST https://api.paycrypt.io/payment/create \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-d '{
"network": "ethereum",
"coin": "USDT",
"amount": 50,
"currency": "USD",
"customer_email": "customer@example.com",
"metadata": { "plan": "pro", "user_id": "u-789" }
}'jsonResponse — 201 Created
{
"payment_id": "9515b51e-0279-4294-805d-91f7762914c3",
"order_id": "123",
"deposit_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD68",
"amount": 50,
"coin": "USDT",
"network": "ethereum",
"currency": "USD",
"expires_at": "2026-02-20T10:10:46.000Z",
"status": "pending"
}info
Order ID:
order_id is generated by PayCrypt for each payment (sequential per environment). You can use it in your UI and when calling GET /payment/status, but it is not sent in the request body.lightbulb
Merchant currencies: The
network and coin must be enabled in your Dashboard → Currencies settings. Otherwise, the API returns 400.info
Expiry: Payments expire after 15 minutes. If the customer does not send funds in time, the status changes to
expired and a payment.expired webhook is sent.