Comprehensive overview of the standardized error response model used by the API
When integrating with our API, robust error handling is essential for a seamless user experience and resilient application performance. By addressing errors effectively, your application can gracefully manage issues, minimize disruptions, and maintain responsiveness.
Key steps include:
- Leveraging our standardized error response model.
- Keeping your error-handling logic up-to-date to adapt to any API changes.
Error Response Model
Our API returns a structured error object for all 4xx
errors to simplify issue diagnosis. The format is as follows:
{
"code":"<error_code>",
"title":"<error_title>",
"message":"<error_message>"
}
Field Definitions:
code
: A unique, stable identifier for the error.title
: A brief summary of the issue.message
: Detailed guidance for resolving the error.
Field-Level Error Details
For issues specific to individual fields, a fields
object provides additional context.
Examples:
{
"code":"0009",
"title":"Missing Fields in Request",
"message":"Your request is missing one or more required fields. Please refer to the documentation to ensure all necessary fields are included in your request.",
"fields": {
"{{field}}": "{{field}} is a required field"
}
}
{
"code":"0047",
"title":"Bad Request",
"message":"The server could not understand the request due to malformed syntax. Please check the listed fields and try again.",
"fields":{
"legalName": "legalName is a required field.",
"parentOrganizationId":"parentOrganizationId must be a valid UUID"
}
}
{
"code":"0053",
"title":"Unexpected Fields in the Request",
"message":"The request body contains more fields than expected. Please send only the allowed fields as per the documentation. The unexpected fields are listed in the fields object.",
"fields":{
"{{field}}":"{{error_message}}"
}
}
Error Code Reference
Refer to the following table for error codes and their descriptions:
code | title | message |
---|---|---|
0001 | Duplicate Ledger Error | A ledger with the name {{name}} already exists in the division {{divisionName}}. Please rename the ledger or choose a different division to attach it to. |
0002 | Ledger Name Conflict | A ledger named {{name}} already exists in your organization. Please rename the ledger, or if you want to use the same name, consider creating a new ledger for a different division. |
0003 | Asset Name or Code Duplicate | An asset with the same name or code already exists in your ledger. Please modify the name or code of your new asset. |
0004 | Code Uppercase Requirement | The code must be in uppercase. Please ensure that the code is in uppercase format and try again. |
0005 | Currency Code Standard Compliance | Currency-type assets must comply with the ISO-4217 standard. Please use a currency code that conforms to ISO-4217 guidelines. |
0006 | Unmodifiable Field Error | Your request includes a field that cannot be modified. Please review your request and try again, removing any uneditable fields. Please refer to the documentation for guidance. |
0007 | Entity Not Found | No entity was found for the given ID. Please make sure to use the correct ID for the entity you are trying to manage. |
0008 | Action Not Permitted | The action you are attempting is not allowed in the current environment. Please refer to the documentation for guidance. |
0009 | Missing Fields in Request | Your request is missing one or more required fields. Please refer to the documentation to ensure all necessary fields are included in your request. |
0010 | Account Type Immutable | The account type specified cannot be modified. Please ensure the correct account type is being used and try again. |
0011 | Inactive Account Type Error | The account type specified cannot be set to INACTIVE. Please ensure the correct account type is being used and try again. |
0012 | Account Balance Deletion Error | An account or sub-account cannot be deleted if it has a remaining balance. Please ensure all remaining balances are transferred to another account before attempting to delete. |
0013 | Resource Already Deleted | The resource you are trying to delete has already been deleted. Ensure you are using the correct ID and try again. |
0014 | Degment ID Inactive | The Segment ID you are attempting to use is inactive. Please use another Segment ID and try again. |
0015 | Duplicate Segment Name Error | A segment with the name {{name}} already exists for this ledger ID {{ledgerId}}. Please try again with a different ledger or name. |
0016 | Balance Remaining Deletion Error | The asset cannot be deleted because there is a remaining balance. Please ensure all balances are cleared before attempting to delete again. |
0017 | Invalid Script Format Error | The script provided in your request is invalid or in an unsupported format. Please verify the script format and try again. |
0018 | Insufficient Funds Error | The transaction could not be completed due to insufficient funds in the account. Please add sufficient funds to your account and try again. |
0019 | Account Ineligibility Error | One or more accounts listed in the transaction are not eligible to participate. Please review the account statuses and try again. |
0020 | Alias Unavailability Error | The alias {{alias}} is already in use. Please choose a different alias and try again. |
0021 | Parent Transaction ID Not Found | The parentTransactionId {{parentTransactionId}} does not correspond to any existing transaction. Please review the ID and try again. |
0022 | Immutable Field Error | The {{field}} field cannot be modified. Please remove this field from your request and try again. |
0023 | Transaction Timing Restriction | You can only perform another transaction using {{assetCode}} of {{amount}} from {{source}} to {{destination}} after {{timestampUnlock}}. Please wait until the specified time to try again. |
0024 | Account Status Transaction Restriction | The current statuses of the source and/or destination accounts do not permit transactions. Change the account status(es) and try again. |
0025 | Insufficient Account Balance Error | The account {{accountId}} does not have sufficient balance. Please try again with an amount that is less than or equal to the available balance. |
0026 | Transaction Method Restriction | Transactions involving {{assetCode}} are not permitted for the specified source and/or destination. Please try again using accounts that allow transactions with {{assetCode}}. |
0027 | Duplicate Transaction Template Code Error | A transaction template with the code {{code}} already exists for your ledger. Please use a different code and try again. |
0028 | Duplicate Asset Pair Error | A pair for the assets {{baseAssetCode}}{{counterAssetCode}} already exists with the ID {{asset_rates.id}}. Please update the existing entry instead of creating a new one. |
0029 | Invalid Parent Account ID | The specified parent account ID does not exist. Please verify the ID is correct and try your request again. |
0030 | Mismatched Asset Code | The parent account ID you provided is associated with a different asset code than the one specified in your request. Please make sure the asset code matches that of the parent account, or use a different parent account ID and try again. |
0031 | Chart Type Not Found | The chart type {{chartType}} does not exist. Please provide a valid chart type and refer to the documentation if you have any questions. |
0032 | Invalid Country Code | The provided country code in the 'address.country' field does not conform to the ISO-3166 alpha-2 standard. Please provide a valid alpha-2 country code. |
0033 | Invalid Code Format | The 'code' field must be alphanumeric, in upper case, and must contain at least one letter. Please provide a valid code. |
0034 | Asset Code Not Found | The provided asset code does not exist in our records. Please verify the asset code and try again. |
0035 | Portfolio ID Not Found | The provided portfolio ID does not exist in our records. Please verify the portfolio ID and try again. |
0036 | Segment ID Not Found | The provided segment ID does not exist in our records. Please verify the segment ID and try again. |
0037 | Ledger ID Not Found | The provided ledger ID does not exist in our records. Please verify the ledger ID and try again. |
0038 | Organization ID Not Found | The provided organization ID does not exist in our records. Please verify the organization ID and try again. |
0039 | Parent Organization ID Not Found | The provided parent organization ID does not exist in our records. Please verify the parent organization ID and try again. |
0040 | Invalid Type | The provided 'type' is not valid. Accepted types are: currency, crypto, commodities, or others. Please provide a valid type. |
0041 | Token Missing | A valid token must be provided in the request header. Please include a token and try again. |
0042 | Invalid Token | The provided token is invalid or malformed. Please provide a valid token and try again. |
0043 | Token Expired | The provided token has expired. Please provide a valid token and try again. |
0044 | Insufficient Privileges | You do not have the necessary permissions to perform this action. Please contact your administrator if you believe this is an error. |
0045 | Permission Enforcement Error | The enforcer is not configured properly. Please contact your administrator if you believe this is an error. |
0046 | Internal Server Error | The server encountered an unexpected error. Please try again later or contact support. |
0047 | Bad Request | The server could not understand the request due to malformed syntax. Please check the listed fields and try again. |
0048 | Invalid DSL File Format | The submitted DSL file {{fileName}} is in an incorrect format. Please ensure that the file follows the expected structure and syntax. |
0049 | Empty DSL File | The submitted DSL file {{fileName}} is empty. Please provide a valid file with content. |
0050 | Metadata Key Length Exceeded | The metadata key {{key}} exceeds the maximum allowed length of 100 characters. Please use a shorter key. |
0051 | Metadata Value Length Exceeded | The metadata value {{value}} exceeds the maximum allowed length of 100 characters. Please use a shorter value. |
0052 | Account ID Not Found | The provided account ID does not exist in our records. Please verify the account ID and try again. |
0053 | Unexpected Fields in the Request | The request body contains more fields than expected. Please send only the allowed fields as per the documentation. The unexpected fields are listed in the fields object. |
0054 | No Accounts Found | No accounts were found for the provided account IDs. Please verify the account IDs and try again. |
0055 | Asset ID Not Found | The provided asset ID does not exist in our records. Please verify the asset ID and try again. |
0056 | No Assets Found | No assets were found in the search. Please review the search criteria and try again. |
0057 | No Segments Found | No segments were found in the search. Please review the search criteria and try again. |
0058 | No Portfolios Found | No portfolios were found in the search. Please review the search criteria and try again. |
0059 | No Organizations Found | No organizations were found in the search. Please review the search criteria and try again. |
0060 | No Ledgers Found | No ledgers were found in the search. Please review the search criteria and try again. |
0061 | Balance Update Failed | The balance could not be updated for the specified account ID. Please verify the account ID and try again. |
0062 | No Account IDs Provided | No account IDs were provided for the balance update. Please provide valid account IDs and try again. |
0063 | Failed To Retrieve Accounts By Aliases | The accounts could not be retrieved using the specified aliases. Please verify the aliases for accuracy and try again. |
0064 | No Accounts Found | No accounts were found in the search. Please review the search criteria and try again. |
0065 | Invalid Path Parameter | The provided path parameter {{parameter_name}} is not in the expected format. Please ensure the parameter adheres to the required format and try again. |
0066 | Invalid Account Type | The provided 'type' is not valid. Accepted types are: deposit, savings, loans, marketplace, creditCard or external. Please provide a valid type. |
0067 | Invalid Metadata Nesting | The metadata object cannot contain nested values. Please ensure that the value {{value}} is not nested and try again. |
0068 | Operation ID Not Found | The provided operation ID does not exist in our records. Please verify the operation ID and try again. |
0069 | No Operations Found | No operations were found in the search. Please review the search criteria and try again. |
0070 | Transaction ID Not Found | The provided transaction ID does not exist in our records. Please verify the transaction ID and try again. |
0071 | No Transactions Found | No transactions were found in the search. Please review the search criteria and try again. |
0072 | Invalid Transaction Type | Only one transaction type ('amount', 'share', or 'remaining') must be specified in the '{{field}}' field for each entry. Please review your input and try again. |
0073 | Transaction Value Mismatch | The values for the source, the destination, or both do not match the specified transaction amount. Please verify the values and try again. |
0074 | External Account Modification Prohibited | Accounts of type 'external' cannot be deleted or modified as they are used for traceability with external systems. Please review your request and ensure operations are only performed on internal accounts. |
0075 | Audit Record Not Retrieved | The record {{id}} could not be retrieved for audit. Please verify that the submitted data is correct and try again. |
0076 | Audit Tree Record Not Found | The record {{id}} does not exist in the audit tree. Please ensure the audit tree is available and try again. |
0077 | Invalid Date Format Error | The 'initialDate', 'finalDate', or both are in the incorrect format. Please use the 'yyyy-mm-dd' format and try again. |
0078 | Invalid Final Date Error | The 'finalDate' cannot be earlier than the 'initialDate'. Please verify the dates and try again. |
0079 | Date Range Exceeds Limit Error | The range between 'initialDate' and 'finalDate' exceeds the permitted limit of {{limit}} months. Please adjust the dates and try again. |
0080 | Pagination Limit Exceeded | The pagination limit exceeds the maximum allowed of {{pageLimit}} items per page. Please verify the limit and try again. |
0081 | Invalid Sort Order | The 'sort_order' field must be 'asc' or 'desc'. Please provide a valid sort order and try again. |
0082 | Invalid Query Parameter | One or more query parameters are in an incorrect format. Please check the following parameters '{{parameter}}' and ensure they meet the required format before trying again. |
0083 | Invalid Sort Order | Both 'initialDate' and 'finalDate' fields are required and must be in the 'yyyy-mm-dd' format. Please provide valid dates and try again. |
0084 | Duplicate Idempotency Key | The idempotency key '{{key}}' is already in use. Please provide a unique key and try again. |
Best Practices for Handling API Errors
1. Focus on Error Codes
- Error codes are stable and ideal for reliable handling logic.
- Map error codes to specific resolutions to ensure compatibility with API updates.
2. Log and Inform
- Log errors for monitoring and troubleshooting.
- Provide clear, actionable feedback to users with suggestions for resolution.
3. Stay Updated
- Regularly review error code documentation to align with new or updated conditions.
- Keep error-handling logic adaptable to future changes.
Adhering to these practices ensures a robust integration and an exceptional user experience.