Skip to main content

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": "..."
}
note

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

FieldTypeDescription
list[].chain_codestringChain identifier (lowercase). Maps to receiving_network / support_networks[].
list[].chain_namestringChain display name.
list[].chain_idint64EVM chain id.
list[].tokens[].chain_codestringChain identifier the token belongs to (lowercase); matches the enclosing list[].chain_code.
list[].tokens[].token_codestringToken identifier (lowercase). Maps to receiving_token_symbol (case-insensitive).
list[].tokens[].token_namestringToken display name, e.g. USDT.
list[].tokens[].token_contractstringContract address (lowercase). Maps to receiving_token_address.
list[].tokens[].token_decimalsint32Token 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_codeMeaningDescription
0Success
90001UnauthorizedAuthentication failed or merchant identity is missing.
8000080099System errorThe 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.