API Specification
This chapter contains information on the header, request and response body required to make a successful request with the IBAN-Name Check API for Banks (VOP Compliant). At the bottom of the page, also information about the error scenario’s are described.
Document History
Version | Date | Description |
---|---|---|
1.0 | 15 Jan 2025 | Original Digital Version. Aligned with PDF V2.3 |
1.1 | 27 Jan 2025 | Changed format of the 'bicfi' fields |
1.2 | 05 Feb 2025 | Changed naming convention to 'IBAN-Name Check API for Banks (VOP Compliant)' and changed the endpoint to 'v2/account/check/vop'. |
1.3 | 10 Feb 2025 | Changed validation format to the request fields: 'accountId.type.iban' |
1.4 | 20 Mar 2025 | Changed partyAgent and requestingAgent to be conditional for backwards compatibility. Removed X-Request-Id header. Changed the endpoint back to 'v2/account/check/banks'. Updated examples |
1.5 | 15 Apr 2025 | Added HTTP 400 validation errors 'INVALID_REQUESTING_AGENT_BIC' and 'INVALID_PARTY_AGENT_BIC'. Changed layout of the section 'Functional Errors' and description for 'IBAN_IGNORED_FOR_MATCHING' |
1.6 | 16 Jun 2025 | Updated resultType "MATCH" to "MATCHING". |
Endpoints
Environment | Endpoint URL |
---|---|
Sandbox | Provided via MSafe after being request to service@surepay.nl |
Production | Provided via MSafe after being request to service@surepay.nl |
Headers
X-Correlation-Id
stringMandatoryContent-Type
application/jsonMandatoryAuthorization
BearerMandatoryX-End-User
stringOptional
Request body
accountId
ObjectMandatoryname
StringConditionalunstructuredRemittanceInformation
Array of StringspartyAgent
ObjectConditionalrequestingAgent
ObjectConditional
Request
{
"accountId": {
"value": "NL91SRPY1234565432",
"type": "IBAN"
},
"name": "H Groenen",
"partyAgent": {
"financialInstitutionId": {
"bicfi": "ABCDBEBBXXX "
}
},
"requestingAgent": {
"financialInstitutionId": {
"bicfi": "ABCDBEB0XXX"
}
}
}
Response
{
"resultType": "MATCHING",
"result": {
"account": {
"accountHolderType": "NP",
"status": "ACTIVE"
}
}
}
Response body
The response has a different structure depending on the API call results.
- Successful response (HTTP 200 - described below)
- Error response (HTTPXXX - described in Errors)
result
ObjectfraudRiskIndicator
StringAdd-on featureswitchingInformation
StringAdd-on feature
Request
{
"accountId": {
"value": "NL91SRPY1234565432",
"type": "IBAN"
},
"name": "H Groenen",
"partyAgent": {
"financialInstitutionId": {
"bicfi": "ABCDBEBBXXX "
}
},
"requestingAgent": {
"financialInstitutionId": {
"bicfi": "ABCDBEB0XXX"
}
}
}
Response
{
"resultType": "MATCHING",
"result": {
"account": {
"accountHolderType": "NP",
"status": "ACTIVE"
}
}
}
Status and error codes
The IBAN-Name Check API for Banks (VOP Compliant) offered by Surepay, follows the industry standard of using HTTP response codes to provide feedback on the success or failure of an API request. Responses in the 2xx range are indicative of successful transactions, while responses in the 4xx range signify an error related to the provided data, such as a missing parameter or failed charge. In rare cases, responses in the 5xx range indicate an issue with SurePay's servers.
Error response body
0
Array of objects
Error response
[
{
"errorCode": "INVALID_ACCOUNT_ID"
}
]
Technical Errors
HTTP Status Code | Description |
---|---|
400 - Bad request | Request has malformed missing or non-compliant JSON body or URL parameters |
401 - Unauthorised | Authorization header missing or invalid token |
403 - Forbidden | Token has incorrect scope or a security policy was violated |
404 - Not Found | We were unable to find the requested resource in any of our available data sources |
405 - Method not Allowed | The Requester tried to access the resource with a method that is not supported |
406 - Not Accepted | The request contained an accept header that requested a content-type other than application/JSON and a character set other than UTF-8 |
429 - Too many requests | Too many requests towards the endpoint within a given amount of time. In this case the response contains a Retry-After header indicating how long the consumer must wait before retrying the operation |
500 - Internal server error | Something went wrong on the API or service. In this case the body might contain extra details |
503 - Service Unavailable | The service is down for maintenance. The response should include a Retry-After header indicating how long the Requester must wait before retrying the operation |
504 - Timeout | There was no timely response from an upstream server that was needed to complete the request |
Functional errors
HTTP 400 - Bad Request
If the client's submitted request does not pass the validations, the service will return an Error Response object with the details of the issue. The possible ‘errorCodes’ are gathered in the following table:
HTTP 400 - Bad Request
[
{
"errorCode": "INVALID_IBAN",
}
]
Functional error | Description |
---|---|
INVALID_IBAN | The IBAN provided ‘accountId.value’ exceeds the maximum length (140 characters) or contains spaces or any of the following special characters !"#$%&' |
INVALID_NAME | The Name provided exceeds the maximum length (140 characters) or any of the following special characters !"#$%&' |
INVALID_BANKCODE | The provided bank code in the requested IBAN is not supported anymore or does not follow the expected format |
ID_OR_NAME_NOT_PROVIDED | The provided bank code in the requested IBAN is supported anymore or does not follow the expected format |
INVALID_CORRELATION_ID | A correlation ID is invalid if it does not match the regular expression, if its length is shorter than 1 or its length is longer than 70 characters |
INVALID_REQUEST_ID | A Request ID is invalid if it does not match the regular expression |
INVALID_ID_TYPE | The provided ‘accountId.type’ is different than those supported by SurePay: IBAN, EMAIL, PHONE, SHORTENED_ACCOUNT, SORT_CODE_ACCOUNT_NUMBER |
IBAN_AND_NAME_NOT_PROVIDED | Either IBAN or Name were not provided in the request |
IBAN_AND_SHORTENED_ACCOUNT_NUMBER_NOT_PROVIDED | Either IBAN or Shortened account number were not provided in the request |
INVALID_EMAIL | The value provided for any of the ‘accountId.type’ fields exceeds the maximum length (140 characters) or contains spaces or any unallowed special characters |
INVALID_PHONE | The value provided for any of the ‘accountId.type’ fields exceeds the maximum length (140 characters) or contains spaces or any unallowed special characters |
INVALID_SHORTENED_ACCOUNT | The value provided for any of the ‘accountId.type’ fields exceeds the maximum length (140 characters) or contains spaces or any unallowed special characters |
INVALID_SORT_CODE | The value provided for any of the ‘accountId.type’ fields exceeds the maximum length (140 characters) or contains spaces or any unallowed special characters |
INVALID_ACCOUNT_NUMBER | The value provided for any of the ‘accountId.type’ fields exceeds the maximum length (140 characters) or contains spaces or any unallowed special characters |
INVALID_PARTY_AGENT_BIC | The BIC provided in partyAgent is invalid if it does not match the regular expression. |
INVALID_REQUESTING_AGENT_BIC | The BIC provided in requestingAgent is invalid if it does not match the regular expression. |
HTTP 404 - Not found
If the client's submitted request cannot be found, the service will return an Error Response object with the details of the issue. The possible ‘errorCodes’ are gathered in the following table:
HTTP 404 - Not found
[
{
"errorCode": "PAYID_UNKNOWN"
}
]
Functional error | Description |
---|---|
PAYID_UNKNOWN | The requested PayID cannot be found |
IBAN_UNKNOWN | The requested IBAN cannot be found |
SHORTENED_ACCOUNT_NUMBER_NOT_FOUND | The requested shortened account number cannot be found |
IBAN_IGNORED_FOR_MATCHING | The requested IBAN was not considered for matching because it was identified in SurePay’s derived dataset. |