Introduction
By default, when creating a subscription, Lago follows this process:- Creates and activates the subscription (unless scheduled for the future or it’s a downgrade);
- Generates the invoice asynchronously; and
- Processes the payment asynchronously.
Important: If the pre-authorization fails, the entire process is aborted and no subscription is created.
How Pre-Authorization Works
Pre-authorization creates a Payment Intent in Stripe to verify that the payment amount can be collected. When successful, the amount is temporarily held on the customer’s account but not captured. Note: The held funds are automatically released immediately after successful verification.Supported payment methods
Pre-authorization relies on Stripe’s manual capture, so it only works with payment methods that support it. Cards and Link do; methods such as SEPA Direct Debit or Boleto do not, and using one returns aprovider_error without creating the subscription.
The exact list depends on the payment methods enabled on your Stripe account. Refer to the Manual capture column of Stripe’s payment method support matrix.
Pre-authorization can fail if the card details are invalid, if the customer has insufficient funds, or if the payment method type does not support manual capture.
Please note that if 3DS is required during pre-authorization, the card is considered valid and the subscription is created.
Understanding the limitations
While pre-authorization helps reduce payment failures, it cannot guarantee successful invoice payment because:- Conditions may change between pre-authorization and actual payment:
- Customer’s account balance may decrease
- Card may be blocked or expired
- A bank might approve the pre-authorization but still require 3D Secure authentication for the actual payment
Implementation guide
To implement pre-authorization, use thePOST /api/v1/subscriptions endpoint with additional parameters. The standard subscription parameters remain unchanged.
You must manually specify the amount to authorize, as the final amount (including taxes) is only calculated during invoice generation.
Request format
Success response
The response contains anauthorization object describing the Stripe Payment Intent, alongside the created subscription.
requires_capture status means the amount is held and about to be released. When 3D Secure is required, the status is requires_action and the subscription is still created.