Skip to content

New service | Last updated: 09 October 2025

Beneficiary Account Verifications API

New

Verify a beneficiary's bank details to ensure the payout is going to the intended account.

Verify an account

POST https://try.access.worldpay-bsh.securedataplatform.com/accountVerifications

Request example

import java.net.*;
import java.net.http.*;
import java.util.*;

public class App {
  public static void main(String[] args) throws Exception {
    var httpClient = HttpClient.newBuilder().build();

    var payload = String.join("\n"
      , "{"
      , " \"merchant\": {"
      , "  \"entity\": \"default\""
      , " },"
      , " \"instructions\": ["
      , "  {"
      , "   \"party\": {"
      , "    \"type\": \"beneficiary\","
      , "    \"payoutInstrument\": {"
      , "     \"type\": \"bankAccount\","
      , "     \"currency\": \"GBP\","
      , "     \"iban\": \"GB41CITI18500818404062\","
      , "     \"accountHolderName\": \"John Smith\","
      , "     \"accountNumber\": \"123456\","
      , "     \"bankCode\": \"184758\","
      , "     \"bankName\": \"Demo Bank\","
      , "     \"branchCode\": \"1234\","
      , "     \"swiftBic\": \"DBbic01\","
      , "     \"accountType\": \"checking\","
      , "     \"address\": {"
      , "      \"type\": \"personal\","
      , "      \"address1\": \"Main Bvd\","
      , "      \"address2\": \"No 1\","
      , "      \"city\": \"London\","
      , "      \"postalCode\": \"012345\","
      , "      \"countryCode\": \"GB\""
      , "     }"
      , "    },"
      , "    \"personalDetails\": {"
      , "     \"type\": \"personal\","
      , "     \"title\": \"Mr\","
      , "     \"firstName\": \"John\","
      , "     \"middleName\": \"\","
      , "     \"lastName\": \"Smith\","
      , "     \"dateOfBirth\": \"2000-01-01\","
      , "     \"companyName\": \"Co Name\","
      , "     \"dateOfIncorporation\": \"2025-01-01\","
      , "     \"email\": \"john@domain.com\","
      , "     \"phones\": ["
      , "      {"
      , "       \"number\": \"7777777777\","
      , "       \"prefix\": \"44\""
      , "      }"
      , "     ]"
      , "    }"
      , "   },"
      , "   \"expandableKeyValuePairs\": {"
      , "    \"key\": \"value\""
      , "   }"
      , "  }"
      , " ]"
      , "}"
    );

    var host = "https://try.access.worldpay-bsh.securedataplatform.com";
    var pathname = "/accountVerifications";
    var request = HttpRequest.newBuilder()
      .POST(HttpRequest.BodyPublishers.ofString(payload))
      .uri(URI.create(host + pathname ))
      .header("Content-Type", "application/json")
      .header("WP-Api-Version", "2025-01-01")
      .header("WP-CorrelationId", "15cd16b2-7b82-41cb-9b11-21be9dacad88")
      .header("Authorization", "Basic " + Base64.getEncoder().encodeToString(("<username>:<password>").getBytes()))
      .build();

    var response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

    System.out.println(response.body());
  }
}

Schema

merchantobject(merchantItems)required
merchant.​entitystringrequired

Your entity reference created as part of on-boarding. Used to route the request in Access Worldpay.

Example: "default"
instructionsArray of objects(instructionsItems)required

Note: Currently only one instruction is accepted.

instructions[].​partyobject(partyItems)required
instructions[].​party.​typestringrequired

The type of this party. Only beneficiary type is accepted.

Example: "beneficiary"
instructions[].​party.​payoutInstrumentobject(payoutInstrumentItems)required

An object that holds details of your payout instrument.

instructions[].​party.​payoutInstrument.​typestring

The type of the payoutInstrument.

Example: "bankAccount"
instructions[].​party.​payoutInstrument.​currencystring= 3 characters^[A-Z]*$
Example: "GBP"
instructions[].​party.​payoutInstrument.​ibanstring

Beneficiary IBAN. You must either provide iban or accountNumber.

Example: "GB41CITI18500818404062"
instructions[].​party.​payoutInstrument.​accountNumbernumber
Example: 123456
instructions[].​party.​payoutInstrument.​accountHolderNamestring

Full name of the beneficiary. accountHolderName is a mandatory element of the request body when firstName and lastName are missing.

Example: "John Smith"
instructions[].​party.​payoutInstrument.​accountTypestringrequired

Type of the account bank.

Enum"checking""savings""moneyMarket""certificateOfDeposit""vista""other"
instructions[].​party.​payoutInstrument.​bankCodestring

The code of the bank which must be exactly six digits.

Example: "184758"
instructions[].​party.​payoutInstrument.​bankNamestring
Example: "Demo Bank"
instructions[].​party.​payoutInstrument.​branchCodestring
Example: 1234
instructions[].​party.​payoutInstrument.​swiftBicstring
Example: "DBbic01"
instructions[].​party.​payoutInstrument.​addressobject(payoutInstrumentAddressItems)required
instructions[].​party.​payoutInstrument.​address.​typestring

Identifies the type of this address.

Enum"home""business""poBox""other"
instructions[].​party.​payoutInstrument.​address.​address1string

The address. Must consist of at least two letters, two words, and one number.

instructions[].​party.​payoutInstrument.​address.​address2string

Line two of the address.

instructions[].​party.​payoutInstrument.​address.​citystring

The city of this address.

instructions[].​party.​payoutInstrument.​address.​postalCodestring

The postal code of this address.

instructions[].​party.​payoutInstrument.​address.​countryCodestring= 2 charactersrequired

The country code specified in <a href="/products/reference/supported-countries-currencies#iso-country-currencies">ISO 3166-1 Alpha-2 country code</a>.

Example: "GB"
instructions[].​party.​personalDetailsobject(personalDetailsItems)required
instructions[].​party.​personalDetails.​typestringrequired

What the party represents: personal - an individual company - a corporation or partnership with multiple owners..

Example: "personal"
instructions[].​party.​personalDetails.​titlestring

The title for this person.

Enum"mr""mrs""miss""ms""dr""mx""misc"
Example: "mr"
instructions[].​party.​personalDetails.​firstNamestring<= 35 characters

First name of the beneficiary. firstName and lastName are mandatory elements of the request body when accountHolderName is missing.

Example: "John"
instructions[].​party.​personalDetails.​middleNamestring<= 35 characters

Middle name name of the beneficiary.

instructions[].​party.​personalDetails.​lastNamestring<= 35 characters

Last name name of the beneficiary.

Example: "Smith"
instructions[].​party.​personalDetails.​dateOfBirthstring

The date the person was born.

instructions[].​party.​personalDetails.​companyNamestring<= 70 characters

Company name. companyName must be provided if accountHolderName is not present and type is company.

instructions[].​party.​personalDetails.​dateOfIncorporationstring

The incorporation date for the company.

instructions[].​party.​personalDetails.​emailstring

An email address for this party.

instructions[].​party.​personalDetails.​phonesArray of objects(phoneItems)

A list of phone numbers associated with this party.

instructions[].​expandableKeyValuePairsobject or null

JSON object of key-value pairs used to supply additional data. The keys and values that you might need to process an account payout to a specific destination, are communicated during the on-boarding process. Duplicate key names are not allowed.

Response example

{
  "outcome": "fullMatch",
  "message": "Account Details Matched",
  "actualAccountHolderName": ""
}

For a full list of outcomes and errors see our API Reference.


Next steps

Make a payout