Skip to main content

Pre-Authorization in Payment Flows

What is pre-authorization and how to use the pre-authorization flow to adjust the payment amount before final capture

Updated over 3 months ago

What Is Pre-Authorization?

In a standard payment flow, the full amount is authorized and captured immediately. With pre-authorization, the payment is authorized for an initial amount, but the actual capture can happen later—after adjusting the final amount if needed.

This gives merchants flexibility to:

  • Increase or decrease the authorized amount

  • Capture the exact final amount after service delivery

  • Reduce fraud and chargebacks

  • Lower processing costs

  • Improve the customer experience


How the Pre-Authorization Flow Works

  1. Create an order with a predefined amount.

  2. Initiate the payment using the appropriate API endpoint:

    • POST /payments/oneoff

    • POST /payments/cit

    • POST /payments/mit

  3. The payment gateway sends a callback to notify the merchant about the authorization status.

  4. The merchant decides whether to deliver the goods or services.

  5. If necessary, the merchant adjusts the amount based on the actual purchase and captures the payment using:

    • POST /payments/capture


If the Final Amount Exceeds the Authorized Amount

There are two possible options when the final amount is greater than the authorized amount:

  • Void and reinitiate:

    1. Void the original payment using POST /payments/void

    2. Start a new MIT payment with the correct amount using POST /payments/mit

  • Split the capture and new payment:

    1. Capture the original pre-authorized amount using POST /payments/capture

    2. Create a new payment for the additional amount using POST /payments/mit

Note: Always ensure that the customer is informed and consents to any additional charges.


Supported Payment Types

Pre-authorization can be used with:

  • One-Off payments

  • Customer Initiated Transactions (CIT)

  • Merchant Initiated Transactions (MIT)


More Information

Full request examples and detailed integration instructions are available in the API documentation.

Did this answer your question?