PayRetailers Merchant Validation API

Identity & Bank Validation — Endpoint Reference

Endpoints

Method & PathPurpose
POST /identity-validationValidates that a name and document number match official records for a supported country.
POST /bank-validationValidates that a customer owns the bank account provided, for supported countries.

Both endpoints require HTTP Basic Authentication and are synchronous — there are no webhooks or async job IDs. Every response is returned in the same request/response cycle.

Authentication

Encode shopId:apiKey as HTTP Basic Auth:
Authorization: Basic <base64(shopId:apiKey)>

Request Headers

HeaderRequiredDescription
AuthorizationYesHTTP Basic Auth — Base64(shopId:apiKey).
Content-TypeYesMust be application/json.
x-test-modeNoSet to true to simulate OK without running a real validation. Not billable.
x-request-idNoRecommended trace ID for support correlation; no fixed format.

Response Flow

Both endpoints use two response shapes, keyed off HTTP status:

HTTP StatusResponse ShapeUsed For
200MerchantValidationResponseValidation ran to completion — read validationStatusCode.
400MerchantValidationResponseRequest or shop configuration invalid — validation did not run.
401MerchantApiErrorResponseMissing or invalid credentials.
429MerchantApiErrorResponseRate limit exceeded.
500MerchantApiErrorResponseUnexpected server or auth-processing error.

📘 HTTP 400 and HTTP 200 can both return validationStatusCode: NOK — only HTTP 200 means the validation actually executed.


Validation Status Codes

Returned in validationStatusCode on every HTTP 200 response

StatusMeaning
OKValidation passed. Premium shops may receive a compliance indicator in validationResultReason.
NOKValidation completed but the data did not pass (e.g. name or document mismatch, invalid account).
NOT_VALIDATEDValidation could not be completed (timeout, temporary unavailability, or no record found). Retryable after a delay.

Validation Result Reasons - Identity

Reason codes on NOK depend on the shop's subscription plan.

Basic Plan

OutcomevalidationResultReason
Invalid documentCUSTOMER_INVALID_ID
UnderageCUSTOMER_INVALID_AGE
DeceasedCUSTOMER_NOT_ALIVE
Invalid statusCUSTOMER_INVALID_STATUS
Suspended (Brazil CPF)CUSTOMER_SUSPENDED

Premium Plan

On NOK:

OutcomevalidationResultReason
Sanctions / international listsCUSTOMER_IS_IN_INTERNATIONAL_LISTS

On OK (compliance indicators):

IndicatorvalidationResultReason
PEPCUSTOMER_IS_PEP
PEP relatedCUSTOMER_IS_PEP_RELATED

Validation Result Reasons - Bank account

Not filtered by subscription plan. Returned on HTTP 200 only.

validationResultReasonMeaning
ACCOUNT_INVALID_FORMATAccount number format is invalid.
ACCOUNT_INVALIDAccount not found.
ACCOUNT_PERSONAL_ID_MISMATCHDocument does not match the account holder.
ACCOUNT_NAME_MISMATCHName does not match the account holder.
BANK_NOT_SUPPORTEDBank code is not supported.
COUNTRY_NOT_SUPPORTEDCountry is not supported for bank validation.
MISSING_REQUIRED_FIELDA required field is missing.
PROVIDER_AUTH_ERRORUpstream service authentication error.
PROVIDER_METHOD_UNAVAILABLEValidation method temporarily unavailable.
PROVIDER_CONNECTION_ERRORUpstream service connection error.

Request Models

Identity Validation Request

FieldTypeRequiredDescription
correlationIdstringYesUnique, non-empty identifier echoed in the response.
customerMerchantIdentityCustomerYesCustomer identity details.

Bank Validation Request

FieldTypeRequiredDescription
correlationIdstringYesUnique, non-empty identifier echoed in the response.
customerMerchantBankCustomerYesCustomer identity details.
bankAccountMerchantBankAccountYesBank account details to validate.

Document Type Codes

Identity validation (documentType optional but recommended)

CountryCodedocumentType
ArgentinaARDNI
BrazilBRCPF
ChileCLRUT
ColombiaCOCC
Costa RicaCRCI
EcuadorECCED
MexicoMXCURP
PeruPEDNI

Bank validation (documentType required)

CountryCodedocumentType
ArgentinaARDNI or CUIT
ChileCLRUT
ColombiaCOCC or NIT
EcuadorECCED or RUC
MexicoMXRFC
PeruPEDNI

Bank Account Fields by Country

CountrybankNameaccountAgencyNumberaccountTypeCode
ARNot usedNot usedNot used
MXNot usedNot usedNot used
CLRequiredRequiredRequired — 0002 checking; other codes savings
CORequiredRequiredRequired — 0002 checking; NEQUI_WALLET for Nequi
ECRequired — listed banks onlyRequiredRequired except banks 0023, 0010, 0016, 0020
PERequired unless 20-digit CCIRequired when bankName usedNot used

Supported Countries

EndpointSupported Country Codes
POST /identity-validationAR, BR, CL, CO, CR, EC, MX, PE
POST /bank-validationAR, CL, CO, EC, MX, PE

🚧 BR and CR are enabled for identity-validation only — a bank-validation request for either returns COUNTRY_NOT_SUPPORTED.

Environments

Rate Limits & Retries

• Both endpoints are rate limited; exceeding the limit returns 429 with errorCode: RATE_LIMIT_EXCEEDED.
• Use exponential backoff on 429 and 500. The API does not emit Retry-After or X-RateLimit-* headers.
• NOT_VALIDATED is retryable after a delay, independent of HTTP-level retries.

Test Mode

• x-test-mode: true is available in staging and production.
• A valid request always returns validationStatusCode: OK and validationResultReason: null.
• Not billable — usage records are stored with isBillable: false.
• Shop configuration is not checked, but field and country validation still runs (e.g. an unsupported country still returns COUNTRY_NOT_SUPPORTED).
• Rate limits still apply.