Changelog
New updates and improvements to Lago.
Skip empty invoices generation
Users can now decide whether or not to issue $0 invoices (ie. empty invoices). By default, empty invoices are generated. You can change this setting at the organisation level.
When creating a customer, it takes by default the configuration of the organization for this specific field.
However, you can decide to override this information for a specific customer. Why? You might have customers who need to receive an invoice each month, even if the total amount is 0.
Precise amount for fees
Lago now allows you to retrieve the precise (ie. non rounded) amount on the fee object. Before only the rounded <text-code>amount_cents<text-code> was available.
To use the precise fee amount, you can use the <text-code>precise_amount<text-code> field.
Anrok integration ✨
<alert-premium>✨ This feature is only available via a paying add-on. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
We have developed an integration with Anrok to make tax management easier. This native integration allows you to automatically update your invoices with tax amounts sourced directly from Anrok.
- Lago sends the customer’s address, tax identifier (if applicable), and the relevant product ID to calculate the appropriate tax for each line item.
- Anrok calculates the tax for the invoice and returns the data to Lago, which is used to update the invoice with accurate tax information.
- Lago synchronizes updates for voided and disputed invoices, as well as any credit notes created, ensuring that your records remain up to date.
This integration ensures compliance with international tax regulations by calculating taxes for US & non-US obligations, like VAT.
Progressive billing ✨
<alert-premium>✨ This feature is only available via a paying add-on. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
Progressive billing, also known as threshold billing, automatically triggers an invoice when a customer’s cumulative usage reaches predefined thresholds.
This method ensures that customers cannot exceed certain usage limits without ensuring payment is received, reducing the risk of unpaid services or fraud.
You can setup 2 types of threshold:
- Step-based threshold: invoices are generated when the lifetime usage of a subscription reaches a defined threshold. You can set an unlimited number of thresholds, each with a specific amount and a unique name.
- Recurring threshold: this threshold determines what happens after the final step-based threshold is reached. (For example, after the last threshold, Lago will automatically bill $100 each time the lifetime usage increments by that amount)
Filter and export invoices
Users can now filter the list of invoices (e.g. by currency, customer, issuing date, etc.) and the filtered list can then be exported from the user interface.
Two export options are available:
- Standard, including the list of invoices and invoice amounts (i.e. one row per invoice); and
- Advanced, including the list of fees (i.e. one row per fee, so multiple rows per invoice if the invoice includes multiple fees).
The list is automatically emailed to the requester in a CSV file.
Wallet transaction metadata
When creating a wallet transaction via API, you can add metadata to store additional information (e.g. source of the transaction).
This information is not displayed in the user interface.
Invoicing options for wallet top-ups
When creating a new wallet for a customer, users can choose to generate invoices for credit purchases either:
- As soon as the wallet transaction is created; or
- Only when payment is successful, which avoids generating invoices for transactions that have not been finalized.
These options are also available for automatic and manual top-ups (see <text-code>wallet_transaction.invoice_requires_successful_payment<text-code>).
Xero integration ✨
<alert-premium>✨ This feature is only available via a paying add-on. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
We have developed a Xero integration to make accounting easier. Available features include:
- Connecting a Lago account to a Xero account via OAuth;
- Mapping Lago objects such as billable metrics, plans, coupons, wallet credits and taxes to Xero items;
- Real-time synchronization of customer accounts;
- Real-time synchronization of invoices;
- Real-time synchronization of credit notes; and
- Real-time synchronization of payments.
Invoicing options for instant charges ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
For charges paid in advances, Lago offers three invoicing options:
- An invoice can be issued for each event; or
- An invoice that only includes paid fees can be issued at the end of the billing period; or
- No invoices (users only rely on the <text-code>fee.created<text-code> webhook).
API changes (v1.7.0)
As announced a few months ago, we have updated the event ingestion process and removed deprecated API fields. Changes include:
1. Replacing groups with filters
The new dimension system based on filters allows users to create billable metrics with more than two dimensions, and makes it easier to create charges based on custom event properties. The old dimension system based on groups has been permanently removed from the Lago API (see all changes).
2. Marking <text-code>external_subscription_id<text-code> as mandatory for events
Events that only include <text-code>external_customer_id<text-code> are no longer taken into account when aggregating usage (learn more). This change will streamline the event validation process and enable real-time billing capabilities.
3. Removing deprecated API fields
For the sake of clarity and to preserve the quality of the API, we've deprecated several legacy fields (see full list).
Overview of customer billing
The customer view features a new billing section, including:
- Gross revenue (i.e. total amount billed to the customer); and
- Total overdue (i.e. total amount of invoices that are past their due date).
This improvement is the first step toward dunning management (coming soon).
Link checkout
For card payments processed through integration with Stripe, users can enable the Link option. Link automatically fills the customer's payment information for faster checkout.
Shipping address
In addition to the customer's billing address, users can add a shipping address. This information can be useful when the applicable tax rates are determined through integration with a tax management provider (e.g. Anrok).
Overdue invoices
If an invoice is not marked as paid once its due date has passed, it is considered to be overdue. The billing system will then send a webhook message to notify the organization that issued the invoice (see <text-code>invoice.payment_overdue<text-code>).
NetSuite integration ✨
<alert-premium>✨ This feature is only available via a paying add-on. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
We have developed a NetSuite integration to make accounting easier. Available features include:
- Connecting a Lago account to a NetSuite account via OAuth;
- Mapping Lago objects such as billable metrics, plans, coupons, wallet credits and taxes to NetSuite items and tax items;
- Real-time synchronization of customer accounts;
- Real-time synchronization of invoices (and sales orders);
- Real-time synchronization of credit notes; and
- Real-time synchronization of payments.
Role-based access control (RBAC) ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
With the RBAC feature, organizations can ensure that each member only has access to the information and actions required to perform their job duties.
There are three roles available on the Lago platform:
- Admin: full access to all views and actions (usually assigned to billing engineers and managers);
- Account Manager: can manage customer accounts and subscriptions (suitable for sales and success teams); and
- Finance & Analyst: mostly view-only, with the ability to manage invoices and credit notes.
Recurring wallet top-ups ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
Users can define rules to automatically trigger wallet top-ups, based on two methods:
- Fixed: a predefined number of credits is added to the customer's wallet; or
- Target: credits are added to the customer's wallet to reach a predefined balance.
There are also two trigger options:
- Interval: weekly, monthly, quarterly or yearly top-ups, with a custom start date; or
- Threshold: the top-up is triggered when the ongoing balance of the wallet reaches a predefined minimum threshold.
Hiding subscription fees at zero
We have modified the invoice template and introduced new rules for subscription fees:
- If <text-code>amount_cents<text-code> is zero for the subscription fee and there are no other fees (e.g. usage-based charges or commitment) in the invoice, the subscription fee will appear on the PDF invoice;
- If <text-code>amount_cents<text-code> is zero for the subscription fee and there are other fees in the invoice, the subscription fee will not be displayed on the PDF invoice.
Okta SSO ✨
<alert-premium>✨ This feature is only available via a paying add-on. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
Users can sign up and log in to their Lago account through Okta single sign-on (SSO), which enables a better experience and ensures that the identity provider remains the system of record for authenticating users.
Void wallet credits
The endpoint <text-code>POST /wallet_transactions<text-code> includes a new function to void credits, which are immediately deducted from the balance of the customer's wallet.
This action can also be triggered via the user interface.
Webhook messages for wallets
Lago now sends webhook messages when:
- A wallet transaction is created (see <text-code>wallet_transaction.created<text-code>);
- The status of a wallet transaction is updated (e.g. when a pending transaction is settled - see <text-code>wallet_transaction.updated<text-code>); and
- When the ongoing balance of the wallet is zero or less than zero (see <text-code>wallet.depleted_ongoing_balance<text-code>).
Custom pricing ✨
<alert-premium>✨ This feature is only available via a paying add-on. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
For companies whose aggregation and pricing models cannot be reproduced using standard functions, our team can inject a custom code snippet into the billing application.
This feature allows users to implement advanced billing rules based on custom logic, which can be very useful when migrating from an in-house billing system.
Upcoming API changes (v1.2.0)
We have released a new version of Lago with exciting new features, but also API changes likely to affect our users' workflows.
1. Replacing groups with filters
We have developed a new dimension system that offers greater flexibility. Filters allow users to create billable metrics with more than two dimensions, and make it easier to create charges based on custom event properties.
However, this feature introduces changes to a number of objects, including <text-code>billable_metric<text-code>, <text-code>plan<text-code>, <text-code>fee<text-code> and <text-code>customer_usage<text-code>. In addition, the endpoint to retrieve billable metric groups will be deprecated (see all changes).
2. The external subscription ID becomes mandatory for events
In order to develop real-time billing capabilities, we need to streamline our validation process. We have therefore decided to make <text-code>external_subscription_id<text-code> mandatory when sending events via the Lago API.
Events that only include <text-code>external_customer_id<text-code> will no longer be taken into account when aggregating usage (learn more).
3. Deprecation of API fields
For the sake of clarity and to preserve the quality of the API, we are going to deprecate several legacy fields (see full list).
Timeline
We will maintain the current API logic until July 9, 2024. After this date, previous versions will no longer be supported. We kindly ask our users to update their integration before that day to avoid any potential breaking change.
Improved trial period
When the subscription fee of a plan is paid in advance and the plan includes a trial period, the first invoice was initially generated when the subscription started. Following feedback from the Lago Community, we have modified this logic to generate the first invoice at the end of the free trial.
Filters for billable metrics
We have made changes to our dimension system and replaced metric groups with filters. This new feature offers greater flexibility as:
- Users can create as many filters as needed (they are no longer limited to two dimensions); and
- Users can define specific rates based on very granular filter combinations (e.g. online card payments with Visa cards, offline card payments with Amex cards, etc.).
Google SSO
Users can sign up and log in to their Lago account through Google single sign-on (SSO), which enables a better experience and ensures that the identity provider remains the system of record for authenticating users.
Payment disputes
If a payment dispute is reported as lost by the payment provider, Lago will provide <text-code>invoice.payment_dispute_lost_at<text-code> and send the webhook message <text-code>invoice.payment_dispute_lost<text-code>.
This feature is available via integrations with Stripe and Adyen.
Minimum plan commitment ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
When creating a plan, defining a commitment ensures a minimum invoice amount for the billing period.
This minimum is calculated at the end of the period, taking into account the subscription fee and all usage-based charges. If the total amount invoiced is less than the minimum commitment, Lago will automatically apply a true-up fee.
The default commitment can be overridden when assigning the plan to a customer.
ACH and BACS payments
Lago's native integration with Stripe supports two new payment methods:
- ACH Direct Debit for customers with a US bank account; and
- BACS Direct Debit for customers with a UK bank account.
Updated Salesforce package ✨
<alert-premium>✨ This feature is only available via a paying add-on. Please contact [email protected] to get access to the Salesforce CRM integration.<alert-premium>
This new package allows users to initiate actions in Lago without leaving the Salesforce interface. It includes two customizable flows:
- Ability to automatically create Lago customers from Salesforce accounts; and
- Ability to automatically create Lago subscriptions from Salesforce opportunities, including the option to override existing plans.
Payment link for a specific invoice
We have added a new endpoint to generate checkout URLs for specific invoices.
This feature is available via integrations with Stripe and Adyen. It allows users to collect payments in countries where payment methods cannot be saved for future use.
Grouping of charges
It is possible to group charges on the invoice according to a custom attribute. When creating a charge based on the standard pricing model, users can define one or several <text-code>grouped_by<text-code> attributes that will then be used to provide information on the distribution of usage.
For a customer who has sent thousands of API requests, for instance, we could display the breakdown of usage based on the <text-code>workspace_id<text-code> to which each request is linked.
Wallet balance in (near) real-time ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
In addition to the invoiced balance, which represents the credit available in the wallet after the last invoice has been finalized, wallets include an ongoing balance, which takes into account the customer's current usage and taxes.
The ongoing balance gives an overview of the credit available in the wallet in near real-time, as it is updated every 5 minutes.
Edit draft invoices ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
When an invoice is in draft (i.e. during the grace period), fees can be modified via the user interface. Users can either:
- Overwrite the total number of units, in which case Lago will automatically recalculate the fee based on the pricing model associated with the charge; or
- Overwrite the number of units and unit price, in which case Lago will automatically recalculate the fee based on this information.
Multiple PSP accounts
If an organization has multiple accounts with the same PSP (e.g. US Stripe account and EU Stripe account) they can all be connected to Lago. Users can then select the most appropriate account to process payments for each customer.
Batch endpoint
Events can now be sent in batches using the new <text-code>/events/batch<text-code> endpoint. Each API call may include up to 100 events.
Disabling emails for invoices without fees
To avoid sending too many notifications to customers, we have deactivated emails for invoices without fees.
Although invoices with <text-code>"fees_amount_cents": 0<text-code> are no longer sent to customers by email, they are still available in the database and user interface.
EU tax management
Lago's EU tax detection feature allows users to check customers' tax identification numbers through integration with the European VAT Information Exchange System (VIES), and to automatically assign them a tax rate based on their country.
Unit prices
PDF invoices now include details of charges for each pricing model (e.g. for graduated pricing, we display the number of units and unit price for each tier).
This information is also available in the invoice object (see <text-code>invoice.fees.amount_details<text-code>).
Custom invoice numbering
We have made invoice numbering more flexible, with three elements:
- Prefix that can be customized;
- Dynamic sequence, either based on sequential customer IDs, or based on year and month (i.e. YYYYMM); and
- Sequential number of the invoice (i.e. 001, 002, 003, etc.).
Automatic wallet top-ups ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
Customer wallets can be topped up automatically according to predefined rules:
- Based on a time interval (e.g. weekly, monthly, etc.); or
- Based on a threshold (e.g. when the wallet balance is less than or equal to $10).
Regenerate checkout links
When a customer wants to update their payment method, or when a checkout link has expired, users can generate a new checkout URL on demand through the Lago API.
This action is available for all our native payment integrations.
Billing analytics ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
Users can gain insight into their billing data with the new analytics section, including:
- Gross revenue;
- Monthly recurring revenue (MRR);
- Invoiced usage; and
- Invoice collection data.
This information is also available via the Lago API.
Event validations
We have added an <text-code>events.errors<text-code> webhook message to notify users when some of the events ingested in the last hour are invalid.
Possible errors include:
- Invalid billable metric code;
- Missing aggregation property; and
- Missing group key.
Helm chart updates
We have released a new version of the Lago Helm Charts to facilitate on-premise deployment.
Custom success URL
When setting up one of our native payment integrations, users can define the URL to which customers should be redirected after completing the checkout process. Custom URLs can only be added via the user interface.
Default currency
The organization's currency can be defined in the settings of the account or via API. It is used as the default currency when creating new objects, such as plans and add-ons, and to display information on dashboards.
Override plans ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
When assigning a plan to a customer, you can modify some attributes to create a custom plan. Editable fields include (but are not limited to):
- Currency;
- Subscription fee;
- Charge prices;
- Minimum spending requirements;
- Tax rates; and
- Invoice display names.
Details of the new plan will be available in the customer view.
Spanish locale
¡Hola a todos! The Spanish locale is now available on Lago.
Users can select it as their organization's default language or as a customer's preferred language.
Plan details
In the Plans section of the app, users can now click one of their plans to see its details (i.e. name, code, interval, currency, subscription fee, usage-based charges, etc.) and also retrieve the list of subscriptions linked to the plan.
In addition, in the customer view of the app, users can click one of the subscriptions assigned to their customer to see its details (i.e. status, start date, interval, currency, fees, charges, etc.).
Swedish locale
Hej alla! The Swedish locale is now available on Lago.
Users can select it as their organization's default language or as a customer's preferred language.
Webhooks for subscription upgrades/downgrades
When the plan associated with a subscription changes, Lago automatically notifies the user with two webhook messages:
- <text-code>subscription.terminated<text-code> to confirm the termination of the initial plan (includes <text-code>next_plan_code<text-code>); and
- <text-code>subscription.started<text-code> to confirm the start of the new plan (includes <text-code>previous_plan_code<text-code>).
Retrieve a subscription
We have added a new endpoint to allow users to retrieve a specific subscription via the Lago API, using the <text-code>external_id<text-code> of the subscription.
Removal of event validations
We are currently upgrading our infrastructure and setting up a new event ingestion system. As part of this project, we have decided to remove the validations that were automatically performed when ingesting events through the Lago API.
This means that the API no longer returns error messages when events include incorrect parameters (e.g. wrong billable metric code, subscription not found, <text-code>transaction_id<text-code> already exists, etc.).
Void invoices
Users can void finalized invoices that have not been paid, and have not be used to issue a credit note. Voided invoices remain available in the app, but cannot be modified.
Credit notes applied to voided invoices are re-credited to the customer's credit note wallet, and prepaid credits applied to voided invoices are re-credited to the customer's wallet, provided that it is still active. However, coupons applied to voided invoices are lost.
Integration with Salesforce CRM ✨
<alert-premium>✨ This feature is only available via a paying add-on. Please contact [email protected] to get access to the Salesforce CRM integration.<alert-premium>
With the new Salesforce CRM integration, Lago data is automatically synced with Salesforce.
Users can access their customers' subscriptions, invoices and credit notes directly in their CRM application.
Display names on invoices
When creating or updating a plan, users can define custom display names for subscription and usage-based charges, which will be printed on the PDF files generated by Lago.
Display names can be defined via the user interface or the API (see <text-code>plan.invoice_display_name<text-code> and <text-code>charges.invoice_display_name<text-code>).
Retrieve past usage
We have added a new endpoint to retrieve past usage. When a billing period has ended, users can still retrieve usage data through <text-code>GET /customers/{external_customer_id}/past_usage<text-code>.
Users must specify <text-code>external_subscription_id<text-code> and can filter results by <text-code>billable_metric_code<text-code>. They can also select the number of past periods for which they wish to retrieve usage data.
WEIGHTED SUM aggregation
<text-code>weighted_sum_agg<text-code> allows users to compute usage based on a custom property and the time elapsed between two events (e.g. memory consumption measured in GB-seconds).
Billable metrics based on this aggregation type can be metered or recurring, and are always billed at the end of the billing period.
Subscription end date
When a subscription end date is set, the subscription is automatically terminated by Lago.
A notification is sent to the user 45 days and 15 days before the subscription is terminated (see <text-code>subscription.termination_alert<text-code> webhook).
If no end date is set for a subscription, it will renew automatically.
LATEST aggregation
<text-code>latest_agg<text-code> allows users to compute usage based on the last value received during the period for a billable metric.
Consider the following example for the <text-code>storage<text-code> metric, where usage is aggregated based on the property <text-code>gb<text-code>:
- The first event includes 5 GB;
- The second event includes 7 GB; and
- The third event includes 6 GB.
With <text-code>latest_agg<text-code>, at the end of the billing period, the total number of units used to calculate the fee will be 6, as it's the last value received.
Duplicate plans
Users can duplicate an existing plan from the user interface to create a new plan with the same structure. They can then choose a name and a code for their new plan, and modify the parameters that differ from the original plan (e.g. interval, currency, charges, etc.).
Edit dimensions
When dimensions are defined for a billable metric, users can add/remove groups by modifying the corresponding code snippet via the user interface, or by updating the billable metric object via API.
Changes to dimensions may affect all plans where the billable metric is listed as a charge.
Italian locale
Ciao a tutti! The Italian locale is now available on Lago.
Users can select it as their organization's default language or as a customer's preferred language.
Webhook for subscriptions started
We have added a new webhook message for subscriptions.
When the status of a subscription switches to <text-code>active<text-code>, Lago automatically sends a <text-code>subscription.started<text-code> message.
Default price for groups
For billable metrics that include several groups, when configuring their plans, users can set a default price that applies to all groups.
The default price can be overwritten by setting a different price for a specific group.
If the default price is not defined, it is automatically set to zero.
Minimum / Maximum per transaction ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
The percentage pricing model includes a new option for defining minimum and maximum prices per transaction.
When applied, Lago adjusts the fees based on the <text-code>per_transaction_min_amount<text-code> and <text-code>per_transaction_max_amount<text-code> parameters.
Graduated percentage pricing
We have added a new graduated pricing model, which allows users to define prices based on a percentage of the number of units, and to add a flat fee for each tier (optional).
Quarterly billing interval
In addition to the weekly, monthly and yearly intervals, Lago <text-code>v0.44.1-beta<text-code> includes the new quarterly interval.
When selected, all fees (i.e. subscription fee and charges) are billed every three months.
Taxes applied to add-ons
Tax objects can now be used to define the default tax rate(s) associated with an add-on.
When creating a one-off invoice, if there is no tax rate associated with the add-on, Lago will automatically select the tax rate defined at customer or organization level.
The tax rate applied to the add-on can be modified at any time through the user interface or the API.
Net payment term
The net payment term determines the number of days given to the customer to pay their invoice. It is calculated based on the date the invoice is finalized and displayed on the PDF file.
When the net payment term is defined at the organization level, it applies to all customers by default. However, it can be overridden by the net payment term defined at the customer level.
Webhook signatures
When creating a webhook endpoint through the user interface or the API, you can choose between:
- The original <text-code>JWT<text-code> signature; and
- The new <text-code>HMAC<text-code> signature, which includes a shorter header.
Please refer to the guide to find out how to verify the webhook signatures.
Taxes defined at plan and charge level
In addition to the taxes defined at organization and customer level, users can select tax objects at plan and charge level.
For subscription invoices, the tax hierarchy is as follows:
- Taxes defined at organization level will apply to all fees (i.e. subscription and charges);
- Taxes defined at customer level will take precedence over taxes defined at organization level and will apply to all fees (i.e. subscription and charges);
- Taxes defined at plan level will take precedence over taxes defined at customer level and will apply to all fees (i.e. subscription and charges); and
- Taxes defined at charge level will take precedence over taxes defined at plan level but will only apply to the fee associated with the corresponding charge.
Filter subscriptions by status
We have added a new query parameter to the endpoint that allows users to retrieve subscriptions.
By default, <text-code>GET /api/v1/subscriptions/<text-code> returns all active subscriptions. However, you can also retrieve pending, canceled and terminated subscriptions by using the <text-code>status<text-code> parameter.
SEPA Direct Debit with Stripe
Our native integration with Stripe now supports SEPA Direct Debit payments.
When Stripe is defined as the default payment provider for a customer, you can select the authorised payment method(s): card, direct debit or both.
Before initiating a payment intent, Lago will automatically check the customer's default payment method registered in Stripe.
Kindly note, SEPA Direct Debit is only available for invoices denominated in euros (EUR).
Recurring and prorated charges
When a billable metric is defined as recurring, the number of billing units at the end of the billing period is carried over to the next period. It is not reset to zero, as with metered metrics.
Users can create recurring metrics based on <text-code>sum_agg<text-code> and <text-code>count_unique_agg<text-code>. They can also define whether the corresponding charges should be prorated (this option is only available for the standard and volume pricing models).
ℹ️ Metrics based on <text-code>recurring_count_agg<text-code> have been automatically converted into <text-code>count_unique_agg<text-code> metrics with the attribute <text-code>"recurring": true<text-code>.
Multiple webhook endpoints
Webhook messages can be used to collect billing information and set up custom workflows. They are related to subscriptions, events, fees, invoices, payment providers and credit notes.
You can now create up to five webhook endpoints to listen to Lago events.
Cancel pending subscriptions
When a subscription is created with a subscription date in the future, its status is automatically set to <text-code>pending<text-code>.
You can now cancel a pending subscription through the Lago API, using the following endpoint:
<text-code>DELETE /api/v1/subscriptions/{external_id}?status=pending<text-code>
Custom tax objects
In the settings of their account, users can define the default tax rate that applies by default to all customers of their organization. This tax rate can then be overwritten at the customer level.
Whether set at the organization level or the customer level, so far the tax rate used to calculate fees was simply indicated as "Tax" on invoices.
To give users more flexibility, we've added the option to create several tax objects, which can then be assigned to the organization or specific customers (e.g. state sales tax, VAT, reverse charge, GST, etc.).
Stripe checkout URL
When a new customer is successfully created through Lago's native integration with Stripe, the billing system sends a <text-code>customer.checkout_url_generated<text-code> webhook message.
You can redirect your customer to the corresponding page to register their payment method, which will then be used to collect payment when a new invoice is issued.
Tax identification number
The customer object and organization object include a new <text-code>tax_identification_number<text-code> attribute. When a value is available for this attribute, it is automatically displayed on the PDF version of the next invoices.
Integration with Adyen
Lago now offers native integration with Adyen, including (but not limited to):
- Ability to define Adyen as the default payment provider for a customer;
- Ability to automatically create Lago customers in Adyen and retrieve their customer ID;
- Ability to automatically collect payments via credit cards, Apple Pay, PayPal and many other payment methods;
- Ability to automatically update an invoice based on the payment status retrieved from Adyen; and
- Ability to process refunds using credit notes.
To learn more about this integration, please consult our guide.
Charges paid in advance
If you want to collect payments for usage-based charges on the fly, without waiting for the end-of-period invoice, you can turn on the new <text-code>pay_in_advance<text-code> feature.
When a charge is marked as paid in advance, Lago will automatically calculate the fee associated with each event as soon as it is ingested. This information will then be sent to you in a <text-code>fee.created<text-code> webhook message.
You can also get an estimate for a charge to be paid in advance before the actual event is confirmed through the <text-code>/api/v1/events/estimate_fees<text-code> endpoint.
In addition to this, users with a premium license can define whether or not <text-code>pay_in_advance<text-code> charges are invoiceable.
One-off invoices
After creating an add-on, you can use it to generate a one-off invoice that will be billed instantly.
A one-off invoice may include multiple fees (i.e. multiple add-ons). You can add a custom description and set a specific price for each add-on, either through the user interface or the API.
⚠️ The endpoint to apply add-ons is deprecated and will be removed on September 1st, 2023. It has been replaced with the endpoint to create one-off invoices.
Coupons applied before tax
Until now, coupons were deducted from the invoice amount after tax, which was not always allowed from an accounting perspective in some countries.
Following feedback from our community, we have updated our calculation method to ensure all coupons are deducted from the invoice amount before tax.
Minimum spend on charges ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
You can now define minimum spending requirements for usage-based charges.
The minimum spend is defined as an amount excluding tax. If at the end of the billing period, your customer has spent less than the minimum, then Lago will automatically generate a true-up fee to compensate for the difference.
Minimum spending requirements are defined when creating or editing plans, either through the user interface or the API.
Coupons limited to specific metrics
We have added a new option to the coupon settings: it is now possible to limit the application scope of a coupon to specific billable metrics.
By default, coupons apply to all charges but when creating a new coupon, you can define the list of billable metrics to which the coupon applies.
This feature is related to the <text-code>billable_metric_codes<text-code> attribute of the <text-code>coupon<text-code> object (see API documentation).
Please refer to the guide for more information on coupons.
Reset password
You can now reset your password via the user interface.
On the login page, click "Forgotten password" to access the dedicated page where you can request a link to reset your password.
Customer billing portal ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
We have released the first version of our billing portal, which allows your customers to access their invoices.
You can generate access links through the user interface or embed the customer portal into your application using our API and an iframe.
Automatic emails ✨
<alert-premium>✨ This feature is only available to users with a premium license. Please contact [email protected] to get access to Lago Cloud and Lago Self-Hosted Premium.<alert-premium>
We are introducing a new built-in invoicing feature, which allows you to automatically send invoices and credit notes from Lago to your customers.
The email template can be customized with the name, email address and logo of your organization, and will be sent in the customer's preferred language (or the default language defined in the settings of your account).
For cloud users, Lago takes care of the SMTP setup. For users on the self-hosted version, the setup is described in the public documentation.
Invoice metadata
After an invoice has been generated, you can add metadata to store additional information (e.g. custom ID, payment reference, etc.). This information will be included in the <text-code>invoice<text-code> object but will not be displayed on the PDF invoice.
Invoice metadata can be managed via the user interface or the API.
Customer metadata
When creating or editing a customer, you can add metadata to store additional information (e.g. customer type, name of the account manager, etc.).
Customer metadata can be displayed on invoices, and can be managed via the user interface or the API.
Webhook logs
The new webhook management system allows you to access the list of webhook messages sent by Lago and check their status. You can re-trigger a message that has failed through the user interface.
To access the webhook logs:
- Go to the Developers section via the sidebar;
- Open the Webhooks tab; and
- Click on the webhook endpoint to see the list of messages.
Payment status updates
You can now update the payment status of an invoice through the user interface.
To do so:
- Access the "Invoices" section;
- Find the relevant invoice;
- Click the ellipsis icon on the right;
- Click "Update payment status";
- Select the new payment status; and
- Click "Update status" to confirm.
This action can be performed via the API as well.
Document translation
PDF files including invoices and credit notes can be generated in different languages.
The default language that is set at the organization level can be overwritten by the customer's preferred language.
In the API, the <text-code>document_locale<text-code> attribute determines the language of the documents.
You can contribute to Lago's open-source project by helping us translate documents. The new language will then be added to the list of supported locales and available to the entire Lago Community.
Coupons limited to specific plans
We have added a new option to the coupon settings: it is now possible to limit the application scope of a coupon to specific plans.
By default, coupons apply to all plans but when creating a new coupon, you can define the list of plans to which the coupon applies.
This feature is related to the <text-code>plan_codes<text-code> attribute of the <text-code>coupon<text-code> object (see API documentation).
Please refer to the guide for more information on coupons.
Coupons that apply forever
When creating a coupon, through the user interface or the API, it is now possible to select the <text-code>forever<text-code> frequency.
Coupons with the <text-code>forever<text-code> frequency apply to all subscription invoices, regardless of the number of subscription invoices generated in a given period.
<alert-info>ℹ️ The value of the coupon is deducted from the amount of the invoice after tax. Coupons do not apply to add-ons or any other one-off charges.<alert-info>
Search bar
Tired of scrolling through an endless list to find the customer your are looking for? We understand that.
We have added a search functionality to the user interface to make it easier to find metrics, plans, customers, invoices, etc.
Payment retries
We have added the ability to resend payments for collection.
This new feature is available to all users:
- Through the user interface (learn more); and
- Through the API (learn more).
Invoice list
We have added a new "Invoices" section, which allows you to access the list of invoices.
Invoices are filtered according to their status (i.e. draft or finalized) and according to their payment status (i.e. succeeded, pending or failed).
The same filters can be applied when retrieving invoices via the API.