---
title: "Crypto payment for an order — deposit address or hosted checkout"
method: POST
path: "/api/public/create-heleket-payment"
---

# Crypto payment for an order — deposit address or hosted checkout

`POST /api/public/create-heleket-payment`

## Request

- Base URL: `https://blinkcodes.com`
- URL: `https://blinkcodes.com/api/public/create-heleket-payment`
- Auth: none declared

Crypto (stablecoin) checkout — the payment rail available to agents. Send to_currency (and usually network) to pin the invoice to one coin: the response then carries a deposit address, the exact amount and an expiry, so a wallet can settle it with a plain on-chain transfer and no browser. Omit them and you only get url, a hosted page where a human picks the coin. Payment is detected by webhook and fulfillment starts automatically — poll getOrder either way. MINIMUM 1.00 USD per order: anything cheaper is rejected with error=amount_too_low and needs a different rail — listPaymentMethods names the rails this site serves and each one's floor. Not every coin/network pair is payable here either, so call it first rather than guessing. Card rails exist for humans on the website and are not part of this API.

## Request body

- object
  - `order_id` string, required
  - `locale` string
  - `to_currency` string: Coin to pin the invoice to. Required to get a deposit address back.
  - `network` string: Chain for to_currency, case-insensitive. This is the payment gateway's coin list, not the store's asset list — a pair missing here may still be settleable on another rail. USDT on bsc and tron are known good for this endpoint. listPaymentMethods returns the pairs that currently work with their per-chain limits, plus the other rails and what each settles in.

## Response `200`

Payment instructions. address and its siblings are present only when to_currency pinned the invoice; treat an absent address as 'hosted page only'.

- object
  - `url` string, uri, required: Hosted checkout page. Always present.
  - `address` string: On-chain deposit address — send pay_amount of pay_currency here
  - `network` string: Chain the address lives on
  - `pay_currency` string: Coin to send, e.g. USDT
  - `pay_amount` string: Exact amount to send, decimal string. Underpaying leaves the order unpaid.
  - `expires_at` integer: Unix seconds after which the address stops being watched

## Other responses

- `400`: Order not pending, order total below the 1.00 USD crypto minimum (error=amount_too_low, with min and a methods link), or a to_currency / network that is malformed or not payable (code=unsupported_coin_network) — read methods and retry with a listed pair.

---

[API](https://skmtc.dev/blinkcodes/apis/blinkcodes-public-api.md) · [All operations](https://skmtc.dev/blinkcodes/apis/blinkcodes-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blinkcodes/apis/blinkcodes-public-api/revisions/75fa0cacacc2?raw)
