Installing the Binance provider
Activate the licence, add the API credentials, restart, enable the provider and verify the connection — in the order that avoids a green toggle over a dead connection.
There is no package to unzip by hand. Installing this product means five things, in order: activating the licence, installing the release from the Extension Manager, putting credentials where the backend can read them, restarting so it reads them, and switching the provider on.
The order matters. The enable switch stays disabled until the licence is activated, the release is not on the server until Install has been pressed and applied, and the credentials are only picked up at process start — so enabling before restarting gives you an active provider with no working connection.
Before you begin
- A working Bicrypto install — backend, frontend and cron running
- Your purchase code for Binance (product ID
38650585), from your MashDiv dashboard - A Binance account with API access and identity verification completed
- The public egress IP of the server, not the IP your domain resolves to
- Shell access to the project root, to edit
.env, runpnpm updatorand restart processes - Admin panel access with the
edit.exchangeandcreate.licensepermissions
1. Activate the licence
Open Admin → System → Extension Manager and switch to the Exchanges tab,
or go straight to /admin/system/extension?type=exchange. The page heading is
Add-ons & Integrations; every exchange provider is a card in the grid,
carrying its version, a licence chip and an enable switch. Until the licence is
activated the Binance chip reads Activate and the switch is disabled — its
tooltip reads Activate license first. Click the card to open the product
page.
- The Binance card — click it to open the product page
- KuCoin, like every other provider, reads Activate — only one exchange can be on at a time
On the product page press Activate License. The licence screen — Secure
License Activation, heading Activate Your License — shows the product
name and Product ID 38650585. On the Purchase Code tab paste the code
from your MashDiv dashboard, optionally an email address for update
notifications, and press Activate License. The screen confirms License
Activated! and returns you to the product page a couple of seconds later.
If the server has no outbound access, use the License File tab on the same
screen instead: download the licence certificate from your MashDiv dashboard,
place it as license.txt in the lic folder at the project root, and press
the button on that tab. The tab shows the Expected Product ID it will
accept.
- Paste the purchase code here
- Activate License — then wait for the redirect back to the product page
- The License File tab, for a server with no outbound HTTPS
- The Product ID — it must read 38650585
Activation writes the machine-bound licence file lic/38650585.lic under the
project root; keep that folder in your backups, because a restore or redeploy
that loses it leaves the provider reporting itself unlicensed on the next page
load (Troubleshooting covers that case).
2. Install the release
Back on the product page — now the licensed view, with Licensed and Inactive chips, an Enabled/Disabled switch in the heading and the Overview, Releases and Capabilities tabs — the Overview tab has a release panel showing Current Version. When the licence server has a newer build than the one recorded on this install it reads Update Available with a Latest Version line and an Install v… button. Press it. If the panel says Up to date on a provider you have only just licensed, press Check for Updates once — it asks the licence server again instead of reading the ten-minute cache — then install whatever it offers. The Releases tab holds the notes for the version being offered; read them first.
Install downloads that version from the licence server, verifies its SHA-256 and extracts it over the project root. It runs no migrations, installs no dependencies, builds nothing and restarts nothing, so finish it from a shell on the server:
pnpm updatorThat is the finalise chain — stop, dependencies, schema, seed data, frontend build, start. Updates are applied one version at a time; if several are pending the panel offers the next one and re-checks after each. If the panel still says Up to date after the check there is nothing to download — the release already on the server is current — and you move on to the API key.
- Check for Updates, then Install v… when it is offered
- Releases — the notes for the version you are about to install
- The Enabled switch — step 6, not yet
3. Create the Binance API key
Do this before you touch .env. The permissions and the IP allowlist decide
which half of the platform works, and getting them wrong produces failures that
look like configuration errors rather than permission errors.
Full walkthrough: Binance API keys.
4. Add the credentials
Both variables go in the project root .env. Binance uses a two-part
credential — there is no passphrase, unlike KuCoin.
APP_BINANCE_API_KEY="your_api_key"
APP_BINANCE_API_SECRET="your_api_secret"The backend never contains those literal names. It builds them from the active provider's alias:
APP_${PROVIDER}_API_KEY
APP_${PROVIDER}_API_SECRET
APP_${PROVIDER}_API_PASSPHRASESo the connector reads APP_BINANCE_API_KEY because the provider alias is
binance. A typo in the variable name is indistinguishable from a missing key:
the connector logs that credentials are missing and falls back to a public
connection.
There is one more variable, and it is not what most people assume:
5. Restart the backend
.env is read once, at process start. The connector also caches one live
Binance instance per provider name for the lifetime of the process, so editing
credentials without a restart changes nothing at all. (pnpm updator in step 2
restarted everything too — but that was before .env held the keys.)
pm2 restart backend cronRestart cron as well. The currency price job, the deposit verifier and the
withdrawal reconciler all build their own connections in that process.
6. Enable the provider
Back on Admin → System → Extension Manager → Exchanges, turn the switch on
the Binance card on — it is usable now that the licence is verified. The
Enabled switch in the heading of the product page is the same control.
This is what makes Binance the platform's active exchange: Admin → Finance →
Exchange Providers now shows it as the active provider, and the spot trading,
deposit and withdrawal paths build their connections against it. From now on
clicking the Binance card in the Extension Manager opens that hub rather than
the product page, which stays reachable at /admin/system/extension/38650585.
Two behaviours to expect:
- Until the licence is activated the switch is disabled (Activate license
first), and a direct call to the endpoint answers 403 with
licenseRequired: true— the provider stays off. - Enabling Binance disables KuCoin and XT in the same action; only one exchange provider can be active. If you are migrating between providers, the switch is atomic but the market and currency data are not — see Currencies and markets.
Turning Binance off later is the same switch. It leaves the licence in place, so switching it back on needs no reactivation.
7. Verify the connection
Open Admin → Finance → Exchange Providers (/admin/finance/exchange) and
press Verify Credentials.
The check does three things in sequence, and each one can fail differently:
-
Synchronise the clock — it brackets a
fetchTimecall to measure drift against Binance's clock, then signs from just behind the server. A failure here does not stop the check; it falls back to signing a full second behind. -
Load markets — this is the first real request. A blocked region answers HTTP 451 and the screen tells you to configure a proxy.
-
Fetch the account balance — the only step that proves the key and secret are valid and that the request came from an allowlisted IP.
A green result means reading works. It does not prove that withdrawals will: the withdrawal permission is never exercised until the first real payout.
8. If your server's region is blocked
Binance refuses connections from some regions with HTTP 451, and the verify screen recognises it: "Your server's location is blocked by this exchange."
The provider supports an outbound proxy, configured per provider in the
Settings tab of the exchange provider hub. http://, https://,
socks4:// and socks5:// are all accepted, with optional credentials in the
URL.
- Open the Settings tab
Two consequences worth planning for. The proxy's IP — not your server's — is what reaches Binance, so that is the address to put on the key's allowlist. And any credentials embedded in the proxy URL are masked before the provider is returned to the browser, so the field you see is not the value that is stored.
Without a proxy the connector forces IPv4 on its outbound agent. That is deliberate: exchange IP allowlists are IPv4, and a dual-stack box that happens to prefer IPv6 presents an address that was never allowlisted.
What is still missing
An enabled, verified provider has no markets. Nothing is tradable until you import currencies and markets and then enable individual pairs.