Table of Contents
- What are Partial Approvals?
- Limitations of Partial Approvals
- Configuring the Payment Device SDK for Partial Approvals
- How to Handle a Partial Approval
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.
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.
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
- 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.
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
47.27 can be used to simulate and test Partial Approvals, and will authorize for
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.
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.