Checkout icon

Partial authorizations

Allow partial authorizations to reduce declined transactions due to insufficient funds.

To reduce the number of declined transactions due to insufficient funds, you can integrate partial authorizations (or "partial approvals"). This feature allows an issuing bank to return an authorization for the available amount when the requested amount is higher than the shopper's balance, instead of declining the transaction. You can decide how to follow up, such as prompting the shopper for a second payment method to collect the outstanding balance or canceling the transaction to remove the hold on funds.

Requirements

Before you begin, take into account the following requirements, limitations, and preparations

Requirement Description
Integration type An online payments integration that uses the /payments endpoint, with Checkout API v69 or later:
Limitations
  • Partial authorization is supported for Visa and Mastercard payments, but there is no guarantee that all issuers support partial authorizations.
  • You can not integrate with partial authorizations if you are using the Sessions flow.
Setup steps Before you begin, ask our Support Team to enable partial authorizations.

How it works

Partial authorization allows you to authorize a portion of the payment when the shopper has insufficient funds, and then collect the remaining balance.

  1. You make a payment request with allowPartialAuth to indicate you accept partial amounts.
  2. If the shopper does not have sufficient funds, the issuer only authorizes the amount available on the card.
  3. You receive a response with the authorized amount.
  4. You follow up the partial authorization by prompting the shopper for the remaining balance, canceling the transaction, or taking no further action.
  5. If you choose to collect the remaining balance, you connect multiple partial authorizations to the same transaction using the reference field.

Make the initial payment

  1. Send a /payments request specifying:

    • additionalData.allowPartialAuth: set to true. When the requested amount is higher than the amount available in the account, this parameter asks the issuing bank to return an authorization for the available amount, instead of declining the transaction.
    • reference: your order reference. If you need to follow up a partial authorization with another payment method for the outstanding balance, the reference values must be the same to let you connect the payments for reconciliation.
  2. In the response, check the following fields:

    • resultCode: the value PartiallyAuthorised indicates that there were insufficient funds to authorize the full amount.
    • additionalData.authorisedAmountValue: the authorized amount. Use this to calculate the outstanding balance.
  3. If only a partial amount was authorized, see what you can do to follow up a partial authorization.

Follow up a partial authorization

If the initial payment didn't cover the full amount, you can start a new transaction to authorize the outstanding amount. You have the following options:

  • Prompt the shopper to pay for the outstanding amount with another payment method:

    1. Make a /payments request, and include the same fields you included in the initial payment.
    2. Calculate the outstanding amount to send it in amount.
    3. In the response, check if the full amount was authorized.

    For example, to follow up the transaction in the example above, you would make the following request

  • Cancel the transaction.
    This is possible if you use delayed capture or manual capture. Canceling the transaction removes the hold for the partially authorized amount.

  • Capture the partially authorized amount and take no further action*.

  • For tokenized payments, you can retry the original payment method at a later time to collect the outstanding balance*.

You can also combine these options. For example, you can set a minimum amount for a partial authorization and cancel the transaction if the shopper does not have sufficient funds to cover that minimum amount.

Testing

The test environment simulates a partially authorized amount by deducting 100 (in minor units) from the original amount. For example, if the request amount is 1139, the authorisedAmountValue in the response is 1039.

To verify that you can process partial authorizations correctly:

  1. Send a /payments request with:

    • Any amount that ends with 139
    • The additionalData.allowPartialAuth parameter set to true, and details from one of the following cards:
    Test card Expiry date CVC
    4166 6766 6766 6746 (Visa) 03/2030 737
    2222 4000 1000 0008 (Mastercard) 03/2030 737
  2. Check that the response shows:

    • An authorisedAmountValue that is 100 (in minor units) less than the original amount.
    • The PartiallyAuthorised result code.

See also