Environments
Last updated: 2026-08-30
The Merchant API uses one public base URL:
https://merchants-api.tcpay.io
There is no separate development API host. Live and sandbox traffic use the same URL and are isolated by the financial realm selected by the API key.
| Realm | Key format | Use it for |
|---|---|---|
live | pk_prod_* / sk_prod_* | Real customer payments, balances, and webhook deliveries |
sandbox | pk_test_* / sk_test_* | Isolated integration testing and test data |
The realm is selected by the key, not by a different hostname. Use the same API URL with the key set for the realm you intend to access. See Authentication for public-key and secret-key permissions. The Merchant Portal uses the same Live and Sandbox split for API credentials and webhook configuration.
All endpoints are relative to the base URL. Paths are versioned per endpoint, so use the exact path shown in the relevant API reference instead of inferring one version for the whole API. For example:
- discovery and payment-flow operations currently use
/merchant/api/v1/...; - balance reads use
GET /merchant/api/v2/balancesandGET /merchant/api/v2/balances/history.
Use Coverage for the product market list. Available countries, currencies, and method families can differ by realm and merchant account.
Orange direct pay-ins in the nine markets listed in
Orange OTP continuation use that OTP
flow when the create response returns isOtpAuthRequired: true. Availability
is account- and realm-specific: use ORANGE only when discovery returns it for
the current account and realm. There is no separate Orange OTP activation.
Start discovery with these endpoints:
GET /merchant/api/v1/catalogGET /merchant/api/v1/payins/banksGET /merchant/api/v1/payins/mmoGET /merchant/api/v1/payouts/banksGET /merchant/api/v1/payouts/mmo
Call GET /merchant/api/v1/catalog first to retrieve the markets enabled for your account. Then call the bank and operator discovery endpoints for the country, method, and request context you plan to use. Use Payment methods, Mobile money, and Flows to build the final request shape for your integration.
The API accepts customerSegment on payout discovery requests for request consistency. Use the same segment value in discovery and creation when your integration classifies customer traffic by segment.