Table of Contents
- Overview
- What are Partial Approvals?
- Limitations of Partial Approvals
- Configuring the Payment Device SDK for Partial Approvals
- How to Handle a Partial Approval
Overview
This article provides a top-level explanation of Partial Approvals, their purpose & limitations, and describes the process of programmatically handling Partial Approval callbacks using the Payment Device SDK.
What are Partial Approvals?
In the instance there are not enough funds to authorize the full amount requested, Partial Approvals allow for the card issuer to authorize funds for amounts under the full amount requested.
Limitations of Partial Approvals
Partial Approvals are limited in their scope in the following ways:
- Requires at least the following versions of the Payment Device SDK to support the relevant devices:
- Payment Device SDK 2.05
- Miura
- Bluepad50
- Payment Device SDK 2.05
Partial approvals are a standard requirement across all processors that support EMV in the US, however, it is up to the card issuer to authorize a partial amount. The Payment Device SDK nor NMI can confirm whether a card is capable of partial approval until after the transaction has transpired.
Configuring the Payment Device SDK for Partial Approvals
The Payment Device SDK does not require any integration configuration to enable if the requirements are met, however, Partial Approvals will not be offered unless enabled against the Affiliate account or either Terminal Group or Terminals. As such, if Partial Approvals are required, please ensure you contact NMI support.
On the staging platform, the special amount 10.27
and 47.27
can be used to simulate and test Partial Approvals, and will authorize for 10.00
and 40.00
respectively.
How to Handle a Partial Approval
A Partial Approval is indicated by the presence of PARTIALLY_APPROVED
in the TRANSACTION_RESULT
key within the Transaction Finished Event Parameters
after an initial transaction. The AMOUNT
key-value in the response will indicate how much was successfully authorized by the card-issuing bank, resulting in an authorization against this card for the amount returned.
Your integration will then be required to process the remaining amount; this can be done in a variety of ways, such as offering to process the remainder as cash or initiating another card transaction for the remaining funds required.
If the customer chooses to terminate the transaction and not continue, you will need to issue a void for the partially approved transaction to ensure the transaction is marked not to go for settlement. If the customer continues with payment via other means, and successful closure of the transaction is met, you will need to confirm the initial Partial Approval, and in the instance where a second transaction is processed with a different card, the second authorization will also need to be confirmed.
Payment Device SDK Callback
Within the Payment Device SDK, there is a bespoke method callback for Partial Approvals named onPartialApproval
. This passes in the current transaction parameters, which should be checked to ascertain if the key OperatorPinRequired
is set to True
. If the Operator PIN is required, your integration should prompt the till user to obtain the PIN. Once this is obtained, your integration should add the key OperatorPin
with the value given by the till user into the existing parameters object.
Lastly, you would add the key Result
with a value of True
into the existing parameter object, and invoke the continuation method continuePartialApproval(parameters)
with the amended parameter keys.