Non-Payment Authentication

Non-Payment Authentication (NPA)

Non-Payment Authentication (NPA in short) offers the option to authenticate the shopper even when there is no payment transaction happening and in cases when the transaction amount is not known. For example the cardholder wants to store their card for future payments but doesn't want to buy anything, or the merchant might want to perform a (zero-amount) card verification transaction. NPA offers an easy way for merchants to make sure that the cardholder is authenticated in these scenarios.

Authentication during registration

To perform a 3D Secure authentication before a card is tokenized, the feature should be enabled on the back-end. Please ask your technical support team to enable this functionality

Once it is activated, when the cardholder registers their card details, it will trigger a 3D Secure authentication before the card registration.

Please note: if the transaction is an authorization (PA) where registration is enabled (by sending createRegistration=true), the 3D Secure authentication will be triggered for the payment transaction and not for the registration.

For further information on how to use our tokenization service, please refer to the tokenization guide.

NPA for a payment transaction

It is possible to perform a NPA for a payment transaction. For example for an account verification transaction (zero-amount authorization). In this case there are no additional settings or parameters are required. Just make sure that 3D Secure is enabled and NPA will be triggered automatically for zero amount PA payment types.

Additionally, NPA can be forced via an additional parameter. Even if the amount is not zero, if the parameter threeDSecure.npa=true is sent, it will trigger a NPA instead of a regular 3D Secure payment authentication with the payment amount. Please be aware that the authenticated amount should always be the same, or higher than the payment amount.

Note: if the amount=0.00 is sent, but threeDSecure.amount is greater than zero, then the 3D Secure authentication will use the amount from the threeDSecure.amount field.