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. 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.

  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.

  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.