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:
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 Verification transactions have two possible outcomes:
  • Account Valid
    will be the result when the transaction is successful, meaning the account linked to the card is valid.
  • Cannot Validate
    will 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
In order to test your Account Verification implementation run a zero amount transaction with your test card and, depending on the scheme, select:
  • 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:
  • Approved
    will be the result when the transaction is successful, meaning the account linked to the card is valid.
  • Declined
    will be the result when the transaction is unsuccessful, meaning the account is not valid or the transaction could not be processed.
  • Error
    will 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 Valid
    appears when a transaction is approved using the account verification process.
  • Cannot Validate
    appears when a transaction is declined using the account verification process.
  • Unable to Auth
    appears 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.