Account Verification
Using Account Verification enables merchants to determine if the account number linked to the payment card used for a transaction is in good standing. The verification is done by running a zero amount transaction that validates the card number without holding funds. A successful verification message is one that the card issuer approves the zero amount authorization request.
A successful account verification does not guarantee that the account has actual funds.
Implementation Considerations
- SDK version requirement:The minimum SDK versions required are iOS 2.47 and Android 2.57.
- Mail order / telephone order (MOTO) transactions are not supported for Account Verification (iOS), the input methods supported are NFC, Magstripe, and ICC.
Performing an Account Verification
In order to process Account Verification Transactions create
MPTransactionParameters
with accountVerificationWithCurrency
and use them to create MPTransactiosParameters
.Code example:
Account Verification transactions have two possible outcomes:MPTransactionProcess *transactionProcess; MPTransactionParametersOptionalsBlock optionalsBlock = ^(id optionals) { [optionals setSubject:@"Donuts!"]; [optionals setStatementDescriptor:@"I describe a statement"]; [optionals setCustomIdentifier:@"tx-12-don-ut"]; [optionals setMetadata:@{@"test"}]; }; MPTransactionParameters * params = [MPTransactionParameters verificationWithCurrency:currency optionals:optionalsBlock]; self.transactionProcess = [self.transactionProvider startTransactionWithParameters:params accessoryParameters:[self.accessoryParametersStore currentAccessoryParameters] processParameters:[self processParameters] registered:^(MPTransactionProcess *transactionProcess, MPTransaction *transaction) {
- Account Validwill be the result when the transaction is successful, meaning the account linked to the card is valid.
- Cannot Validatewill be the result If a transaction is unsuccessful, meaning the account isn't valid or if the transaction wasn't able to process.
The transaction result can be handled using
MPTransactionResultDeclined
or MPTransactionResultApproved
at the end of verification process.Code example:
if (result == MPUTransactionResultApproved) { alert.message = @"Account Valid!"; } else { alert.message = @"Cannot Validate!"; } [alert show]; }];
Testing Account Verification
- Mastercard:
- Transaction Declined
- Result: Cannot Validate
- Visa:
- Transaction Approved
- Result: Valid Account
Receipts
You will be able to see Account Verification results on shopper and merchant receipts with our cp_int_pos_paybutton_summary_screen.html ready-made receipts. If you require more flexibility, see the Custom Receipt functionality and print your own receipts, including payment-related data.
Account Verification
Using Account Verification enables merchants to determine if the account number linked to the payment card used for a transaction is valid. The verification is done by submitting a zero-amount transaction (that does not hold funds) to validate the card number. A successful verification message is one for which the card issuer approves the zero amount authorization request.
A successful account verification does not guarantee that the account has actual funds.
Implementation Considerations
- SDK version requirement:The minimum SDK versions required are iOS 2.47 and Android 2.57.
- In addition to supporting NFC, Magstripe, and ICC input methods, Account Verification (Android) supports mail order / telephone order (MOTO) transactions.
Performing an Account Verification
In order to process Account Verification transactions, create transaction parameters using
VerificationBuilder
. Do not set a transaction value in the transaction parameter because account verification transactions are done using a zero amount (0.0). After configuring the Account Verification workflow, you can start the transaction using transactionProvider
or PayButton.Code example:
VerificationBuilder paramsBuilder = new TransactionParameters.Builder() .verification(Currency.GBP) .workflow(POS) .build(); // Starting transaction with transactionProvider transactionProvider.startTransaction(transactionParameters, accessoryParameters, processParameters, proxyListener); // Starting transaction with PayButton2 activity.startActivityForResult(paybutton2.createTransactionIntent(transactionParameters, processParameters), PAYBUTTON_2_REQUEST_CODE);
You can also configure the Account Verification workflow using
WorkflowConfiguration
. This configuration enables the integrator to set the addressRequired
and cvvRequired
flags for mail order / telephone order (MOTO) account verification transactions.Code example:
WorkflowConfiguration workflowConfiguration = new WorkflowConfiguration.Builder() .moto() .addressRequired(true) .build(); VerificationBuilder paramsBuilder = new TransactionParameters.Builder() .verification(Currency.GBP) .workflow(workflowConfiguration) .customIdentifier("customId");
Account Verification transactions have three possible outcomes:
- Approvedwill be the result when the transaction is successful, meaning the account linked to the card is valid.
- Declinedwill be the result when the transaction is unsuccessful, meaning the account is not valid or the transaction could not be processed.
- Errorwill be the result when an error occurred during transaction processing and the account could not be verified.
Receipt Details
Depending on the outcome of the account verification process, one of the following status messages will be printed on the merchant and shopper receipts:
- Account Validappears when a transaction is approved using the account verification process.
- Cannot Validateappears when a transaction is declined using the account verification process.
- Unable to Authappears when a communication error occurred during the account verification process and the account could not be verified. For some specific exceptions, a more detailed status message may appear.