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 the
receiving_network / receiving_token_symbol / receiving_token_address and
support_networks / support_tokens fields when
creating a Payment Link or Invoice. This is the
dynamic source for the values listed in
Supported Tokens & Networks.
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 / support_networks[]. |
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. 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.