{"templateId":"markdown","versions":[{"version":"v1","label":"v1","link":"/products/checkout/web/v1/luhn-compliance","default":false,"active":false,"folderId":"c6f087f2"},{"version":"v2","label":"v2","link":"/products/checkout/web/luhn-compliance","default":true,"active":true,"folderId":"c6f087f2"}],"sharedDataIds":{"sidebar":"sidebar-products/checkout/web/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["partial"]},"custom_product":"Checkout","type":"markdown"},"seo":{"title":"Luhn compliance","description":"Worldpay for Developers - docs, code examples, resources and tools. Everything you need to build your omnichannel payment solution.","siteUrl":"https://docs.worldpay.com/access","image":"/access/assets/worldpay-logo-light.21b7daf79984773a9fcd7d4fbcb07ae5289dfffd6023c4c3dca720c7058e53dc.33f780a6.svg","keywords":"documentation, api, openapi, sdks, developer, payments, json, payouts, 3ds","jsonLd":{"@context":"https://schema.org","@type":"Organization","url":"https://docs.worldpay.com/access","name":"Worldpay"},"meta":[{"name":"google-site-verification","content":"zjziIKaP3ImsqsfhYnEBnq1R85UabiSwl7HTXuwtZuo"},{"name":"doc_product","content":"Access"},{"name":"doc_category","content":"Documentation"}],"llmstxt":{"hide":false,"sections":[{"title":"Payments API","description":"Payment orchestration API combining fraud assessment, 3ds authentication, SCA exemptions, Worldpay Token creation and a card or wallet based payment.","includeFiles":["products/payments/@20240601/**/*"],"excludeFiles":[]},{"title":"Payment Queries API","description":"Querying your payments data, based on a variety of parameters.","includeFiles":["products/payment-queries/@v1/**/*"],"excludeFiles":[]},{"title":"Card BIN Data API","description":"Provides detailed information about a card.","includeFiles":["products/card-bin/@v1/**/*"],"excludeFiles":[]},{"title":"3DS Authentication API","description":"Request 3DS authentication to protect against fraud, be SCA compliant and to shift liability using this standalone API.","includeFiles":["products/3ds/@v3/**/*"],"excludeFiles":[]},{"title":"FraudSight API","description":"Request a risk assessment and receive a response with an outcome (e.g. lowRisk) using this standalone API.","includeFiles":["products/fraudsight/@v1/**/*"],"excludeFiles":[]},{"title":"Checkout SDK","description":"Integrate using our clientside SDKs for both web and native devices. Benefit from SAQ-A/PCI-SSF compliance.","includeFiles":["products/checkout/web/@v2/**/*","products/checkout/ios/@v4/**/*","products/checkout/android/@v4/**/*","products/checkout/react-native/@v3/**/*","products/checkout/flutter/@v1/**/*"],"excludeFiles":[]},{"title":"Tokens API","description":"Minimizes the exposure of sensitive card details and increases the security of your customer's card details.","includeFiles":["products/tokens/@v3/**/*"],"excludeFiles":[]},{"title":"Card Payments API","description":"Request a card payment using this standalone API, requires separate requests for 3DS, Fraud assessment etc.","includeFiles":["products/card-payments/@v7/**/*"],"excludeFiles":[]},{"title":"Card Verifications API","description":"Verify your customer's card to maximize your authentication rates.","includeFiles":["products/card-verifications/@v6/**/*"],"excludeFiles":[]},{"title":"Account Payouts API","description":"Send funds to your customer's bank accounts and search for payouts using parameters.","includeFiles":["products/account-payouts/@20250101/**/*"],"excludeFiles":[]},{"title":"APMs","description":"Pay using eWallets, bank transfers, direct debits, local card schemes, Postpay and eInvoice/ Buy Now Pay Later.","includeFiles":["products/apms/@20240701/**/*"],"excludeFiles":[]},{"title":"Balance API","description":"Request your account details for a single account or all accounts under an entity.","includeFiles":["products/balance/@20250101/**/*"],"excludeFiles":[]},{"title":"Card Payouts API","description":"Send funds to your customer's cards.","includeFiles":["products/card-payouts/@v4/**/*"],"excludeFiles":[]},{"title":"Events (Webhooks)","description":"Receive status updates from Access Worldpay by setting up a webhook.","includeFiles":["products/events/@v1/**/*"],"excludeFiles":[]},{"title":"FX API","description":"Manage Foreign Exchange (FX) on your payments.","includeFiles":["products/fx/@v1/**/*"],"excludeFiles":[]},{"title":"Hosted Payment Pages (HPP) API","description":"Our low-code option to take payments securely at the lowest PCI compliance level - SAQ A.","includeFiles":["products/hosted-payment-pages/@v1/**/*"],"excludeFiles":[]},{"title":"Money Transfers API","description":"Money Transfer OCTs (Original Credit Transaction) allow funds to be pushed to an eligible card in 30 minutes or less.","includeFiles":["products/money-transfers/@v1/**/*"],"excludeFiles":[]},{"title":"Parties API","description":"Create parties, manage your payout instruments and beneficial owners and carry out identity verification checks.","includeFiles":["products/parties/@20250101/**/*"],"excludeFiles":[]},{"title":"SCA Exemptions API","description":"Maximize a frictionless checkout experience by using issuer data insights to apply exemptions.","includeFiles":["products/sca-exemptions/@v1/**/*"],"excludeFiles":[]},{"title":"Split Payments API","description":"Divide funds from a single payment amongst yourself and your parties/sellers.","includeFiles":["products/split-payments/@20250625/**/*"],"excludeFiles":[]},{"title":"Statements API","description":"Retrieve your account statement and see individual entries for all credits and debits.","includeFiles":["products/statements/@20250101/**/*"],"excludeFiles":[]},{"title":"Transfers API","description":"Transfer funds from source account to target account.","includeFiles":["products/transfers/@20250101/**/*"],"excludeFiles":[]},{"title":"Verified Tokens API","description":"Verified Tokens ensures that your customer's payment details are valid and CIT compliant when creating a token.","includeFiles":["products/verified-tokens/@v3/**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Last updated"]},": 31 March 2026 | ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/access/products/checkout/web/changelog/"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Change log"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"luhn-compliance","__idx":0},"children":["Luhn compliance"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Luhn compliance refers to the implementation of the Luhn algorithm, which is a simple checksum formula used to validate identification numbers such as card numbers. It is widely used in the payments industry to verify the integrity of card numbers entered by your customers."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The algorithm ensures that the card number is formatted correctly and helps detect accidental errors such as mistyped or incomplete numbers."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"why-enable-luhn-compliance","__idx":1},"children":["Why enable Luhn compliance?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enabling Luhn compliance in your checkout process ensures:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Input validation"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ","Card numbers entered by customers are checked for basic formatting errors before being submitted for processing."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Improved user experience"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ","Customers are notified immediately if they enter an invalid card number, reducing failed transactions."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Compliance with industry standards"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ","Many payment systems require Luhn validation as part of their card number verification process.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"why-disable-luhn-compliance","__idx":2},"children":["Why disable Luhn compliance?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Disabling Luhn compliance allows the SDK to accept card numbers that do not pass the Luhn algorithm validation. This might be necessary in the following scenarios:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Support for non-Luhn compliant cards"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ","Some card issuers use card numbers that do not conform to the Luhn algorithm. Disabling the check ensures these cards can be processed."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Testing and debugging"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ","During development or testing, you may need to use test card numbers that fail the Luhn check."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Custom business requirements"]},{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]}," ","Certain business models or integrations may require accepting card numbers regardless of their compliance with the Luhn algorithm."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-to-disable-luhn-compliance-checks","__idx":3},"children":["How to disable Luhn compliance checks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default, we enable Luhn compliance checks within the SDK. This means that unless explicitly disabled, we always do these checks."," ","If a card fails the Luhn check, the SDK doesn't allow the creation of a session."," ","If you would like to take payments with non-Luhn compliant cards you can do so by:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["setting ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["allowNonLuhnCompliantCards"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}," in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Worldpay.checkout.init"]}," method when you ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/access/products/checkout/web/card-only#initializing-the-sdk"},"children":["initialize the SDK"]},". This allows the SDK to accept card numbers that do not pass the Luhn check."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"example-configuration","__idx":4},"children":["Example configuration:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"Worldpay.checkout.init({\n  // other configuration options\n  allowNonLuhnCompliantCards: true\n});\n","lang":"javascript"},"children":[]}]},"headings":[{"value":"Luhn compliance","id":"luhn-compliance","depth":1},{"value":"Why enable Luhn compliance?","id":"why-enable-luhn-compliance","depth":2},{"value":"Why disable Luhn compliance?","id":"why-disable-luhn-compliance","depth":2},{"value":"How to disable Luhn compliance checks","id":"how-to-disable-luhn-compliance-checks","depth":2},{"value":"Example configuration:","id":"example-configuration","depth":4}],"frontmatter":{"seo":{"title":"Luhn compliance"}},"lastModified":"2026-04-01T11:57:38.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/checkout/web/luhn-compliance","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}