Overview

Partial authorization allows your customers to use multiple payment methods to pay the total balance due on a single check. The customer uses one payment method, like a gift card to pay for a portion of the total balance due and then uses another payment method, like a payment card to pay the remaining balance.

Toast applies customer funds to the payment in the following order:

  1. Base amount

  2. Tip amount

For example, your customer has a check balance of $50.00. Your customer completes a partial authorization for $25.00 using a gift card and then pays the remaining $25.00 balance with a payment card.

To complete a partial authorization using two different payment methods, you need to create and confirm two payment intents.

The following procedure is a high-level overview of how to create and confirm two payment intents.

  1. Use your hosted checkout - payment credentials to send a POST request to the /v1/payment-intents endpoint of the payment intents API to create a payment intent. For each payment method you want to allow partial authorization for, set the paymentMethodOptions.{type}.partialAuthorization value to true. The type value is the type of the payment method.

  2. Send a POST request to the /v1/payment-methods endpoint of the payment methods API to create a payment method to attach to the payment intent. This returns a PaymentMethodResponse object.

  3. Confirm the payment intent by invoking the confirmIntent SDK function or send a POST request to the /v1/payment-intents/{paymentIntentId}/confirm endpoint of the payment intents API. If the paymentMethodOptions.{type}.partialAuthorization for the payment method used was set to true, the Toast platform captures the partial amount.

    The paymentMethodDetails object includes the fields, amountAuthorized and amountRequested. The amountRequested is 5000 (represents $50.00). The amountAuthorized is 2500 (represents $25.00) . You must create another payment intent for the remaining 2500 and the tip, 1000.

  4. Send a POST request to the /v1/payment-intents endpoint of the payment intents API to create another payment intent for the remaining balance. In the request body, include the remaining balance due, 2500 and the tip, 1000.

  5. Send a POST request to the /v1/payment-methods endpoint of the payment methods API to create a payment method to attach to the payment intent. This returns a PaymentMethodResponse object.

  6. Confirm the payment intent by invoking the confirmIntent SDK function or send a POST request to the /v1/payment-intents/{paymentIntentId}/confirm endpoint of the payment intents API.