Front end messages
With having executed multiple billions of checks for our customers, SurePay has developed a set of best practices how to effectively implement our API scenario's into the front end of your payments interface. These messages are tested and proven to have a positive impact on customer's trust when initiating (instant) payments. Feel free to use the examples as a suggestion when implementing our API.
Example 1: Full match
SurePay suggests to show a visual indication that the resultType
= MATCHING to ensure the user the check has passed and can confidently continue the payment process.
We provide several suggestions like a simple checkmark or a guiding text.
Field name | Value |
---|---|
resultType | MATCHING |
accountHolderType | NP / ORG / UNKNOWN |
nameSuggestion | <not provided> |
response body example
{
"result": {
"account": {
"accountHolderType": "NP",
"status": "ACTIVE"
},
"resultType": "MATCHING"
}
}
Example 2: Mistype with name suggestion
In the case of a MISTYPE when a nameSuggestion
is available SurePay suggests to show a clickable name suggestion.
This will allow the user to click the name suggestion and retreive a verified result before continuing the payment flow.
Field name | Value |
---|---|
resultType | MISTYPE |
accountHolderType | NP / ORG / UNKNOWN |
nameSuggestion | <the name suggestion> |
response body example
{
"result": {
"account": {
"accountHolderType": "NP",
"status": "ACTIVE"
},
"nameSuggestion" : "Patrick Williams",
"resultType": "MISTYPE"
}
}
Supporting text:
Do you mean <nameSuggestion>
?
Example 3: Mistype without a name suggestion
When no nameSuggestion
is avaliable in case of a MISTYPE, we suggest to let the user know they made a typo so they can re-verify the name.
Field name | Value |
---|---|
resultType | MISTYPE |
accountHolderType | NP / ORG / UNKNOWN |
nameSuggestion | <not provided> |
response body example
{
"result": {
"account": {
"accountHolderType": "NP",
"status": "ACTIVE"
},
"resultType": "MISTYPE"
}
}
Supporting text:
The name contains a typo, please verify and try again.
Example 4: No match on a Natural Person owned account
It's not allowed to show a name suggestion in case of a No Match on a natural person (because of GDPR). By showing an emphasis on "person" (eg make it bold), the payer will think twice as a company is not a person (most invoice frauds use company names).
Field name | Value |
---|---|
resultType | NOT_MATCHING |
accountHolderType | NP |
nameSuggestion | <not provided> |
response body example
{
"result": {
"account": {
"accountHolderType": "NP",
"status": "ACTIVE"
},
"resultType": "NOT_MATCHING"
}
}
Supporting text:
Caution! This name belongs to a person and is not registered to <user_input>
.
Example 5: No match on a Organisation with suggestion and municipality
Publicly available data, like company name, may be shown to the payer. By showing the payer the company name and the place of business, the payer can Google this information and decide whether he/she still trusts that the right payee data was used. For example: it could be that the company uses a trading name that was not officially registered.
Field name | Value |
---|---|
resultType | NOT_MATCHING |
accountHolderType | ORG |
nameSuggestion | <the name suggestion> |
municipality | <the municipality> |
response body example
{
"result": {
"account": {
"accountHolderType": "ORG",
"municipality": "Amsterdam",
"status": "ACTIVE"
},
"nameSuggestion" : "Amsterdam Food Company",
"resultType": "NOT_MATCHING"
}
}
Supporting text:
Caution! This account is registered to <nameSuggestion>
from <municipality>
.
Example 6: No match on a Organisation with suggestion
In some cases, the place of business or postal code is not provided by the data provider. In those cases, SurePay is not able to provide the municipality
in the response.
Field name | Value |
---|---|
resultType | NOT_MATCHING |
accountHolderType | ORG |
nameSuggestion | <the name suggestion> |
municipality | <not provided> |
response body example
{
"result": {
"account": {
"accountHolderType": "ORG",
"status": "ACTIVE"
},
"nameSuggestion" : "Amsterdam Food Company",
"resultType": "NOT_MATCHING"
}
}
Supporting text:
Caution! This account is registered to <nameSuggestion>
.
Example 7: No match on a Organisation without any information
In some cases, also the name suggestion is also not provided by the data provider. In those cases, SurePay will not provide namesuggestion in the response.
Field name | Value |
---|---|
resultType | NOT_MATCHING |
accountHolderType | ORG |
nameSuggestion | <not provided> |
municipality | <not provided> |
response body example
{
"result": {
"account": {
"accountHolderType": "ORG",
"status": "ACTIVE"
},
"resultType": "NOT_MATCHING"
}
}
Supporting text:
Caution! This name belongs to an organisation and is not registered to <user_input>
.
Example 8: No match on an unknown account
In case of account holder type "Unknown", SurePay does not know whether the account belongs to a company or natural person. To be on the safe side, the name suggestion is not provided.
Field name | Value |
---|---|
resultType | NOT_MATCHING |
accountHolderType | UNKNOWN |
nameSuggestion | <not provided> |
municipality | <not provided> |
response body example
{
"result": {
"account": {
"accountHolderType": "UNKNOWN",
"status": "ACTIVE"
},
"resultType": "NOT_MATCHING"
}
}
Supporting text:
Caution! This account is not registered to <user_input>
.
Example 9: Name too short
Most common case will be that the payer only enters first name, or initials. SurePay requires at least a match against the last name or birth name, before we return a Matching or Mistype. The payer should be asked to enter the full name.
Field name | Value |
---|---|
resultType | NAME_TOO_SHORT |
accountHolderType | <not provided> |
nameSuggestion | <not provided> |
response body example
{
"result": {
"resultType": "NAME_TOO_SHORT"
}
}
Supporting text:
Please enter the full name.
Example 10: Inactive account
The payer should be warned if he/she is about to pay to an inactive account. The money will be bounced.
Field name | Value |
---|---|
resultType | COULD_NOT_MATCH |
accountHolderType | <not provided> |
status | <INACTIVE> |
nameSuggestion | <not provided> |
response body example
{
"result": {
"account": {
"status": "INACTIVE"
},
"resultType": "COULD_NOT_MATCH"
}
}
Supporting text:
This account appears to be inactive
Example 11: Not found
The payer should be aware, but not alarmed when transferring funds to an account which can not (yet) be verified.
Field name | Value |
---|---|
response code | 404 - NOT FOUND |
errorCode | IBAN_UNKNOWN |
Response body of 404 NOT FOUND
[
{
"errorCode": "IBAN_UNKNOWN"
}
]
Supporting text:
Name and account number can not be verified. Please double check whether the account number is correct.
Example 12: Invalid IBAN
The IBAN provided exceeds the maximum length (140 characters) or contains spaces or any unallowed special characters.
Field name | Value |
---|---|
response code | 400 - BAD REQUEST |
errorCode | INVALID_IBAN |
Response body of 400 BAD REQUEST
[
{
"errorCode": "INVALID_IBAN"
}
]
Supporting text:
Please enter a valid IBAN.
Example 13: Invalid bank code
The provided bank code in the requested IBAN does not exist (anymore) or does not follow the expected format.
Field name | Value |
---|---|
response code | 400 - BAD REQUEST |
errorCode | INVALID_BANKCODE |
Response body of 400 BAD REQUEST
[
{
"errorCode": "INVALID_BANKCODE"
}
]
Supporting text:
This account appears to be inactive.