---
updatedAt: 2026-05-27T08:48:52.000Z
agentTools:
  projectIndex: https://docs.tatum.io/llms.txt
---

# Register a new TRON TRC-10 or TRC-20 token in the virtual account

<p style="display: none">/v3/offchain/tron/trc</p>
<h4>10 credits per API call.</h4><br/>
<p>First step to create new TRC 10/20 token with given supply on the Tron blockchain with support of Tatum's private ledger.<br/>
This method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.<br/>
The whole supply of TRC 10/20 token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with TRC 10/20 token name as account's currency.<br/>
Newly created account is frozen until the specific TRC 10/20 smart contract address is linked with the Tatum virtual currency, representing the token.<br/>
Order of the steps to create TRC 10/20 smart contract with Tatum private ledger support:
<ol>
<li>Create TRC 10/20 token (this API) - creates a virtual currency within Tatum</li>
<li><a href="https://apidoc.tatum.io/tag/Tron#operation/TronCreateTrc10">Deploy TRC 10</a> or <a href="https://apidoc.tatum.io/tag/Tron#operation/TronCreateTrc20">TRC 20 smart contract</a> - create new TRC 10/20 smart contract on the blockchain</li>
<li><a href="#operation/storeTokenAddress">Store TRC 10/20 smart contract address</a> - link newly created TRC 10/20 smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for TRC 10/20 Tatum accounts</li>
</ol>
Blockchain address will be assigned to the virtual account as a deposit address. It can be defined via the address explicitly or by using xpub and derivationIndex.
There is a helper method <a href="#operation/TronDeployTrc">Deploy TRC 10/20 Smart Contract to Blockchain and Ledger</a>, which wraps first 2 steps into 1 method.<br/>
</p>


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "servers": [
    {
      "url": "https://api.tatum.io"
    }
  ],
  "info": {
    "version": "1.2",
    "title": "Virtual Accounts"
  },
  "tags": [
    {
      "name": "Blockchain operations"
    }
  ],
  "paths": {
    "/v3/offchain/tron/trc": {
      "post": {
        "description": "<p style=\"display: none\">/v3/offchain/tron/trc</p>\n<h4>10 credits per API call.</h4><br/>\n<p>First step to create new TRC 10/20 token with given supply on the Tron blockchain with support of Tatum's private ledger.<br/>\nThis method only creates Tatum Private ledger virtual currency with predefined parameters. It will not generate any blockchain smart contract.<br/>\nThe whole supply of TRC 10/20 token is stored in the customer's newly created account. Then it is possible to create new Tatum accounts with TRC 10/20 token name as account's currency.<br/>\nNewly created account is frozen until the specific TRC 10/20 smart contract address is linked with the Tatum virtual currency, representing the token.<br/>\nOrder of the steps to create TRC 10/20 smart contract with Tatum private ledger support:\n<ol>\n<li>Create TRC 10/20 token (this API) - creates a virtual currency within Tatum</li>\n<li><a href=\"https://apidoc.tatum.io/tag/Tron#operation/TronCreateTrc10\">Deploy TRC 10</a> or <a href=\"https://apidoc.tatum.io/tag/Tron#operation/TronCreateTrc20\">TRC 20 smart contract</a> - create new TRC 10/20 smart contract on the blockchain</li>\n<li><a href=\"#operation/storeTokenAddress\">Store TRC 10/20 smart contract address</a> - link newly created TRC 10/20 smart contract address with Tatum virtual currency - this operation enables frozen account and enables ledger synchronization for TRC 10/20 Tatum accounts</li>\n</ol>\nBlockchain address will be assigned to the virtual account as a deposit address. It can be defined via the address explicitly or by using xpub and derivationIndex.\nThere is a helper method <a href=\"#operation/TronDeployTrc\">Deploy TRC 10/20 Smart Contract to Blockchain and Ledger</a>, which wraps first 2 steps into 1 method.<br/>\n</p>\n",
        "operationId": "createTrc",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "$ref": "#/components/schemas/TrcAddress"
                  },
                  {
                    "$ref": "#/components/schemas/TrcXpub"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Trc20Response"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "description": "Forbidden. The request is authenticated, but it is not possible to required perform operation due to logical error or invalid permissions.",
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/Error403Erc20Prefix"
                    },
                    {
                      "$ref": "#/components/schemas/Error403Erc20XpubBoth"
                    },
                    {
                      "$ref": "#/components/schemas/Error403Erc20XpubMissing"
                    },
                    {
                      "$ref": "#/components/schemas/Error403RecipientFormat"
                    },
                    {
                      "$ref": "#/components/schemas/Error403Erc20NameDuplicate"
                    },
                    {
                      "$ref": "#/components/schemas/Error403CustomerNotActive"
                    },
                    {
                      "$ref": "#/components/schemas/Error403VCCreateFailed"
                    },
                    {
                      "$ref": "#/components/schemas/Error403AccountNotExists"
                    },
                    {
                      "$ref": "#/components/schemas/Error403AddressAccountXpubMissing"
                    },
                    {
                      "$ref": "#/components/schemas/Error403AddressAccountXpubUsed"
                    },
                    {
                      "$ref": "#/components/schemas/Error403AddressIndexUsed"
                    },
                    {
                      "$ref": "#/components/schemas/Error403OffchainNotSupported"
                    },
                    {
                      "$ref": "#/components/schemas/Error403AccountIncompatibleXpub"
                    },
                    {
                      "$ref": "#/components/schemas/Error403AddressXpub"
                    },
                    {
                      "$ref": "#/components/schemas/Error403VCNotFound"
                    },
                    {
                      "$ref": "#/components/schemas/Error403AddressUsed"
                    },
                    {
                      "$ref": "#/components/schemas/Error403AddressXpub"
                    },
                    {
                      "$ref": "#/components/schemas/Error403EthErc20Unsupported"
                    }
                  ]
                }
              }
            }
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "x-codeSamples": [],
        "summary": "Register a new TRON TRC-10 or TRC-20 token in the virtual account",
        "tags": [
          "Blockchain operations"
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "X-API-Key": {
        "type": "apiKey",
        "name": "x-api-key",
        "in": "header",
        "description": "Your **API key** is used to identify your account & your plan, including the number of API calls per second and total monthly calls you have.\n\nEach key is for individual use only.\n\nIf you don't have a key already you can [Sign up for a Free Tatum account](https://co.tatum.io/signup) to get two keys (testnet and mainnet), allowing up to 5 API calls per second and 1,000,000 Credits.\n\nFor testing purposes, you can use the following key which only works inside docs and has limited functionality (e.g. you cannot create virtual accounts or notification subscriptions with it):\n* t-66a730ccccfd17001c479705-2f597d14ad7543f289a03418\n\nFor more details on limits and plans, [click here](https://docs.tatum.io/docs/plans-limits).\n"
      }
    },
    "responses": {
      "Error400": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "errorCode": {
                  "example": "validation.failed",
                  "description": "validation.failed",
                  "type": "string"
                },
                "message": {
                  "example": "Request validation failed. Please see data for additional information.",
                  "description": "Request validation failed. Please see data for additional information.",
                  "type": "string"
                },
                "statusCode": {
                  "example": 400,
                  "description": "400",
                  "type": "number"
                },
                "data": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "target"
                    ],
                    "properties": {
                      "target": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Request object present in the body of the HTTP request",
                        "example": {
                          "property": 12345
                        }
                      },
                      "value": {
                        "type": "number",
                        "description": "Value of the target object which validation is wrong. Can be of any data type, example here is using type number.",
                        "example": 12345
                      },
                      "property": {
                        "type": "string",
                        "description": "Property name of the target object which validation is wrong",
                        "example": "property1"
                      },
                      "constraints": {
                        "type": "object",
                        "additionalProperties": true,
                        "description": "Object of failed constraints for the target object. Key is the constraint, value is detailed description of the failed constraint.",
                        "example": {
                          "min": "property1 must not be less than 50000"
                        }
                      }
                    }
                  }
                }
              },
              "required": [
                "errorCode",
                "message",
                "statusCode",
                "data"
              ],
              "type": "object"
            }
          }
        }
      },
      "Error401": {
        "description": "Unauthorized. Not valid or inactive subscription key present in the HTTP Header.",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "properties": {
                    "errorCode": {
                      "example": "subscription.not.active",
                      "description": "subscription.not.active",
                      "type": "string"
                    },
                    "message": {
                      "example": "Subscription not active anymore.",
                      "description": "Subscription not active anymore.",
                      "type": "string"
                    },
                    "statusCode": {
                      "example": 401,
                      "description": "401",
                      "type": "number"
                    }
                  },
                  "required": [
                    "errorCode",
                    "message",
                    "statusCode"
                  ],
                  "type": "object"
                },
                {
                  "properties": {
                    "errorCode": {
                      "example": "subscription.invalid",
                      "description": "subscription.invalid",
                      "type": "string"
                    },
                    "message": {
                      "example": "Unable to find valid subscription for '${apiKey}'",
                      "description": "Unable to find valid subscription for '${apiKey}'",
                      "type": "string"
                    },
                    "statusCode": {
                      "example": 401,
                      "description": "401",
                      "type": "number"
                    }
                  },
                  "required": [
                    "errorCode",
                    "message",
                    "statusCode"
                  ],
                  "type": "object"
                }
              ]
            }
          }
        }
      },
      "Error500": {
        "description": "Internal server error. There was an error on the server during the processing of the request.",
        "content": {
          "application/json": {
            "schema": {
              "properties": {
                "message": {
                  "example": "Internal server error",
                  "description": "Internal server error",
                  "type": "string"
                },
                "statusCode": {
                  "example": 500,
                  "description": "500",
                  "type": "number"
                }
              },
              "required": [
                "statusCode",
                "message"
              ],
              "type": "object"
            }
          }
        }
      }
    },
    "schemas": {
      "FiatCurrency": {
        "type": "string",
        "enum": [
          "AED",
          "AFN",
          "ALL",
          "AMD",
          "ANG",
          "AOA",
          "ARS",
          "AUD",
          "AWG",
          "AZN",
          "BAM",
          "BBD",
          "BDT",
          "BGN",
          "BHD",
          "BIF",
          "BMD",
          "BND",
          "BOB",
          "BRL",
          "BSD",
          "BTN",
          "BWP",
          "BYN",
          "BYR",
          "BZD",
          "CAD",
          "CDF",
          "CHF",
          "CLF",
          "CLP",
          "CNY",
          "COP",
          "CRC",
          "CUC",
          "CUP",
          "CVE",
          "CZK",
          "DJF",
          "DKK",
          "DOP",
          "DZD",
          "EGP",
          "ERN",
          "ETB",
          "EUR",
          "FJD",
          "FKP",
          "GBP",
          "GEL",
          "GGP",
          "GHS",
          "GIP",
          "GMD",
          "GNF",
          "GTQ",
          "GYD",
          "HKD",
          "HNL",
          "HRK",
          "HTG",
          "HUF",
          "IDR",
          "ILS",
          "IMP",
          "INR",
          "IQD",
          "IRR",
          "ISK",
          "JEP",
          "JMD",
          "JOD",
          "JPY",
          "KES",
          "KGS",
          "KHR",
          "KMF",
          "KPW",
          "KRW",
          "KWD",
          "KYD",
          "KZT",
          "LAK",
          "LBP",
          "LKR",
          "LRD",
          "LSL",
          "LTL",
          "LVL",
          "LYD",
          "MAD",
          "MDL",
          "MGA",
          "MKD",
          "MMK",
          "MNT",
          "MOP",
          "MRO",
          "MUR",
          "MVR",
          "MWK",
          "MXN",
          "MYR",
          "MZN",
          "NAD",
          "NGN",
          "NIO",
          "NOK",
          "NPR",
          "NZD",
          "OMR",
          "PAB",
          "PEN",
          "PGK",
          "PHP",
          "PKR",
          "PLN",
          "PYG",
          "QAR",
          "RON",
          "RSD",
          "RUB",
          "RWF",
          "SAR",
          "SBD",
          "SCR",
          "SDG",
          "SEK",
          "SGD",
          "SHP",
          "SLL",
          "SOS",
          "SRD",
          "STD",
          "SVC",
          "SYP",
          "SZL",
          "THB",
          "TJS",
          "TMT",
          "TND",
          "TOP",
          "TRY",
          "TTD",
          "TWD",
          "TZS",
          "UAH",
          "UGX",
          "USD",
          "UYU",
          "UZS",
          "VEF",
          "VND",
          "VUV",
          "WST",
          "XAF",
          "XAG",
          "XAU",
          "XCD",
          "XDR",
          "XOF",
          "XPF",
          "YER",
          "ZAR",
          "ZMK",
          "ZMW",
          "ZWL"
        ]
      },
      "FiatOrCryptoCurrency": {
        "type": "string",
        "enum": [
          "AED",
          "AFN",
          "ALL",
          "AMD",
          "ANG",
          "AOA",
          "ARS",
          "AUD",
          "AWG",
          "AZN",
          "ALGO",
          "ADA",
          "BAM",
          "BAT",
          "BBD",
          "BCH",
          "BDT",
          "BGN",
          "BHD",
          "BIF",
          "BMD",
          "BNB",
          "BND",
          "BOB",
          "BRL",
          "BSD",
          "BTC",
          "BTN",
          "BWP",
          "BYN",
          "BYR",
          "BZD",
          "CAD",
          "CDF",
          "CHF",
          "CLF",
          "CLP",
          "CNY",
          "COP",
          "CRC",
          "CUC",
          "CUP",
          "CVE",
          "CZK",
          "DJF",
          "DKK",
          "DOP",
          "DOGE",
          "DZD",
          "EGP",
          "ERN",
          "ETB",
          "ETH",
          "EUR",
          "FJD",
          "FKP",
          "FREE",
          "GMC",
          "GMC_BSC",
          "RMD",
          "GBP",
          "GEL",
          "GGP",
          "GHS",
          "GIP",
          "GMD",
          "GNF",
          "GTQ",
          "GYD",
          "HKD",
          "HNL",
          "HRK",
          "HTG",
          "HUF",
          "IDR",
          "ILS",
          "IMP",
          "INR",
          "IQD",
          "IRR",
          "ISK",
          "JEP",
          "JMD",
          "JOD",
          "JPY",
          "KES",
          "KGS",
          "KHR",
          "KMF",
          "KPW",
          "KRW",
          "KWD",
          "KYD",
          "KZT",
          "LAK",
          "LBP",
          "LEO",
          "LINK",
          "LKR",
          "LRD",
          "LSL",
          "LTC",
          "LTL",
          "LVL",
          "LYD",
          "MAD",
          "MATIC",
          "MDL",
          "MGA",
          "MKD",
          "MKR",
          "MMK",
          "MMY",
          "MNT",
          "MOP",
          "MRO",
          "MUR",
          "MVR",
          "MWK",
          "MXN",
          "MYR",
          "MZN",
          "NAD",
          "NGN",
          "NIO",
          "NOK",
          "NPR",
          "NZD",
          "OMR",
          "PAB",
          "PAX",
          "PAXG",
          "PEN",
          "PGK",
          "PHP",
          "PKR",
          "PLN",
          "PYG",
          "QAR",
          "RON",
          "RSD",
          "RUB",
          "RWF",
          "SAR",
          "SBD",
          "SCR",
          "SDG",
          "SEK",
          "SGD",
          "SHP",
          "SLL",
          "SOS",
          "SRD",
          "STD",
          "SVC",
          "SYP",
          "SZL",
          "THB",
          "TJS",
          "TMT",
          "TND",
          "TOP",
          "TRY",
          "TTD",
          "TRON",
          "TUSD",
          "BUSD",
          "TWD",
          "TZS",
          "UAH",
          "UGX",
          "UNI",
          "USD",
          "USDC",
          "USDC_MATIC",
          "USDC_MATIC_NATIVE",
          "USDT",
          "USDT_TRON",
          "USDT_MATIC",
          "UYU",
          "UZS",
          "VEF",
          "VND",
          "VUV",
          "WBTC",
          "WST",
          "XAF",
          "XAG",
          "XAU",
          "XCD",
          "XCON",
          "XDR",
          "XOF",
          "XPF",
          "XRP",
          "YER",
          "ZAR",
          "ZMK",
          "ZMW",
          "ZWL"
        ]
      },
      "Error403EthErc20Unsupported": {
        "properties": {
          "errorCode": {
            "description": "eth.erc20.unsupported",
            "example": "eth.erc20.unsupported",
            "type": "string"
          },
          "message": {
            "description": "Unsupported ETH ERC20 blockchain.",
            "example": "Unsupported ETH ERC20 blockchain.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "TrcAddress": {
        "properties": {
          "symbol": {
            "description": "The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain",
            "example": "MY_TOKEN",
            "maxLength": 30,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_]+$",
            "type": "string"
          },
          "supply": {
            "description": "The supply of the token",
            "maxLength": 38,
            "example": "1000000.0",
            "pattern": "^[+]?((\\d+(\\.\\d*)?)|(\\.\\d+))$",
            "type": "string"
          },
          "decimals": {
            "description": "The number of decimal places that the token has",
            "example": 6,
            "minimum": 0,
            "type": "number"
          },
          "type": {
            "description": "The type of the token",
            "example": "TRC10",
            "type": "string",
            "enum": [
              "TRC10",
              "TRC20"
            ]
          },
          "description": {
            "description": "The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain",
            "example": "My Public Token",
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "address": {
            "description": "The blockchain address to be assigned to the virtual account as a deposit address",
            "maxLength": 34,
            "minLength": 34,
            "example": "TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW",
            "type": "string"
          },
          "basePair": {
            "description": "The base pair for the virtual currency that represents the token; used to calculate the value of a transaction",
            "$ref": "#/components/schemas/FiatOrCryptoCurrency",
            "example": "EUR"
          },
          "baseRate": {
            "type": "number",
            "example": 1,
            "default": 1,
            "minimum": 0,
            "description": "The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of <code>basePair</code>*<code>baseRate</code>"
          },
          "url": {
            "description": "(TRC-10 tokens only) The URL of the project that the token is created for<br/>Use this parameter only with TRC-10 tokens. Do <b>not</b> use this parameter with TRC-20 tokens.",
            "example": "https://mytoken.com",
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "customer": {
            "$ref": "#/components/schemas/CustomerRegistration"
          },
          "accountingCurrency": {
            "description": "The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed",
            "default": "EUR",
            "$ref": "#/components/schemas/FiatCurrency",
            "example": "USD"
          }
        },
        "required": [
          "symbol",
          "supply",
          "decimals",
          "type",
          "description",
          "basePair",
          "address"
        ],
        "type": "object"
      },
      "TrcXpub": {
        "properties": {
          "symbol": {
            "description": "The name of the token; used as an identifier within the Tatum platform and as a currency symbol on the blockchain",
            "example": "MY_TOKEN",
            "maxLength": 30,
            "minLength": 1,
            "pattern": "^[a-zA-Z0-9_]+$",
            "type": "string"
          },
          "supply": {
            "description": "The supply of the token",
            "maxLength": 38,
            "example": "1000000.0",
            "pattern": "^[+]?((\\d+(\\.\\d*)?)|(\\.\\d+))$",
            "type": "string"
          },
          "decimals": {
            "description": "The number of decimal places that the token has",
            "example": 6,
            "minimum": 0,
            "type": "number"
          },
          "type": {
            "description": "The type of the token",
            "example": "TRC10",
            "type": "string",
            "enum": [
              "TRC10",
              "TRC20"
            ]
          },
          "description": {
            "description": "The description of the token; used as a description within the Tatum platform and as a currency name on the blockchain",
            "example": "My Public Token",
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "xpub": {
            "description": "The extended public key of the TRON wallet from which a deposit address for the virtual account will be generated",
            "maxLength": 130,
            "minLength": 130,
            "example": "xpub6EsCk1uU6cJzqvP9CdsTiJwT2rF748YkPnhv5Qo8q44DG7nn2vbyt48YRsNSUYS44jFCW9gwvD9kLQu9AuqXpTpM1c5hgg9PsuBLdeNncid",
            "type": "string"
          },
          "derivationIndex": {
            "description": "The derivation index to use together with the extended public key to generate the deposit address",
            "format": "int32",
            "example": 0,
            "type": "integer",
            "maximum": 2147483647
          },
          "basePair": {
            "description": "The base pair for the virtual currency that represents the token; used to calculate the value of a transaction",
            "$ref": "#/components/schemas/FiatOrCryptoCurrency",
            "example": "EUR"
          },
          "baseRate": {
            "type": "number",
            "example": 1,
            "default": 1,
            "minimum": 0,
            "description": "The exchange rate for the base pair; one unit of the created virtual currency equals 1 unit of <code>basePair</code>*<code>baseRate</code>"
          },
          "url": {
            "description": "(TRC-10 tokens only) The URL of the project that the token is created for<br/>Use this parameter only with TRC-10 tokens. Do <b>not</b> use this parameter with TRC-20 tokens.",
            "example": "https://mytoken.com",
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "customer": {
            "$ref": "#/components/schemas/CustomerRegistration"
          },
          "accountingCurrency": {
            "description": "The ISO 4217 code of the currency in which all transactions for the created virtual account will be billed",
            "default": "EUR",
            "$ref": "#/components/schemas/FiatCurrency",
            "example": "USD"
          }
        },
        "required": [
          "symbol",
          "supply",
          "decimals",
          "type",
          "description",
          "basePair",
          "xpub",
          "derivationIndex"
        ],
        "type": "object"
      },
      "Trc20Response": {
        "properties": {
          "accountId": {
            "description": "The ID of the created virtual account with the currency set to the token name (the <code>symbol</code> parameter of the request body)",
            "type": "string",
            "example": "5e68c66581f2ee32bc354087"
          },
          "address": {
            "description": "The deposit address of the virtual account",
            "example": "TVAEYCmc15awaDRAjUZ1kvcHwQQaoPw2CW",
            "type": "string"
          }
        },
        "type": "object"
      },
      "CustomerRegistration": {
        "properties": {
          "externalId": {
            "description": "The external ID of the customer; use only anonymized identification that you have in your system<br/>If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information.",
            "example": "123654",
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "accountingCurrency": {
            "description": "The ISO 4217 code of the currency in which all transactions for all virtual accounts of the customer will be billed; to overwrite the currency for this specific virtual account, set the <code>accountingCurrency</code> parameter at the account level.",
            "default": "EUR",
            "example": "USD",
            "$ref": "#/components/schemas/FiatCurrency"
          },
          "customerCountry": {
            "description": "The ISO 3166-1 code of the country that the customer has to be compliant with",
            "example": "US",
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          },
          "providerCountry": {
            "description": "The ISO 3166-1 code of the country that the service provider has to be compliant with",
            "example": "US",
            "maxLength": 2,
            "minLength": 2,
            "type": "string"
          }
        },
        "required": [
          "externalId"
        ],
        "type": "object",
        "description": "If a customer with the specified external ID does not exist, a new customer is created. If a customer with the specified external ID exists, it is updated with the provided information."
      },
      "Error403CustomerNotActive": {
        "properties": {
          "errorCode": {
            "description": "customer.not.active",
            "example": "customer.not.active",
            "type": "string"
          },
          "message": {
            "description": "Customer not active.",
            "example": "Customer not active.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403VCCreateFailed": {
        "properties": {
          "errorCode": {
            "description": "virtual.creation.error",
            "example": "virtual.creation.error",
            "type": "string"
          },
          "message": {
            "description": "It is not possible to create virtual currency.",
            "example": "It is not possible to create virtual currency.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403RecipientFormat": {
        "properties": {
          "errorCode": {
            "description": "withdrawal.recipient.format",
            "example": "withdrawal.recipient.format",
            "type": "string"
          },
          "message": {
            "description": "Recipient blockchain address has incorrect format.",
            "example": "Recipient blockchain address has incorrect format.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403AccountIncompatibleXpub": {
        "properties": {
          "errorCode": {
            "description": "account.xpub.incompatible",
            "example": "account.xpub.incompatible",
            "type": "string"
          },
          "message": {
            "description": "Xpub not compatible with account currency.",
            "example": "Xpub not compatible with account currency.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403AddressXpub": {
        "properties": {
          "errorCode": {
            "description": "account.xpub.present",
            "example": "account.xpub.present",
            "type": "string"
          },
          "message": {
            "description": "Xpub assigned to account, it is not possible to assign address. Use generateAddress method instead.",
            "example": "Xpub assigned to account, it is not possible to assign address. Use generateAddress method instead.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          },
          "required": [
            "errorCode",
            "message",
            "statusCode"
          ],
          "type": "object"
        }
      },
      "Error403AccountNotExists": {
        "properties": {
          "errorCode": {
            "description": "account.not.exists",
            "example": "account.not.exists",
            "type": "string"
          },
          "message": {
            "description": "No such account.",
            "example": "No such account.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403Erc20Prefix": {
        "properties": {
          "errorCode": {
            "description": "erc20.symbol.prefix",
            "example": "erc20.symbol.prefix",
            "type": "string"
          },
          "message": {
            "description": "ERC20 token cannot start with VC_.",
            "example": "ERC20 token cannot start with VC_.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403Erc20XpubBoth": {
        "properties": {
          "errorCode": {
            "description": "erc20.address.xpub.both",
            "example": "erc20.address.xpub.both",
            "type": "string"
          },
          "message": {
            "description": "Either xpub or address must be present, not both.",
            "example": "Either xpub or address must be present, not both.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403Erc20XpubMissing": {
        "properties": {
          "errorCode": {
            "description": "erc20.address.xpub.missing",
            "example": "erc20.address.xpub.missing",
            "type": "string"
          },
          "message": {
            "description": "Either xpub or address must be present.",
            "example": "Either xpub or address must be present.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403Erc20NameDuplicate": {
        "properties": {
          "errorCode": {
            "description": "erc20.duplicate.name",
            "example": "erc20.duplicate.name",
            "type": "string"
          },
          "message": {
            "description": "ERC20 token with given name already exists.",
            "example": "ERC20 token with given name already exists.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403OffchainNotSupported": {
        "properties": {
          "errorCode": {
            "description": "offchain.not.supported",
            "example": "offchain.not.supported",
            "type": "string"
          },
          "message": {
            "description": "Offchain not supported for account with ${account.currency} currency.",
            "example": "Offchain not supported for account with ${account.currency} currency.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403AddressAccountXpubUsed": {
        "properties": {
          "errorCode": {
            "description": "xpub.used",
            "example": "xpub.used",
            "type": "string"
          },
          "message": {
            "description": "XPub already used registered within Tatum",
            "example": "XPub already used registered within Tatum",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403VCNotFound": {
        "properties": {
          "errorCode": {
            "description": "vc.not.found",
            "example": "vc.not.found",
            "type": "string"
          },
          "message": {
            "description": "No such virtual currency.",
            "example": "No such virtual currency.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403AddressUsed": {
        "properties": {
          "errorCode": {
            "description": "Address.used",
            "example": "address.used",
            "type": "string"
          },
          "message": {
            "description": "Address and currency already in use.",
            "example": "Address and currency already in use.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403AddressAccountXpubMissing": {
        "properties": {
          "errorCode": {
            "description": "account.xpub.missing",
            "example": "account.xpub.missing",
            "type": "string"
          },
          "message": {
            "description": "No xpub assigned to account, it is not possible to generate address. Use assignAddress method instead.",
            "example": "No xpub assigned to account, it is not possible to generate address. Use assignAddress method instead.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      },
      "Error403AddressIndexUsed": {
        "properties": {
          "errorCode": {
            "description": "Address.index.used",
            "example": "address.index.used",
            "type": "string"
          },
          "message": {
            "description": "Unable to create address, derivation index is already used.",
            "example": "Unable to create address, derivation index is already used.",
            "type": "string"
          },
          "statusCode": {
            "description": "403",
            "example": 403,
            "type": "number"
          }
        },
        "required": [
          "errorCode",
          "message",
          "statusCode"
        ],
        "type": "object"
      }
    }
  }
}
```