Quote the withdrawal fee before submitting
Read-only quote of the withdrawal fee that applies to the authenticated merchant BEFORE they submit: the per-counterparty override when set, else the tenant base — resolved through the SAME policy resolver the money path uses, so the quote cannot drift from the charged fee. Optional `amount_usdt_cents` (USDT cents, note — whole-USDT units in the create request) also yields the net amount.
/api/v1/p2p/merchant/wallet/withdraw-feeRead-only quote of the withdrawal fee that applies to the
authenticated merchant BEFORE they submit: the per-counterparty
override when set, else the tenant base — resolved through the SAME
policy resolver the money path uses, so the quote cannot drift from
the charged fee. Optional amount_usdt_cents (USDT cents, note —
whole-USDT units in the create request) also yields the net amount.
Authorization
MerchantToken MerchantSignature 64-character hex public merchant token assigned during onboarding.
In: header
Stripe-style HMAC-SHA256 signature.
Format: t=<unix_seconds>,v1=<hex_hmac_sha256>
where hex_hmac = HMAC-SHA256(webhook_secret, "<unix_seconds>.<raw_body>").
Replay window: 5 minutes (60s future drift tolerated).
In: header
Query Parameters
Optional gross withdrawal amount in USDT cents (> 0 enables net_amount_usdt_cents).
int64Response Body
application/json
application/problem+json
curl -X GET "https://example.com/api/v1/p2p/merchant/wallet/withdraw-fee?amount_usdt_cents=100000"{ "base_fee_usdt_cents": "150", "override_applied": false, "total_fee_usdt_cents": "150", "net_amount_usdt_cents": "99850"}{ "type": "../dictionary", "title": "string", "status": 0, "detail": "string", "instance": "../dictionary", "errors": [ { "field": "amount", "message": "must be greater than 0", "code": "POSITIVE_REQUIRED" } ]}Provision (or rotate) the merchant TRC-20 deposit address POST
Generates (first call) or rotates (repeated calls) the merchant's TRC-20 deposit address for incoming USDT collateral. The scope is resolved from the authenticated merchant context (canonical path, no `merchant_id` in path). Atomically claims the next BIP44 derivation index, derives the address via tron-wallet-api and persists the address + index to the merchant row. Rotation semantics: the new address immediately replaces the old one on the merchant row, while every previously issued address stays forever in the platform's eternal block-polling set — USDT sent to a superseded address is still detected and credited. Legacy admin-impersonation alias: `POST /api/v1/p2p/merchants/{merchant_id}/deposit-address`.
Incoming TRC-20 deposits with custody statuses GET
The merchant's incoming TRC-20 deposits: the ledger credit plus the DepositSweepWorker lifecycle of the receiving address (CREDITED / SWEEP_PENDING / SWEEP_FAILED / SWEEP_STUCK / SWEPT). Keyset pagination (AIP-158): page_size 1–100 (default 20), page_token/next_page_token.