Preauthorization
Preauthorization lets you place a temporary hold on a customer's card without charging the card immediately. After you deliver the goods or service, you can capture the final amount you need to collect or release the hold.
This is useful when you need to confirm that funds are available before fulfilling an order or when the final amount may change.
đź’ˇ Important to note
Preauthorization is currently available only to businesses registered in South Africa, and it isn't enabled by default. To request access, please contact our Support team at support@paystack.com.
When should I use Preauthorization?
Preauthorization is useful when:
You won't deliver the goods or service immediately.
The final amount may differ from the amount estimated at checkout.
You need to confirm that a customer has sufficient funds before fulfilling an order.
A customer may cancel before you complete the service.
Common use cases include ride-hailing, hotel bookings, e-commerce with payment on delivery, and metro or transit services.
How does Preauthorization work?
A Preauthorization payment has four main stages:
1. Initialize the Preauthorization
You initialize a Preauthorization for an estimated amount. The customer completes the authorization through Paystack Checkout or through your own PCI-compliant checkout if you're approved to handle card details directly.
2. Reserve the funds
After the customer authorizes the payment, the estimated amount is placed on hold on their card. The customer may see this as a pending transaction with their bank.
The funds are not paid out to you at this stage. They're only reserved and can't be spent elsewhere while the hold is active.
3. Capture the payment
After delivering the goods or service, you capture the final amount you want to collect. The amount captured must be equal to or less than the amount reserved.
For example, if you reserve R500 and the final amount is R450, you can capture R450. The captured amount will be processed for payout to your Paystack account.
4. Release the remaining funds
If you capture less than the reserved amount, the balance is automatically released to the customer. You don't need to process a refund for the difference.
Amount reserved | Amount captured | Result |
|---|---|---|
R500 | R500 | R500 is captured |
R500 | R450 | R450 is captured and R50 is released |
R500 | R600 | The request isn't allowed |
If you don't need to collect any payment—for example, if the customer cancels—you can release the entire hold instead.
đź’ˇ Important to note
A Preauthorization hold doesn't mean the funds have been paid to you. The funds are collected only when you capture the payment.
How long does a Preauthorization hold last?
The default hold period is five days. If you're integrating through the API, you can use the expire_after_days parameter to choose when the hold expires and expire_action to specify whether Paystack should capture or release the funds at expiry.
Card issuers may apply their own rules to authorization holds, so you should capture or release the funds as soon as you know the final amount. See our Card Preauthorization guide and Preauthorization API documentation for the currently supported parameter limits.
How much does Preauthorization cost?
There are two possible charges:
Reservation fee: R1.00, excluding VAT, when the funds are reserved.
Transaction fee: The standard card transaction fee when you capture the payment.
Standard South African card pricing is:
Card type | Transaction fee |
|---|---|
Local cards | 2.9% + R1.00, excluding VAT |
International cards | 3.1% + R1.00, excluding VAT |
Your account may have custom pricing, so the fees that apply to your business may differ.
If you release the entire hold without capturing a payment, you'll pay only the reservation fee. You won't be charged a transaction fee for a capture that didn't take place.
Can returning customers use Preauthorization without going through checkout?
Yes. If a customer has a reusable authorization, you can use the Reserve by Authorization Code flow to reserve funds without sending the customer through checkout again. This works similarly to Charge Authorization for recurring or subsequent card payments.
What happens if a capture or release doesn't complete immediately?
A capture or release request can have one of two outcomes:
The request is rejected
A request may be rejected immediately if there's a problem with it. For example:
The capture amount is greater than the amount reserved.
The Preauthorization reference is invalid.
A required parameter is missing or invalid.
Correct the request before trying again.
The request remains ongoing
A capture or release may remain in an ongoing state while Paystack confirms the final status. This can take approximately one hour.
If you retry while the original request is still ongoing, Paystack will first check its status with the relevant processing partner. If the original request is confirmed, we'll update the transaction. If it can't be confirmed, the request will be marked as failed.
Because Preauthorization is an asynchronous flow, you should configure webhooks to receive status updates. A failed capture or release may trigger one of these events:
preauthorization.capture.failedpreauthorization.release.failed
These events generally indicate an internal or external processing failure rather than a problem with the request parameters.
Frequently asked questions
Is Preauthorization available outside South Africa?
No. It's currently available only to businesses registered in South Africa.
Can I use Preauthorization immediately after signing up for Paystack?
No. Preauthorization must be specifically enabled on your account. Please contact our Support team at support@paystack.com to request access.
Can I capture more than the amount I reserved?
No. You can capture an amount equal to or less than the amount reserved.
Do I need to refund the difference if I capture less than the reserved amount?
No. The remaining amount is automatically released to the customer.
Can I cancel a Preauthorization?
Yes. If you no longer need to collect the payment, release the hold instead of capturing it.
Is the customer charged when I create a Preauthorization?
Not immediately. The amount is reserved on the customer's card and may appear as a pending transaction. The funds are collected only when you capture the payment.
Where can I find technical documentation?
For integration instructions and API examples, see the:
