Heleket
Custodial crypto payments through Heleket, the invoice opens in the panel currency, the customer pays in the coin of their choice.
What you need
In the Heleket dashboard create your merchant under Business → Merchants; once domain verification and moderation are done, from the merchant's Settings tab:
merchant_uuid: the Merchant ID (a UUID)api_key: the Payment API key (not the payout key; they are separate)
In your panel choose Settings → Payments → Add method → Heleket and enter both.
Heleket has no sandbox; requests always go to api.heleket.com. The test-mode box has no effect for this method.
Webhook URL
The panel attaches its own webhook URL (url_callback) to every invoice it creates; nothing has to be configured in the Heleket dashboard:
https://<your-panel-domain>/payments/heleket/callback
This is a server-to-server notification from Heleket, not the customer's browser. The sign field inside every notification is verified with your API key; a request whose signature does not match is rejected and credits nothing. Heleket sends webhooks from 31.133.220.8; you may restrict your firewall to that address if you wish (the panel checks the signature, not the IP).
Flow
- The customer enters an amount and picks Heleket.
- The panel opens a Heleket invoice in your panel's currency (
TRY,USD…) with the payment's reference as the order id. - The customer is sent to Heleket's hosted payment page, picks the coin and network there, and Heleket converts the amount into that coin.
- When the payment is confirmed on chain Heleket sends the webhook; the signature is verified and the balance is credited with the invoice amount. An overpayment (
paid_over) stays on your Heleket balance. - The customer returns to "Add funds" (success / failure). The return page never credits; only the webhook does.
The invoice stays open for one hour. If the customer sends too little the first time they can send the remainder to the same invoice (is_payment_multiple); a shortfall of up to 1% still counts as paid (accuracy_payment_percent).
A notification delivered twice (Heleket's "resend" feature) is ignored; balance is never credited twice.
Statuses
| Heleket status | In the panel |
|---|---|
paid, paid_over |
completed, balance credited |
wrong_amount |
underpaid, nothing credited; visible under Admin → Payments |
cancel, fail, system_fail |
failed (reason in the payment memo) |
locked |
on hold. Heleket AML review, funds locked |
check, process, confirm_check, wrong_amount_waiting, refund_* |
pending |
On an underpayment the amount sent is in the coin; it can be expressed in the invoice currency only when the invoice is in USD (payment_amount_usd) or already in that coin. Otherwise the coin amount is written to the payment memo.
Currencies
The invoice currency is your panel's currency. Heleket's documentation accepts a fiat code (USD) or a crypto code as the invoice currency; Heleket's exchange-rate list also includes other fiat currencies such as TRY, EUR and RUB. The customer can pay on: BTC, ETH, LTC, BCH, DASH, DOGE, XMR, SOL, TRX, TON, BNB, AVAX, POL and USDT / USDC / DAI (Ethereum, Tron, BSC, Polygon, Arbitrum, Avalanche, Solana, TON).
If Heleket answers "The currency was not found", an invoice cannot be opened in that currency; switch your panel currency to USD or ask Heleket support.
Common problems
- "You are forbidden": merchant moderation is not finished or payments are disabled; check the merchant's status in the Heleket dashboard.
- "Wallet not found": no active merchant wallet for that coin on Heleket; enable the wallets under Heleket → Merchants.
- "Minimum amount … USDT": the amount is below Heleket's floor for that coin; try a larger amount.
- Paid but no balance: look at the record's status under Admin → Payments.
pendingmeans chain confirmations are still awaited;underpaidmeans too little was sent. If the record never changed at all, theapi_keyis wrong (the signature fails, so the notification is rejected). Heleket's "Testing webhook" endpoint can send a test notification to your panel URL.
FollowerHQ