Global Payee Verification (GPV) API (UK, AU only at this time)

Integration overview

Global Payee Verification is a synchronous REST API that validates whether the supplied payee name aligns with the supplied account identifier before funds movement. Customers can call it independently of MassPay order creation and use the returned outcome to decide whether to proceed, prompt a user, correct payee master data, or stop for review.

Base endpoint

POST /banks/{{CustomerId}}/globalvalidate

The final hostname and environment-specific paths are provided during onboarding. Typical environments are Sandbox/UAT for testing and Production for live customer traffic.

Authentication and headers

HeaderRequiredDescription
AuthorizationYesBearer OAuth access token issued for the customer integration.
Content-TypeYesapplication/json
Idempotency-KeyYesUnique key per logical verification request. Reuse the same key only when retrying the same request.
X-Correlation-IdRecommendedCustomer-generated trace ID used for support, audit, and end-to-end troubleshooting.

Request payload

{
  "beneficiaryDetails": [
    {
      "countryCode": "GB",
      "creditorName": "SHERLOCK HOLMES",
      "iban": "GB00BARC12345612345678",
      "creditorBic": "ADCBAEAA",
      "localAccountNumber": "12345678",
      "sortCode": "987662",
      "accountHolderType": "Business",
      "postalAddress": {
        "addressType": "string",
        "streetName": "1 London Bridge",
        "buildingName": "Shard",
        "postCode": "SE1 9SG",
        "townName": "London",
        "country": "GB"
      }
    }
  ]
}

Required and optional fields

FieldTypeRequiredNotes
beneficiaryDetailsarrayRequiredArray of beneficiaries to validate
beneficiaryDetails.countryCodestringRequiredISO 2-letter country code
beneficiaryDetails.creditorNamestringRequiredBeneficiary name
beneficiaryDetails.ibanstringConditionalRequired when localAccountNumber+sortCode not provided
beneficiaryDetails.creditorBicstringConditionalOptional for IPID (UK/AU), Required for SWIFT (other countries)
beneficiaryDetails.localAccountNumberstringConditionalRequired with sortCode when iban not provided (UK/AU CoP)
beneficiaryDetails.sortCodestringConditionalRequired with localAccountNumber when iban not provided (UK/AU CoP)
beneficiaryDetails.accountHolderTypestringConditional"Business" or "Personal" — Required only for COP (countryCode GB or AU). Not required for other countries.
beneficiaryDetails.postalAddressobjectOptionalUsed for SWIFT Global Validate only
beneficiaryDetails.postalAddress.addressTypestringOptionalAddress type
beneficiaryDetails.postalAddress.streetNamestringOptionalStreet name
beneficiaryDetails.postalAddress.buildingNamestringOptionalBuilding name
beneficiaryDetails.postalAddress.postCodestringOptionalPostal code
beneficiaryDetails.postalAddress.townNamestringOptionalTown/city name
beneficiaryDetails.postalAddress.countrystringOptionalISO 2-letter country code

Supported identifier patterns

IBAN: Use for IBAN markets where available.

Local account and routing: Use for domestic account number plus sort code, routing number, branch code, or equivalent local routing identifier.

BIC and account: Use where account verification is supported via bank/network lookup.

Proxy identifiers: Use phone, email, national ID, or scheme-specific aliases only where the relevant corridor and provider support them.

Successful response example

{
    "beneficiaryDetails": [
        {
            "responseCode": "2000",
            "responseMessage": "ValidationSucceeded",
            "validationStatus": "MTCH",
            "validationResult": {
                "validatorName": "IPID",
                "validationData": {
                    "matchScore": 1.0,
                    "matchScoreDescription": "Strong Match",
                    "reasonCode": "MATC"
                }
            },
            "accountDetails": {
                "accountNumber": "12345678",
                "name": "FIRST NAME LAST NAME",
                "referenceId": "9ec4abeb-006e-49b5-b4dd-80ac471dc141"
            }
        }
    ]
}

Outcome handling guidance

StatusMeaningRecommended Customer Action
MATCHThe supplied payee name aligns with the account record.Proceed according to the customer's payment policy and store the verficationId for audit.
CLOSE_MATCHThe name is similar but not exact; a suggested Name may be returned.Prompt the user to confirm, update the payee record if policy allows, or route to operational review.
NO_MATCHThe supplied name materially differs from the account record.Stop or hold the payment/payee update, warn the user, and re-check details with the beneficiary.
UNAVAILABLEVerification could not be completed for the corridor, identifier, provider, or current service state.Apply the customer’s fallback policy. Do not treat Unavailable as a Match.

Error handling

HTTP statusScenarioCustomer action
200Request accepted and a business outcome is returned.Use the status field to make the workflow decision.
400Invalid or incomplete request payload.Correct the request. Do not retry unchanged.
401 / 403Missing, expired, or insufficient credentials/scopes.Refresh credentials or request the required access.
408 / 504Timeout at the gateway or upstream provider.Retry with the same Idempotency-Key or apply fallback policy.
429Rate limit exceeded.Back off and retry after the advised interval.
5xxTemporary service or upstream failure.Retry with exponential backoff and the same Idempotency-Key.

Idempotency, retries, and caching

Generate a unique Idempotency-Key for each logical verification request.

When retrying after a timeout or transient failure, resend the same payload with the same Idempotency-Key.

Do not reuse an idempotency key for a different payee, account, or changed payee name.

Where expiresAt is returned, customers may reuse the result only within their internal policy and the validity period shown.

Security, privacy, and audit requirements

Send only the minimum payee and account data required for verification.

Use TLS for all API calls and keep OAuth client credentials in a secure secrets store.

Do not log raw account identifiers, access tokens, or unnecessary personal data in customer application logs.

Store verificationId, referenceId, status, reasonCodes, source, timestamp, and correlation ID for audit and support.

Apply role-based access controls to any UI that displays verification results or suggested payee names.

Recommended customer implementation flow

Capture or retrieve payee name, country, and account identifiers from the customer system.

Validate local formatting before calling the API, for example required fields and account/routing length.

Call POST /masspay/v1/payees/verification with OAuth token, Idempotency-Key, referenceId, and X-Correlation-Id.

Evaluate the returned status and reasonCodes against the customer’s risk policy.

For MATCH, allow the payee or payment workflow to continue.

For CLOSE_MATCH, prompt for confirmation or update to suggestedName where authorised.

For NO_MATCH, stop or hold the workflow until the details are corrected and re-verified.

For UNAVAILABLE, apply the agreed fallback process and avoid presenting it as successful verification.

Persist verification evidence for later payment/order reference, support, and audit.



Did this page help you?
Convera Logo

© 2022 All Rights Reserved