Beta FeatureThis feature is currently in beta. The behavior, request parameters, and response format may change before the final release.
Stripe Integration OnlyWhile Lago supports multiple payment providers, payment pre-authorization is currently only available with Stripe.
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. Pre-authorization can fail for several reasons:- Invalid card details;
- Insufficient funds; and
- 3D Secure authentication requirement.
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.