RombPay Company API Documentation
The Company API is built for B2B integrations: programmatic TRON wallet creation, TRX and USDT (TRC20) transfers with energy optimization for stablecoin flows, transparent billing against your API key balance, and an audit trail of operations. Every endpoint requires a valid credential pair sent as HTTP headers.
Access and support
API key provisioning (your X-Client-Id and X-Client-Api-Key), TRX balance top-ups for billing, and integration support are handled exclusively by RombPay support — there is no public self-service signup for these credentials.
Contact us on Telegram: @finkonory. Share your company name, expected volumes, and use case (TRX, USDT, or both) — we will issue credentials and onboarding terms.
Response format
Successful calls typically return { "code": 0, "msg": "OK", "result": ... }. The result field carries the payload. Auth and validation errors often omit the code wrapper — rely on the HTTP status and response body.
Interactive OpenAPI (Swagger UI): https://api.rombpay.io/docs. This page focuses on business behaviour and copy-paste examples for implementers.
API base URL
All Company API routes live under the /v1/api prefix on the host below.
https://api.rombpay.io/v1/api/...Authentication
Send two headers on every request. The X-Client-Api-Key value is the exact 32-character key stored for your account (alphanumeric), not a hash. No separate internal API key is required for these routes.
X-Client-Id: <10_DIGIT_CLIENT_ID>
X-Client-Api-Key: <32_CHAR_API_KEY_SAME_AS_IN_DB>
Content-Type: application/json (for POST with body)In curl, do not break the key value across lines inside quotes — libcurl will reject the request.
Pricing and balance
POST /v1/api/wallet/generate— 0 TRX debited from the API key balance; the job is logged with price_trx = 0.POST /v1/api/transactions/execute— for USDT, after a successful energy prepare plus transfer, 6.5 TRX is debited from the key balance (commercial terms can be agreed at onboarding); for TRX, the key balance is not charged — the response returns chargedTrx: "0"; the TRON network still collects fees from the sender wallet.
Balance checks and HTTP 402 apply only when asset is "usdt".
Endpoints
Generate TRON wallet
POSThttps://api.rombpay.io/v1/api/wallet/generate
OpenClose
Generate TRON wallet
POSThttps://api.rombpay.io/v1/api/wallet/generate
Creates a fresh TRON keypair and returns address, public key, and private key. Increments the key's wallet generation counter and appends a wallet_generate job (success, zero price) to api_jobs.
Request
curl -X POST "https://api.rombpay.io/v1/api/wallet/generate" \
-H "X-Client-Id: <10_DIGIT_CLIENT_ID>" \
-H "X-Client-Api-Key: <32_CHAR_KEY_AS_IN_DATABASE>"Success response
{
"code": 0,
"msg": "OK",
"result": {
"address": "TFPTizeJ9J1WJDaBz1f7gyjPW7lybfrFHk",
"publicKey": "<PUBLIC_KEY>",
"privateKey": "<PRIVATE_KEY>"
},
"priceTrx": "0"
}Error example
{
"error": "Unauthorized"
}Execute transfer (TRX or USDT)
POSThttps://api.rombpay.io/v1/api/transactions/execute
OpenClose
Execute transfer (TRX or USDT)
POSThttps://api.rombpay.io/v1/api/transactions/execute
Single entry point for native TRX and USDT TRC20. For USDT the server delegates energy to the sender, then builds and broadcasts the TRC20 transfer. For TRX a standard native transfer is broadcast.
Request body (JSON)
| Field | Description |
|---|---|
| fromPrivateKey | Sender wallet private key (hex, 64 characters). Send over HTTPS only; handle storage and logging per your security policy. |
| toAddress | Recipient TRON address (base58). |
| amount | Amount: for USDT, token units (e.g. 10.08 USDT); for TRX, in TRX. Must be positive. |
| asset | trx — native TRX transfer. usdt — TRC20 USDT (energy preparation via RombPay, then contract call). |
| minTariff | Optional, USDT only: integer 1 or 2 — energy rental tier (higher tier, more energy headroom). Defaults to 1. |
Two curl examples below: USDT (with minTariff) and TRX (minTariff omitted).
Request
# USDT
curl -X POST "https://api.rombpay.io/v1/api/transactions/execute" \
-H "X-Client-Id: <10_DIGIT_CLIENT_ID>" \
-H "X-Client-Api-Key: <32_CHAR_KEY_AS_IN_DATABASE>" \
-H "Content-Type: application/json" \
-d '{
"fromPrivateKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"toAddress": "TRFUoibJ8J7TREaAz2y6gtxRE4llstiTMo",
"amount": 10.08,
"asset": "usdt",
"minTariff": 1
}'
# TRX
curl -X POST "https://api.rombpay.io/v1/api/transactions/execute" \
-H "X-Client-Id: <10_DIGIT_CLIENT_ID>" \
-H "X-Client-Api-Key: <32_CHAR_KEY_AS_IN_DATABASE>" \
-H "Content-Type: application/json" \
-d '{
"fromPrivateKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"toAddress": "TRFUoibJ8J7TREaAz2y6gtxRE4llstiTMo",
"amount": 1.5,
"asset": "trx"
}'Success response
{
"code": 0,
"msg": "OK",
"result": {
"txHash": "<TX_ID>",
"from": "<SENDER_BASE58>",
"chargedTrx": "6.5",
"balanceTrx": "93.5"
}
}Error example
{
"error": "Insufficient API key balance",
"requiredTrx": "6.5",
"balanceTrx": "2.0"
}API key balance and counters
GEThttps://api.rombpay.io/v1/api/balance
OpenClose
API key balance and counters
GEThttps://api.rombpay.io/v1/api/balance
Returns billing state for the authenticated API key.
| result field | Meaning |
|---|---|
| balanceTrx | TRX remaining on the key (debited only for successful USDT executes at the agreed rate). |
| walletsGeneratedCount | How many successful wallet/generate calls were made with this key. |
| transactionsCount | Count of successful billed USDT executes (increments when the key balance is charged). TRX-only executes are not counted here. |
| spentTrxTotal | Cumulative TRX debited from the key for USDT operations. |
| lastUsedAt | Last key usage timestamp (ISO 8601), or null. |
Request
curl -X GET "https://api.rombpay.io/v1/api/balance" \
-H "X-Client-Id: <10_DIGIT_CLIENT_ID>" \
-H "X-Client-Api-Key: <32_CHAR_KEY_AS_IN_DATABASE>"Success response
{
"code": 0,
"msg": "OK",
"result": {
"balanceTrx": "93.5",
"walletsGeneratedCount": "12",
"transactionsCount": "1",
"spentTrxTotal": "6.5",
"lastUsedAt": "2026-04-09T18:42:11.000Z"
}
}Error example
{
"error": "Unauthorized"
}Operations log (api_jobs)
GEThttps://api.rombpay.io/v1/api/jobs
OpenClose
Operations log (api_jobs)
GEThttps://api.rombpay.io/v1/api/jobs
Paginated list of jobs for the current API key, newest first. Each row is either a wallet generation or an execute attempt; failed rows include errorText.
Query parameters
| Parameter | Description |
|---|---|
| limit | Optional, default 20. Maximum 100 rows per request. |
| offset | Optional, default 0. Pagination offset. |
| jobType | Optional: wallet_generate or transaction_prepare_transfer. |
| status | Optional: success or failed. |
| result[] field | Description |
|---|---|
| jobType | Operation type (see jobType filter). |
| status | success or failed. |
| priceTrx | Amount billed to the key (0 for wallet_generate and for successful TRX execute). |
| walletAddress | For wallet_generate, the new address; otherwise usually null. |
| txHash | On-chain transaction id when available. |
| errorText | Error message when status is failed. |
| createdAt | Row creation time (ISO 8601). |
Request
curl -X GET "https://api.rombpay.io/v1/api/jobs?limit=20&offset=0&jobType=wallet_generate&status=success" \
-H "X-Client-Id: <10_DIGIT_CLIENT_ID>" \
-H "X-Client-Api-Key: <32_CHAR_KEY_AS_IN_DATABASE>"Success response
{
"code": 0,
"msg": "OK",
"result": [
{
"id": "<UUID>",
"jobType": "transaction_prepare_transfer",
"status": "success",
"priceTrx": "6.5",
"walletAddress": null,
"txHash": "<TX_ID>",
"errorText": null,
"createdAt": "2026-04-09T18:42:11.000Z"
},
{
"id": "<UUID>",
"jobType": "wallet_generate",
"status": "success",
"priceTrx": "0.00000000",
"walletAddress": "T...",
"txHash": null,
"errorText": null,
"createdAt": "2026-04-09T18:42:10.000Z"
}
]
}Error example
{
"error": "Invalid query",
"details": { ... }
}HTTP status codes
| HTTP | Message | When it happens | What to do |
|---|---|---|---|
| 401 | Unauthorized / Invalid client credentials | Invalid X-Client-Id / X-Client-Api-Key pair, typo, or revoked key. | Verify headers against values issued by support; the secret is a single 32-character string. |
| 400 | Invalid body / Invalid query | Malformed JSON, wrong field types, bad address, asset, or jobs query params. | Cross-check field tables above; for jobs, inspect the details object in the response. |
| 402 | Insufficient API key balance | USDT only: key balance is below the required TRX before execute. | Top up via support: @finkonory. |
| 404 | API key not found | Rare: key row missing while auth middleware accepted the request. | Contact support. |
| 409 | Concurrent balance change | Race while debiting balance (concurrent USDT executes). | Retry safely (use idempotency on your side). |
Security
- Call only https://api.rombpay.io; never send private keys over cleartext channels.
- Store X-Client-Api-Key and wallet private keys in a secret manager; never commit them to source control.
- Restrict production key usage by IP or runtime environment; use the jobs log for operational auditing.