Incremental authorization compared to over capture
Over capture lets you capture more than the authorized amount without asking the bank again. Card schemes and acquirers cap how far over the authorized amount you can capture, often to a small percentage. Incremental authorization has no such fixed cap, because the bank approves each increase before you capture it.How it works
- Authorize the payment with
intentset toauthorize, for the amount you estimate. Setis_amount_estimatedtotrueon connectors that require it. - Increase the authorization when the final amount is known. Call increment authorization with the amount to add.
- Capture the payment for up to the new authorized amount using capture transaction.
Authorize with an estimated amount
Some payment services only accept an increase if the original authorization was flagged as an estimate. Setis_amount_estimated to true when you create the transaction. The examples leave out the payment method and other fields for brevity.
Increase the authorization
Send the amount to add, in the smallest currency unit, to increment authorization. Theamount is the increase, not the new total. An increase of 1299 on an authorization of 10000 asks the bank for 11299 in total.
amount stays at the original value. The authorized_amount reflects the new total, and you can capture up to that amount.
Outcomes
Thestatus in the response is one of the following:
A failed or pending increase doesn’t affect the original authorization. It stays valid, and you can still capture up to the previous authorized amount.
Requirements
An increase is only sent to the payment service when all of the following are true:- The transaction status is
authorization_succeeded. A transaction that is captured, voided, or in any other status returns a400bad_requesterror with a detail of typenot_valid_status. - The transaction was processed by a payment service that supports incremental authorization. Any other payment service returns a
400error saying theincremental_authorizationfeature is not supported.
Idempotency-Key header, so you can retry a request safely. See idempotent requests.
Supported connectors
Each connector page lists incremental authorization under its capabilities.
Webhooks and transaction events
When an increase succeeds, Gr4vy sends atransaction.modified webhook with the updated transaction. No webhook is sent for a failed or pending increase. See webhook events.
Each increase is recorded on the transaction’s history in the dashboard and in list transaction events:
- The increment request and response.
- The request Gr4vy sent to the payment service, and its response.
- An authorization increment succeeded event, with the previous and new authorized amounts, or an authorization increment failed event, with the error code and the payment service’s response code and description.
Testing
In sandbox, the card simulator uses the increaseamount to simulate each outcome: