Overview
| Endpoint | Who | Destination |
|---|---|---|
POST /api/v1/auth/transfers/p2p | Authenticated user | Another platform user (to_user_id or platform to_address) |
POST /api/v1/auth/transfers/p2p/external | Same | External chain address (must not be a linked platform wallet of another user in a way that violates validation rules) |
POST /api/v1/auth/transfers/b2b | Vendor / subvendor / admin | Another vendor (to_vendor_id) |
POST /api/v1/auth/transfers/b2b/external | Same | External address (B2B multisig rules apply) |
GET /api/v1/auth/transfers, GET /api/v1/auth/transfers/{id}, pricing snapshot: GET /api/v1/auth/transfers/{id}/pricing.
Request Body (Common)
amount- USDT string, must be positive.network-tronorethereum.from_wallet_id- Optional; defaults to the user’s default wallet for that network.
Optional Pricing (Same Rule on All Four POST Transfer Routes)
If you send any of the pricing fields, you must send all of:pricing_profile_idfx_rate_quote_idfiat_currencyfiat_amount_equivalent(positive decimal string)
flow_type must match: p2p for P2P routes, b2b for B2B routes. Asset, fiat, and network must align with buildPricingSnapshot validation.
B2B and Multisig
B2B from wallets must be registered as multisig. What happens next depends on how the wallet was provisioned:- Platform-Managed Multisig - Transfers may complete with
200once internal policy checks pass; thetransfersresource reflects status and any settlement references returned by the platform. - Collaborative Signing (TRON or Ethereum configurations that require co-signatures on-chain) - The API may return 202 with
proposal_id. Signers useGET /api/v1/auth/multisig/proposals/{id}andPOST .../confirm. See Multisig wallets.
Correlation
Successful transfer responses may includecorrelation_id and the X-Request-ID header for support and logging.