**Last updated**: 11 September 2025 | [**Change log**](/products/card-verifications/changelog/) # Verify a customer's card Verify your customer's card or make a name inquiry. ## Card Verification Verify and validate your customer's card details to protect you against fraud. ### Example request `POST` `https://try.access.worldpay-bsh.securedataplatform.com/cardVerifications` Verification - Card Verification - Token Verification - Network Token ### Parameter descriptions | Parameter | Required? | Description | | --- | --- | --- | | `type` | ✅ | Defines the type of request. Use `cardVerification` to verify a card or `nameInquiry` if you want to make a name inquiry. | | `merchant` | ✅ | An object that contains information about the merchant. See full object descriptions in our [API Reference](/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=0/merchant) | | `transactionReference` | ✅ | A unique reference generated by you that is used to identify a payment throughout its lifecycle. See [transaction reference format](/products/reference/formatting#transaction-reference-format), for more details and the best practices. | | `instruction` | ✅ | The object that contains all the payment information related to the verification request. See full object descriptions in our [API Reference](/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=0/instruction). | | `channel` | ❌ | The payment channel indicates the interaction of the cardholder with you. Supply a value of `moto` to process an authorization as a Mail Order or Telephone Order transaction. When channel is not provided, the default is `ecom` One of: `ecom` or `moto`. | | `customerAgreement` | ❌ | An object that contains specific customer agreements for the transaction. One of: `cardOnFile`, `subscription`, `installment` or `unscheduled`. See full object descriptions in our [API Reference](/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=0/instruction/customeragreement) | | `authentication` | ❌ | An object containing information about the authentication of your customer. See full object descriptions in our [API Reference](/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=0/authentication). | | `recipient` | ❌ | The details of the recipient of the payment. See full object descriptions in our [API Reference](/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=0/recipient). We highly recommend you supply this, if your MCC is 6012 or 6051. Sending this field ensures you remain PSD2 compliant and avoid potential acquirer refusals. | Note You can also find the full schema and more example requests in our [API Reference](/products/card-verifications/openapi/#other/cardVerify). ## Name inquiry You can now make a `nameInquiry` for Visa cards. This allows you to check the validity of the cardholder name provided. This is important if you make payouts so you can check that the person receiving the payout is who they say they are. Prerequisite In order to make a name inquiry, your account must be enabled. Please contact your Implementation Manager. ### Example request `POST` `https://try.access.worldpay-bsh.securedataplatform.com/cardVerifications` Name inquiry - card Name inquiry - token ### Parameter descriptions | Parameter | Required? | Description | | --- | --- | --- | | `type` | ✅ | Defines the type of request. Use `cardVerification` to verify a card or `nameInquiry` if you want to make a name inquiry. | | `merchant` | ✅ | An object that contains information about the merchant. See full object descriptions in our [API Reference](/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=0/merchant) | | `instruction` | ✅ | The object that contains all the payment information related to the verification request. See full object descriptions in our [API Reference](/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=0/instruction). | | `cardHolder` | ✅ | The object that contains cardholder name information. See full object descriptions in our [API Reference](/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=1/instruction/cardholder) | | `lastname` | ✅ | The Last name of the cardholder. Must not contain 'All spaces', 'All zeros' , ' All numeric , 'Question marks - ?'. See full object descriptions in our [API Reference](https://developer.worldpay-bsh.securedataplatform.com/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=1/instruction/cardholder/lastname) | | `firstname` | ❌ | The First name of the cardholder. Must not contain 'All spaces', 'All zeros' , ' All numeric , 'Question marks - ?'. See full object descriptions in our [API Reference](https://developer.worldpay-bsh.securedataplatform.com/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=1/instruction/cardholder/lastname) | | `middlename` | ❌ | The Middle name of the cardholder. Must not contain 'All spaces', 'All zeros' , ' All numeric , 'Question marks - ?'. See full object descriptions in our [API Reference](https://developer.worldpay-bsh.securedataplatform.com/products/card-verifications/openapi/other/cardverify#other/cardverify/t=request&path=&oneof=1/instruction/cardholder/lastname) | Note You can also find the full schema and more example requests in our [API reference](/products/card-verifications/openapi). ### Test values Test cardholder name inquiry outcomes using the values below: | Test card number | `nameInquiry` | `riskFactors` | | --- | --- | --- | | 4462030000000000 | `matched` | No `riskFactors` returned | | 4484070000000000 | `partialMatched` | A `riskFactors.risk` value of `partialMatched` is returned where `riskFactors.type` = `nameInquiry`, for the following `riskFactors.detail` values: `firstName``middleName``lastName` | | 4917300800000000 | `notMatched` | A `riskFactors.risk` value of `notMatched` is returned where `riskFactors.type` = `nameInquiry`, for the following `riskFactors.detail` values: `firstName``middleName``lastName` | | 4444333322221111 | `notChecked` | A `riskFactors.risk` value of `notChecked` is returned where `riskFactors.type` = `nameInquiry`, for the following `riskFactors.detail` values: `firstName``middleName``lastName` | ## 3DS You can optionally submit 3DS parameters for card verification requests. To get the `customer` authentication object you must complete an [authentication request](/products/3ds/web/authentication) using our [3DS API](/products/3ds). #### Example request ### 3DS Parameters You can view the full details for our `authentication` object in our [API Reference](/products/card-verifications/openapi). ## Apple Pay decrypted You can optionally submit Apple Pay decrypted parameters for card verification requests. #### Example request Apple Pay #### Apple Pay decrypted parameter descriptions You can view the full details for the `"card/networkToken+apple"` `paymentInstrument`in our [API Reference](/products/card-verifications/openapi). #### Risk factors We recommend you supply `cvc` and `billingAddress` to increase probability of a successful verification. ## Funds transfers A funds transfer is a money movement for a reason other than for the purchase of goods or services. These are also referred to as Account Funding Transactions (AFTs). Examples: - loading a wallet with funds using a card (including stored value digital wallets and crypto or trading wallets) - adding funds to a pre-paid card using another card - sending money to another person (for example as a gift) details summary Parameters You must include the `instruction.fundsTransfer` object to correctly flag a transaction as a funds transfer. | Parameter | Required? | Description | | --- | --- | --- | | `instruction.fundsTransfer` | ❌ | An object containing details about the transfer and the sender and recipient of funds. | | `fundsTransfer.type` | ✅ | Possible values:`accountToAccount` - Move funds to another financial institution account owned by the same person `cash` - A card is used to fund a transfer where funds are given to the recipient in cash`disbursement` - A card is used as the source of funds for a disbursement `transfer` - Move funds to another account owned by the same person. Eg crypto/trading`personToPerson` - Move money to an account owned by another person `payrollDisbursement` - Use a card to fund payroll disbursements`prePaidTopUp` - Top up a pre-paid card `debitTopUp` - Transfer funds from a card to a debit card account owned by the same person | | `fundsTransfer.purpose` | ❌ | Possible values:`familySupport``travel``education``medical``emergency``savings``gift``other``salary``crowdLending``crypto` | #### Code example ``` "instruction": { "fundsTransfer": { "type": "transfer", "purpose": "crypto", } } ``` ## Response You receive: * a `200` (name inquiry) or `201` (card verification) HTTP response code * a verification `outcome` (either `verified` or `not verified`) * an [issuer response code and description](/products/reference/refusal-response) (`not verified` result only), and a `refusalAdvice` `code` (`not verified` result only and MasterCard is the only card that may return this) * a scheme reference for card on file only (not all issuers return this) * [riskFactors](#risk-factors) * a `paymentInstrument` Best practice Access Worldpay returns a `WP-CorrelationId` in the headers of service responses. We highly recommend you log this. The `WP-CorrelationId` is used by us to examine individual service requests. Note The `paymentInstrument` contains the `paymentInstrument.type` sent in the request at minimum. If you wish to receive more card metadata this must be enabled. For more information contact your Implementation Manager. Verified (card verification) { "outcome": "verified", "scheme": { "reference": "MCCYQ2PBT0626" }, "checkedAt": "2024-06-26T14:33:22.780572Z", "riskFactors": [ { "risk": "matched", "type": "cvc" }, { "risk": "notSupplied", "detail": "postcode", "type": "avs" }, { "risk": "notSupplied", "detail": "address", "type": "avs" } ], "paymentInstrument": { "type": "card/plain+masked", "countryCode": "GB", "cardBrand": "mastercard", "fundingType": "credit", "issuerName": "BANK OF SCOTLAND PLC", "category": "consumer" }, "_links": { "cardVerifications:verification": { "href": "https://access.worldpay-bsh.securedataplatform.com/cardVerifications/MjpHbzRkTGNDVnh1alJzN3NFdG1LSGZnPT06QUVTL0NCQy9QS0NTNVBhZGRpbmc6SktwM2Q0MkFsM2RORlV2NnhkendYTlFZcHlPMmxUeUs0TVlpY0srUmtBcVY4Sk1tRGJaaGVMQ3ZDWjZ0M2dJdDE3Vi94VHhFZHdZR0NXbFlXL1gxSmFUaEZXaHhzbWtzT0xHdlpBc2pPUGZ3eVE3bVRpZVNncVN2NTJRQ3c5QVo=" } } } Not verified (card verification) { "outcome": "not verified", "refusalCode": "1", "refusalDescription": "Refer to card issuer", "checkedAt": "2024-06-26T14:31:43.478Z", "scheme": { "reference": "MCCYQ2PBT0626" }, "riskFactors": [ { "risk": "notChecked", "type": "cvc" }, { "risk": "notChecked", "detail": "postcode", "type": "avs" }, { "risk": "notChecked", "detail": "address", "type": "avs" } ], "paymentInstrument": { "type": "card/plain+masked", "brand": "visa", "fundingType": "credit", "issuerName": "UNKNOWN", "category": "consumer" }, "_links": { "cardVerifications:verification": { "href": "https://access.worldpay-bsh.securedataplatform.com/cardVerifications/Mjp0WmJTZG81akNJVEpvbTdhbEJzdThBPT06QUVTL0NCQy9QS0NTNVBhZGRpbmc6OWFKWDZyS1M1YnVjdWExaUpjVloxZE1NNWdkc3AzdHNkSldXcnBMby9YZXRyM2VpQS9WYXhraFhqMjJsT3NFMDBwZU5lMHJnWVIzR1hNTjJlaTkvWndJWk9vdTZSa3FBSWIrdnRHZ25oamtYL1M2T2NOQU1Gd0ozekM1TmIwMEs=" } } } Verified (name inquiry: matched) { "outcome": "verified", "nameInquiry": "matched" } Verified (name inquiry: not matched) { "outcome": "verified", "nameInquiry": "not matched", "riskFactors": [ { "type": "nameInquiry", "detail": "firstName", "risk": "notSupplied" }, { "type": "nameInquiry", "detail": "middleName", "risk": "notMatched" }, { "type": "nameInquiry", "detail": "lastName", "risk": "notMatched" } ] } Not verified (name inquiry: not matched) { "outcome": "not verified", "nameInquiry": "notMatched", "refusalCode": "N7", "refusalDescription": "Decline for CVV2 failure", "riskFactors": [ { "type": "nameInquiry", "detail": "firstName", "risk": "notMatched" }, { "type": "nameInquiry", "detail": "middleName", "risk": "notMatched" }, { "type": "nameInquiry", "detail": "lastName", "risk": "notMatched" }, { "type": "cvc", "risk": "notMatched" } ] } #### Payment instrument We only return the `paymentInstrument` card metadata if you are enabled for this feature. Best practice If you receive an `outcome` of `not verified` it means that your customer has failed the verification. We **strongly recommend that you refuse the payment** made with that payment instrument. Note In case of any errors, you can get further information in our error reference. #### Location storing You must store the returned location information. Failing to store the location information means the outcome of the verification is lost. You are not able to query a historic verification. The location is stored in the `href` of the `verifications:verification` action link received on your verifications response. Best practice We recommend you store all responses.