A reservation pre-authorises a payment against a signed mandate before the actual collection is submitted to the bank. When you create a reservation, Twikey evaluates the mandate against your configured risk rules immediately — so you know the collection will be accepted before you commit to it.
Reservations are useful when the final transaction amount is not yet known at the time of authorisation. Common use cases include:
Reservations work for both SEPA Direct Debit (SDD) and Recurring Credit Card (RCC) mandates, but what happens at the payment network level differs:
For the full RCC authorize & capture lifecycle — including Strong Customer Authentication (SCA), capture, cancel, and expiry edge cases — see Authorize and capture.
Send a standard transaction request to the API with the additional reservation=true parameter.
Two optional parameters control how the reservation interacts with your risk rules:
reservationMinimum — Only create the reservation if at least this amount is still available under the mandate's risk rules. If less than the minimum remains, the request fails. If more remains, the maximum available amount is reserved. This prevents you from receiving a partial reservation below a meaningful threshold.reservationExpiration — A date after which the reservation automatically becomes void. If not set, the reservation expires after 24 hours.For the full API reference, see Twikey API — Transaction Reservations.
When you are ready to collect, create a transaction as normal and include the X-RESERVATION header with the reservation code. The amount you collect can be equal to or less than the reserved amount.
You can delete a reservation in two ways:
force=true. This atomically deletes the existing reservation and creates a new one.Reservations count against the open reservation total tracked by your risk rules. If a risk rule limits the total amount of open reservations on a mandate, the reservationMinimum parameter determines whether a partial reservation (below your configured threshold) is still acceptable.
If the request would exceed the risk rule limit entirely, the API returns an err_billing_overdrawn error.