USDT (Binance)
Where in the admin: Finance › Payment channels › USDT (
/payments/usdt). Switch and fee: Finance › Payment channels › Fees & limits (/payments/fees). Unmatched deposits: Finance › Payment channels › Gateway events › PayPal & USDT (/payments/events?tab=gateways).
What it does
Customers send USDT to your Binance deposit address; NexCMP reads the deposit history through a read-only Binance API key and credits the wallet when a deposit matches an open request. There is no payment-processor fee on your side other than what Binance charges, and no private keys are ever held by NexCMP.
Requirements
| Item | Requirement |
|---|---|
| Binance account | A verified Binance account with USDT deposits enabled on the network you choose. |
| API key | A Binance API key with Enable Reading only. Enable Withdrawals, Internal Transfer and Spot/Margin Trading must be off. |
| IP restriction | Strongly recommended: restrict the key to the server's outbound IP (the Test & verify address dialog shows it). |
| Network | Outbound HTTPS to api.binance.com. No inbound port is needed. |
| Supported networks | TRX (Tron, TRC20), BSC (BNB Smart Chain, BEP20), SOL (Solana), ETH (Ethereum, ERC20). Coin is fixed to USDT. |
| Dependencies | None. |
Choose the network once
Customers who send on the wrong network lose the funds. Pick the network with low fees that your customers' exchanges support (TRX and BSC are the usual choices), and do not change it often.
Prepare the infrastructure
- In Binance open Account › API Management and create a new API key (system generated). Give it a label such as "NexCMP".
- Edit the permissions: leave only Enable Reading checked. Do not enable withdrawals, transfers or trading.
- Under Restrict access to trusted IPs only add the public IP address of your NexCMP server. If you do not know it yet, create the key without the restriction, run the first test in NexCMP (it prints the outbound IP) and then add the IP.
- Copy the API key and Secret key (the secret is shown only once).
- Open Wallet › Deposit › Crypto, choose USDT and the network you will use, and copy the deposit address (for example a
T...address on TRX or0x...on BSC/ETH).
Connect in NexCMP
- Open Finance › Payment channels › USDT (
/payments/usdt). - In API key (Binance › API Management) paste API key and API secret. Both must be entered together.
- In Deposit address choose the Network and paste the USDT deposit address on the selected network. The format is checked against the network (
T+ 33 characters for TRX,0x+ 40 hex characters for BSC and ETH, base58 for SOL). - Click Save. Changing the address or network resets the verification and pauses the channel until you verify it again; the page asks you to confirm.
- Click Test & verify address. (Unsaved changes are refused — the check runs on the saved configuration.) The dialog shows:
- key permissions (reading, withdrawals, internal transfer, trading, IP restriction) — red warnings for dangerous permissions;
- the server's outbound IP (to enter in Binance);
- the network (deposits open or closed, required confirmations, dust);
- the address Binance issues for that network and whether it matches yours.
- When the address matches, NexCMP records the verification time. Only then can you open Fees & limits, turn on USDT (Binance), check USDT fee % (default 1) and USDT request expires after (mins) (5–180, default 30), and click Save channels & fees.
How a payment is matched
- The customer enters an amount in Billing › Deposit › USDT and clicks Get deposit address.
- NexCMP creates a request and shows the address, the network and an exact amount with six decimals — for example
19.173742. The last four decimals are a random nonce that makes the amount unique to that request. - The customer must send exactly that amount on that network. A payment that does not match (rounded amount, wrong network) cannot be assigned automatically.
- Every 60 seconds NexCMP reads the last 24 hours of Binance deposits. A matching deposit moves the request to confirming and, once Binance has the required confirmations, credits the wallet. A request that has seen funds never expires while confirmations are pending.
- A request not paid within the expiry time (default 30 minutes) is marked expired.
Verify
- After the address is verified and USDT is switched on, sign in as a test customer and request a small deposit (the minimum top-up).
- Send the exact amount from another wallet or exchange. Allow a few minutes.
- The portal shows Transfer seen — confirming, then USDT received — balance updated.
- The USDT page shows a recent Last poll time and Unmatched at 0.
Limits & notes
- Rate. 1 USDT = 1.00 USD. The fee in USDT fee % is shown to the customer and either deducted from or added to the amount depending on Customer pays top-up fee.
- No refunds. USDT payments are never refunded to the source by NexCMP (HTTP 409
usdt_no_refund). Refund manually outside the system if you must. - Pending limit. A customer has a limited number of open requests; beyond that the server answers
too_many_pending(HTTP 429). - Resellers can use their own Binance account; see Resellers.
- If you share the Binance account with another system, give each system a different network so two pollers never see the same deposit.
Unmatched deposits
A deposit that matches no request (wrong amount, wrong network, expired request) creates a deposit.unmatched event and an admin alert. Open Payment channels › Gateway events › PayPal & USDT, find the event, check the transaction on Binance and click the assign action to credit the correct customer. The Unmatched counter on the USDT page and on the channels overview drops to 0 afterwards.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| "API key and secret must be entered together" | Only one field filled | Fill both. |
| "Address is not in the format of network ..." | Address does not fit the selected network | Re-copy it from Binance for the same network. |
| "Unsaved changes — Save first then Test" | Test runs on saved settings | Click Save, then test. |
| Warning "key has Enable Withdrawals" | Excess permission | Remove it in Binance API Management. |
| Warning "key not restricted to IP" | ipRestrict is off | Add the server's outbound IP shown in the dialog. |
| Warning "key lacks Enable Reading" | Permission missing | Enable Reading. |
| Warning "Binance has deposits disabled for USDT on the network" | Network suspended | Choose another network or wait. |
| "DANGER: configured address differs from the address Binance issues" | Wrong address or network | Copy the address again from Binance for that network. |
| USDT switch greyed out in Fees & limits | Address not verified | Run Test & verify address until it matches. |
| Customer paid, nothing credited | Rounded amount or wrong network | Find the event in Gateway events and assign it by hand. |
| Deposit seen but waiting a long time | Not enough confirmations yet | Wait; the request does not expire while confirming. |