Use the Console
- Open Balances in the Console and choose Add funds.
- Enter the USD amount. Use the returned beneficiary name, account details, and unique deposit reference when arranging the bank transfer.
- Wait for the deposit to be credited to your USD balance.
- Choose Convert & reserve, enter a USD amount, and select the payout currency. Submitting the request reserves USD immediately.
- Wait for Zennopay operations to confirm settlement of the quoted local amount. Check the available local balance before creating a payout.
ZPF-... reference; include it with the transfer so
Zennopay can match the receipt to your deposit.
Check balances with the API
All endpoints below use HMAC authentication and the base URL for your environment.account and balances. account is null when an
active funding account is unavailable. When present, it includes the bank
name, account name, USD currency, routing number, masked account number, and
status. Full transfer instructions are returned when you create a funding
request.
Each entry in balances contains:
All amounts are base-10 int64 strings in minor units. USD uses cents, VND uses
whole dong, and THB/PHP use hundredths. Read the entry for the payout currency;
do not combine currencies or use the USD balance to authorize a local payout.
Declare a USD deposit
"10000" means USD 100.00. The amount must be a positive int64 string without
decimals or leading zeroes. Idempotency-Key must contain 1–255 printable
ASCII characters.
A new request returns 201 Created with funding_request and
funding_instructions. Save funding_request.id and use these instruction
fields to arrange the transfer:
Creating the request records an expected deposit; it does not initiate a bank
transfer. Keep full account details in authorized treasury workflows.
Track the deposit with
GET /v1/funding_requests/{id}. The response wraps the
record in funding_request. GET /v1/funding_requests?limit=50 returns a
bounded { "data": [...] } list; limit accepts 1–100 and defaults to 50.
Wait for
credited and confirm the available USD balance before requesting
conversion. Existing deposits from the earlier automatic conversion flow may
have a VND destination; read the stored currency instead of assuming it.
Request conversion
VND, THB, or PHP as a destination currency. A usable quote,
settlement arrangement, and payout destination must also be enabled for your
account. An accepted currency code does not establish live payout coverage.
A new request returns 202 Accepted with conversion and replay: false.
The conversion records the source and destination amounts, currencies, FX
rate, ID, and status. Its initial status is reserved: USD is reserved, and
the local amount is awaiting operations settlement.
Use GET /v1/funding_conversions?limit=50 to track the record by its ID.
The response is { "data": [...] }; limit accepts 1–100 and defaults to 50.
There is currently no single-conversion GET endpoint.
Wait for settled, then read GET /v1/funding_overview again to verify the
available local balance. A pending request or quote is not spendable money.
If settlement remains unresolved or reports amount_mismatch, contact
support with the conversion ID and keep tracking the original request.
Retry and recover
For either create endpoint, identical input with the original idempotency key returns200 OK and Idempotent-Replayed: true. Reusing a key with different
input returns 409 idempotency_conflict. Generate a fresh HMAC timestamp,
nonce, and signature for every retry while preserving the business key.
Once local funds are available, continue with the
Platform Payouts quickstart.