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 nameValue
resultTypeMATCHING
accountHolderTypeNP / ORG / UNKNOWN
nameSuggestion<not provided>

response body example

{
   "result": {
       "account": {
       "accountHolderType": "NP",
       "status": "ACTIVE"
       },
       "resultType": "MATCHING"
   }
}

match


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 nameValue
resultTypeMISTYPE
accountHolderTypeNP / ORG / UNKNOWN
nameSuggestion<the name suggestion>

response body example

{
   "result": {
       "account": {
       "accountHolderType": "NP",
       "status": "ACTIVE"
       },
       "nameSuggestion" : "Patrick Williams",
       "resultType": "MISTYPE"
   }
}

match

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 nameValue
resultTypeMISTYPE
accountHolderTypeNP / ORG / UNKNOWN
nameSuggestion<not provided>

response body example

{
   "result": {
       "account": {
       "accountHolderType": "NP",
       "status": "ACTIVE"
       },
       "resultType": "MISTYPE"
   }
}

match

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 nameValue
resultTypeNOT_MATCHING
accountHolderTypeNP
nameSuggestion<not provided>

response body example

{
   "result": {
       "account": {
       "accountHolderType": "NP",
       "status": "ACTIVE"
       },
       "resultType": "NOT_MATCHING"
   }
}

match

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 nameValue
resultTypeNOT_MATCHING
accountHolderTypeORG
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"
   }
}

match

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 nameValue
resultTypeNOT_MATCHING
accountHolderTypeORG
nameSuggestion<the name suggestion>
municipality<not provided>

response body example

{
   "result": {
       "account": {
       "accountHolderType": "ORG",
       "status": "ACTIVE"
       },
       "nameSuggestion" : "Amsterdam Food Company",
       "resultType": "NOT_MATCHING"
   }
}

match

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 nameValue
resultTypeNOT_MATCHING
accountHolderTypeORG
nameSuggestion<not provided>
municipality<not provided>

response body example

{
   "result": {
       "account": {
       "accountHolderType": "ORG",
       "status": "ACTIVE"
       },
       "resultType": "NOT_MATCHING"
   }
}

match

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 nameValue
resultTypeNOT_MATCHING
accountHolderTypeUNKNOWN
nameSuggestion<not provided>
municipality<not provided>

response body example

{
   "result": {
       "account": {
       "accountHolderType": "UNKNOWN",
       "status": "ACTIVE"
       },
       "resultType": "NOT_MATCHING"
   }
}

match

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 nameValue
resultTypeNAME_TOO_SHORT
accountHolderType<not provided>
nameSuggestion<not provided>

response body example

{
   "result": {
       "resultType": "NAME_TOO_SHORT"
   }
}

match

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 nameValue
resultTypeCOULD_NOT_MATCH
accountHolderType<not provided>
status<INACTIVE>
nameSuggestion<not provided>

response body example

{
   "result": {
       "account": {
       "status": "INACTIVE"
       },
       "resultType": "COULD_NOT_MATCH"
   }
}

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 nameValue
response code404 - NOT FOUND
errorCodeIBAN_UNKNOWN

Response body of 404 NOT FOUND

[
    {
         "errorCode": "IBAN_UNKNOWN"
    }
]

Not found

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 nameValue
response code400 - BAD REQUEST
errorCodeINVALID_IBAN

Response body of 400 BAD REQUEST

[
    {
         "errorCode": "INVALID_IBAN"
    }
]

Not found

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 nameValue
response code400 - BAD REQUEST
errorCodeINVALID_BANKCODE

Response body of 400 BAD REQUEST

[
    {
         "errorCode": "INVALID_BANKCODE"
    }
]

Not found

Supporting text:
This account appears to be inactive.