Currencies
Currencies
Two read-only endpoints return the chains and tokens the Morph Payments API currently supports:
- Receiving currencies — the chains and tokens you (the merchant) can use as the receiving target when creating a Payment Link or Invoice.
- Paying currencies — the chains and tokens an end customer can choose to pay with on the Hosted Checkout page.
The two catalogs are configured independently: a chain or token may appear in one list, both, or neither. Both endpoints return the full list in a single call — there is no pagination and no chain filter.
All requests must be authenticated with your
API Key. The gateway resolves your merchant identity from the API Key, so you do
not send merchant_id in the query — it is ignored if present.
Base URL
https://pay-openapi.morph.network/pro/merchant/payin/v1
Endpoint paths in this page are relative to that base URL.
Response envelope
Every response is wrapped in a common envelope:
{
"error_code": 0,
"msg": "success",
"data": {},
"trace": "..."
}
Business success or failure is determined by error_code (error_code == 0
means success), not by the HTTP status code alone. See the
Error Codes reference for the full list.
Receiving currencies
GET /currencies/receiving
No query parameters. Returns the full set of chains and tokens available for
receiving_network / receiving_token_symbol / receiving_token_address
when creating a Payment Link or Invoice. This is
the dynamic source for the values listed in
Supported Tokens & Networks.
Do not use this list to fill support_networks / support_tokens — those
fields are the payer allowlist and come from
Paying currencies.
Success response
{
"error_code": 0,
"msg": "success",
"data": {
"list": [
{
"chain_code": "morph",
"chain_name": "Morph",
"chain_id": 2818,
"tokens": [
{ "chain_code": "morph", "token_code": "usdt", "token_name": "USDT", "token_contract": "0xe7cd86e13ac4309349f30b3435a9d337750fc82d", "token_decimals": 6 },
{ "chain_code": "morph", "token_code": "usdc", "token_name": "USDC", "token_contract": "0xcfb1186f4e93d60e60a8bdd997427d1f33bc372b", "token_decimals": 6 }
]
},
{
"chain_code": "eth",
"chain_name": "Ethereum",
"chain_id": 1,
"tokens": [
{ "chain_code": "eth", "token_code": "usdt", "token_name": "USDT", "token_contract": "0xdac17f958d2ee523a2206206994597c13d831ec7", "token_decimals": 6 }
]
}
]
},
"trace": "..."
}
Response fields
| Field | Type | Description |
|---|---|---|
list[].chain_code | string | Chain identifier (lowercase). Maps to receiving_network. |
list[].chain_name | string | Chain display name. |
list[].chain_id | int64 | EVM chain id. |
list[].tokens[].chain_code | string | Chain identifier the token belongs to (lowercase); matches the enclosing list[].chain_code. |
list[].tokens[].token_code | string | Token identifier (lowercase). Maps to receiving_token_symbol (case-insensitive). |
list[].tokens[].token_name | string | Token display name, e.g. USDT. |
list[].tokens[].token_contract | string | Contract address (lowercase). Maps to receiving_token_address. |
list[].tokens[].token_decimals | int32 | Token decimals. |
Paying currencies
GET /currencies/paying
No query parameters. Returns the chains and tokens an end customer can select to
pay with on the Hosted Checkout page. Use list[].chain_code and each token's
chain_code / token_name / token_contract as
support_networks / support_tokens when
creating a Payment Link or Invoice. If you omit
both allowlist fields, create expands them to this full catalog.
This catalog is independent of your own receiving catalog above.
Success response
The response shape is identical to
Receiving currencies (list[].chain_code /
chain_name / chain_id / tokens[], with chain_code inside each
tokens[] entry). The meaning is "available for the payer to pay with" rather
than "available for the merchant to receive".
Errors
| error_code | Meaning | Description |
|---|---|---|
0 | Success | — |
90001 | Unauthorized | Authentication failed or merchant identity is missing. |
80000 – 80099 | System error | The service is temporarily unavailable or hit an internal error; treat as a retryable system error. |
Both endpoints are read-only queries and do not return parameter-validation errors. See the Error Codes reference for details.