iCareForex · Cashier
Deposits run automatically through NOWPayments end to end. Withdrawals stay on manual, admin-approved payouts by design. Here is each path, step by step.
Create an invoice, the client pays on-chain, a webhook credits the wallet.
Cashier → Deposit → Crypto → picks USDT TRC20 or BEP20, enters an amount, taps Get Deposit Address.
POST /api/payments/nowpayments/create-deposit
{ amount, network }
Backend calls NOWPayments POST /payment (with x-api-key). It returns a unique pay-address, the exact USDT amount, and a payment_id.
The cabinet shows the address + QR + exact amount. The client sends USDT from their own wallet or exchange.
POST /api/payments/nowpayments/ipn
Signature verified with HMAC-SHA512 (IPN secret) before anything is trusted.
On a confirmed / finished payment the main wallet is credited. Idempotent — deduped by nowpayments:<payment_id>, so a repeated webhook can't double-credit. Balance updates on its own.
A pending request is created, an admin reviews it, and the payout is sent by hand.
Cashier → Withdrawal → E-Wallet → enters an amount and picks a saved wallet address.
POST /api/wallet/withdraw
Status → PENDING. This path does not call NOWPayments.
An admin checks the request in the admin panel and approves it.
The crypto is sent manually. A NOWPayments payout API exists in the backend but is switched off.
NOWPAYMENTS_PAYOUTS_ENABLED = false. Turning them on needs the payout-account login, 2FA, and a whitelisted IP, because payouts move real money out.
The gateway is built and verified — but one deployment step gates live customer use.
Deposit endpoints are deployed and verified on api.icareforex.com — API key valid, IPN registered. Payouts gated.
The deposit UI that calls this lives in the rebuilt cabinet (the preview site). The old live cabinet still uses the previous HD-wallet flow — so no live customer routes through NOWPayments until the new UI ships to live.
On staging, create-deposit returns a mock address so the UI is testable without real money. The auto-credit webhook needs a public, writable backend to run.