Sign in
Introduction/References

References

Network codes, currency-network mappings, and payment status values used across the 2328.io API.

This page lists all the reference values used across API requests and responses.

Network codes

These codes are used wherever a network field is present:

CodeNetwork
TRX-TRC20Tron TRC-20
BSC-BEP20BNB Smart Chain
ETH-ERC20Ethereum (ERC-20)
BASEBase
AVAX-CAvalanche C-Chain
POL-MATICPolygon (Matic)
TONTON
BTCBitcoin
LTCLitecoin
DASHDash
SOLSolana
DOGEDogecoin
ZECZcash
XRPXRP Ledger
XMRMonero

Currency-network mapping

Each currency is only available on a subset of networks. Use this table to pick a valid combination:

CurrencyAllowed networks
USDTTRX-TRC20, BSC-BEP20, ETH-ERC20, BASE, AVAX-C, POL-MATIC, TON, SOL
USDCBSC-BEP20, ETH-ERC20, BASE, AVAX-C, POL-MATIC, SOL
BTCBTC
ETHETH-ERC20, BASE
BNBBSC-BEP20
TRXTRX-TRC20
LTCLTC
DASHDASH
GRAMTON
AVAXAVAX-C
POLPOL-MATIC
SOLSOL
DOGEDOGE
ZECZEC
XRPXRP
XMRXMR

GRAM is the canonical asset code for the TON native currency. The payment, static-wallet, and payout creation APIs currently accept legacy TON input and normalize it to GRAM; integrations should store and handle the canonical value returned by the API. The Polygon native asset is POL, while its network code is POL-MATIC. Never send MATIC as a network code.

Enabled directions are operational configuration and can change independently of this catalog. Query /v1/directions before presenting choices; treat this table as the valid code map, not a guarantee that every pair is currently enabled.

Payment statuses

The payment_status field on payment info and webhook payloads can take the following values:

StatusDescription
pendingCreated, awaiting initialization
checkAwaiting payment from customer
paidPaid successfully
underpaid_checkUnderpaid (can top up)
underpaidUnderpaid
overpaidOverpaid (credited)
cancelCancelled / expired
aml_lockTransaction blocked due to AML

When listening for a successful payment, you should treat both paid and overpaid as successful states and credit the customer's order.

Status handling policy

StatusFulfill order?Continue waiting?Operational action
pending / checkNoYes, until expiryDisplay pending state and reconcile normally.
underpaid_checkNo by defaultYes, top-up can arriveStore each txid idempotently and show the remaining-payment workflow.
paidYes, onceNoFulfill atomically from the verified event.
overpaidYes, onceNoFulfill and retain excess/actual amounts for merchant policy.
underpaidProduct-specificNoApply explicit partial-payment/manual-review policy.
cancelNoNoMark expired/cancelled, but escalate any later on-chain evidence.
aml_lockNoNo automatic fulfillmentCompliance/support review; do not release value automatically.

Statuses describe the platform's view of the payment. They do not replace your local fulfillment state. Store both so a refunded, manually reviewed, or already fulfilled order cannot be corrupted by an older webhook.

The /v1/payment/list request filter currently accepts pending, check, paid, underpaid_check, underpaid, overpaid, and cancel. It does not accept aml_lock as a filter even though an AML-locked payment can be returned by other payment endpoints.

Payout statuses

The status field on /v1/payout and /v1/payout/status/{uuid} takes one of:

StatusDescription
pendingCreated, awaiting processing
completedCompleted successfully — txid is set
failedSending error — see error_type
cancelledCancelled

Payout error types

When a payout has status = failed, the error_type field describes why:

CodeDescription
aml_riskPayout blocked by AML risk checks (recipient address flagged as high-risk)