The P100 API uses a consistent JSON structure for error responses. Understanding the two primary types of errors is key to building a robust integration.
Error Response Structure#
You will encounter two types of error structures depending on the nature of the issue: standard API errors and data validation errors.
1. Standard API Errors (Business Logic)#
These errors relate to business logic, resource states, or permissions.
They always feature a three-field structure.{
"errorCode": "P424",
"errorName": "source-or-destination-required",
"errorMessage": "Source or destination must be provided."
}
errorCode: A unique code (P424, P433, etc.) for driving application logic.
errorName: A human-readable identifier for the error.
errorMessage: A detailed description for debugging and logging purposes.
2. Validation Errors (P403)#
These errors are automatically generated when request data fails format validation (e.g., invalid email format, missing required field).
They have a streamlined structure.{
"errorCode": "P403",
"errorMessage": "currency must be one of the following values: btc, eth, usdt. Amount can have at most 8 decimal places."
}
Fixed Error Code: Always returns errorCode: "P403".
errorName is Omitted: This field is not included.
Concatenated Messages: errorMessage may contain multiple validation failures in a single string.
Always a 400 Status: The response will always have HTTP 400 Bad Request.
Best Practices for Error Handling#
Regardless of the error type, follow this unified approach:1.
Check the HTTP Status Code First
Use the status code (4xx or 5xx) as the initial indicator of an error.
2.
If errorCode is P403, handle it as a general validation failure (e.g., display an "invalid input" message).
For all other codes (P424, P433, etc.), trigger specific logic (e.g., "Insufficient funds").
3.
Log errorMessage for Debugging
Always log the full errorMessage to aid in diagnosing issues,
but do not display it to the end-user.
Complete Error Code Reference#
The following sections contain all possible error codes returned by the P100 API, organized by HTTP status code for easy reference.HTTP: 400 - Bad Request Errors#
| Error Code | Error Name | Error Message |
|---|
| P403 | N/A | transferTitle should not be empty |
| P410 | invalid-currency | Currency not found |
| P411 | user-exists | User exists |
| P412 | invalid-user | User does not exist |
| P424 | source-or-destination-required | Source or destination must be provided. |
| P426 | invalid-file-type | File type is not supported. Allowed types: image/jpeg, image/png, image/jpg |
| P429 | user-balance-exceeds-limit-exception | User has balance greater than {amount} EUR |
| P430 | maximum-number-of-verifications | User has maximum number of verifications |
| P431 | forbidden-country | User of this country cannot have account |
| P432 | invalid-exchange-lock | Exchange lock is not valid or not exist. |
| P433 | insufficient-funds | Insufficient funds |
| P434 | invalid-card | Card does not exist |
| P435 | invalid-date | Invalid date. Date must be between {year} and {year} |
| P436 | requirements-not-found | Requirements not found. |
| P437 | must-be-owner | User must be the owner of the wallet |
| P439 | no-kyc-files | No kyc files to add |
| P440 | file-too-large | File is too large |
| P442 | user-already-verified | User already verified |
| P444 | poa-verification-rejected | POA verification rejected |
| P446 | kyc-verification-is-not-valid-or-has-expired | KYC verification is not valid or has expired |
| P447 | poa-already-verified | POA already verified |
| P450 | kyc-already-verified | KYC already verified |
| P451 | forbidden-country-card | User of this country cannot have card |
| P452 | country-change-not-possible | Changing country not possible - contact us |
| P453 | too-many-kyc-verification-retires | Verification process has been started too many times |
| P454 | suspend-user-impossible | User has active cards and suspension is not possible |
| P455 | user-suspended | User suspended |
| P457 | currencies-cannot-be-the-same | currencyFrom and currencyTo cannot be the same |
| P458 | user-already-extended | User already extended |
| P459 | user-not-verified | User not verified |
| P461 | user-not-extended | User not extended |
| P500 | unknown-exception | Please contact P100 |
| P501 | service-temporarily-unavailable | Service temporarily unavailable |
P403 – An aggregate validation error code (HTTP 400). The errorMessage field may contain multiple, concatenated messages about various failed conditions (e.g., invalid data format, missing field).
HTTP: 401 - Unauthorized#
| Response | Description |
|---|
| Access Denied. xo1 | API key not provided |
| Access Denied. xo2 | Invalid API key provided |
| Access Denied. xo3 | IP address not whitelisted (production only) |
HTTP: 404 - Not Found Errors#
| Error Code | Error Name | Error Message |
|---|
| P421 | withdrawal-not-found | Withdrawal not found |
| P423 | transfer-not-found | Transfer not found |
| P425 | exchange-not-found | Exchange not found |
| P427 | kyc-file-not-found | Kyc file not found. Missing files: [varies] |
| P428 | sepa-transfer-not-found | Sepa transfer not found |
| P445 | kyc-verification-not-found | KYC verification not found |
| P460 | poa-verification-not-found | POA verification not found. First create verification by extending the user |
| P462 | invalid-order-lock | Order lock is not valid or not exist |
| P463 | order-not-found | Order not found |
| P464 | payment-link-not-found | Payment link not found |
P427 – This error indicates that one or more required KYC files are missing. The error message will specify which of the following files are absent: FRONT PHOTO OF DOCUMENT, FACE PHOTO, and/or BACK PHOTO.
HTTP: 202 - Accepted (Pending Responses)#
| Error Code | Error Name | Error Message |
|---|
| P210 | poa-file-not-found | POA file not yet uploaded. Verification is pending and will resume after POA is added |
| P211 | poa-verification-pending | POA verification pending |
| P212 | kyc-verification-pending | KYC verification pending |
Need Help?#
📖 FAQ
Find answers to the most common questions about our API.💬 Support
Can't find what you're looking for? Contact our support team for assistance.