-
v1.32.0 Stable
released this
2025-07-24 15:12:57 +00:00 | 703 commits to main since this releaseMigration guide:
please, follow the migration guide:
https://getlago.com/docs/guide/migration/migration-to-v1.32.0What's Changed
- feat: handle canceled stripe payments by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/3870
- feat(audit-logs): Add API logs by @rsempe in https://github.com/getlago/lago-api/pull/3791
- chore(charges): Charge children batch update should be low_priority by @jdenquin in https://github.com/getlago/lago-api/pull/3875
- feat(webhooks): Add
plan.(created|updated|deleted)webhooks by @julienbourdeau in https://github.com/getlago/lago-api/pull/3868 - misc(pricing-units): Various adjustments by @floganz in https://github.com/getlago/lago-api/pull/3874
- misc(clickhouse): Remove more to_sql from aggregation queries by @vincent-pochet in https://github.com/getlago/lago-api/pull/3871
- feat: handle canceled stripe intent by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/3876
- misc(organization): Not null constraint on applied_usage_thresholds by @vincent-pochet in https://github.com/getlago/lago-api/pull/3879
- Add fix migration by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/3885
- fix(warnings): Fix warnings caused by
orderandfind_eachcombination by @groyoh in https://github.com/getlago/lago-api/pull/3877 - feat(cursor): cursor rules and new matcher! by @julienbourdeau in https://github.com/getlago/lago-api/pull/3878
- misc(organization): Not null constraint on b* models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3882
- misc(organization): Not null constraint on c* models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3883
- fix(aggregator): Add auto-retry logic on SSL error by @vincent-pochet in https://github.com/getlago/lago-api/pull/3887
- misc(organization): Not null constraint on d* models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3884
- fix(clickhouse): Batch event end-point by @vincent-pochet in https://github.com/getlago/lago-api/pull/3888
- misc(currency): Add Ghanaian Cedi (GHS) currency by @vincent-pochet in https://github.com/getlago/lago-api/pull/3889
- misc(adyen): ignore RECURRING_CONTRACT webhook by @vincent-pochet in https://github.com/getlago/lago-api/pull/3892
- fix(progressive_billing): Avoid checking threshold on terminated subscriptions by @vincent-pochet in https://github.com/getlago/lago-api/pull/3893
- fix(wallet_transaction): Ensure consistency when creating wallet transaction by @vincent-pochet in https://github.com/getlago/lago-api/pull/3895
- feat(entitlement): Introduce Feature and Privilege models by @julienbourdeau in https://github.com/getlago/lago-api/pull/3873
- misc: Add pt_BR translation by @fgmacedo in https://github.com/getlago/lago-api/pull/3872
- chore(i18n): Run
i18n-tasks normalizeby @julienbourdeau in https://github.com/getlago/lago-api/pull/3903 - feat: all invoices can be voided now by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/3902
- fix(wallet_transaction): Enqueue BillPaidCreditJob after commit by @vincent-pochet in https://github.com/getlago/lago-api/pull/3906
- fix(wallet): Retry balance refresh on tax errors by @vincent-pochet in https://github.com/getlago/lago-api/pull/3907
- feat(wallet_transactions): Expose wallet transactions sources in GQL schemas by @sarkissianraffi in https://github.com/getlago/lago-api/pull/3908
- chore(matcher): Rename
enqueue_after_commitmatcher tohave_enqueued_job_after_commitby @groyoh in https://github.com/getlago/lago-api/pull/3909 - fix(payment_request): Prevent payment creation when invoices are payment succeeded by @vincent-pochet in https://github.com/getlago/lago-api/pull/3910
- fix(usages): Fix usage date - use customer timezone by @ivannovosad in https://github.com/getlago/lago-api/pull/3911
- feat(events): Change index by @floganz in https://github.com/getlago/lago-api/pull/3912
- fix(payments): Prevent returning non-persisted payment in stripe service by @floganz in https://github.com/getlago/lago-api/pull/3916
- feat(entitlement): Attach features to plans by @julienbourdeau in https://github.com/getlago/lago-api/pull/3899
- fix(specs): Add a check to fail if community PR by @groyoh in https://github.com/getlago/lago-api/pull/3915
- misc: Renew token only when expired by @rsempe in https://github.com/getlago/lago-api/pull/3913
- feat(entitlement): Send
plan.updatedwebhooks by @julienbourdeau in https://github.com/getlago/lago-api/pull/3918 - fix(specs): Run specs using
parallel_testsin CI if PR is from a community member by @groyoh in https://github.com/getlago/lago-api/pull/3917 - fix(webhook-endpoint): Add missing created_at by @vincent-pochet in https://github.com/getlago/lago-api/pull/3924
- misc(organization): Not null constraint on i* models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3925
- fix: adjust batch size for cascade feature by @lovrocolic in https://github.com/getlago/lago-api/pull/3897
- misc(organization): Not null constraint on p|r* models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3926
- misc(organization): Not null constraint on w* models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3927
- misc(organization): Not null constraint on *_taxes models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3929
- misc(organization): Not null constraint on integrations_* models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3930
- feat(entitlements): Introduce
feature.*webhooks by @julienbourdeau in https://github.com/getlago/lago-api/pull/3922 - chore(webhooks): Add default
current_organizationby @julienbourdeau in https://github.com/getlago/lago-api/pull/3923 - chore(specs): Fix
DatabaseCleanerforeventsdatabase by @groyoh in https://github.com/getlago/lago-api/pull/3914 - chore(naming): Rename
pay_in_arreartopay_in_arrearsby @groyoh in https://github.com/getlago/lago-api/pull/3928 - misc(organization): Not null constraint on i|u_* models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3931
- feat(usages): Add is_customer_tin_empty argument to resolvers by @ivannovosad in https://github.com/getlago/lago-api/pull/3919
- misc(organization): Not null constraint on remaining models by @vincent-pochet in https://github.com/getlago/lago-api/pull/3933
- chore(specs): Add missing tests for
Subscriptionmodel by @groyoh in https://github.com/getlago/lago-api/pull/3932 - allow frontend to read x-lago-token header by @mariohd in https://github.com/getlago/lago-api/pull/3921
- fix(refunds): Fix refunds when payment provider customer is discarded by @ivannovosad in https://github.com/getlago/lago-api/pull/3936
- fix: Ensure not null organization_id on deleted payment_provider_customers by @vincent-pochet in https://github.com/getlago/lago-api/pull/3935
- chore(ai): Symlink CLAUDE.md and copilot-instructions.md by @julienbourdeau in https://github.com/getlago/lago-api/pull/3942
- misc(events-processor): Add new index to speed up in advance charge processing by @vincent-pochet in https://github.com/getlago/lago-api/pull/3943
- fix: prevent cascading when overridden plan is not linked to active sub by @lovrocolic in https://github.com/getlago/lago-api/pull/3934
- feat(pricing-units): Support pricing unis for pay in advance fees by @floganz in https://github.com/getlago/lago-api/pull/3939
- fix(invoice-collection): Add is_customer_tin_empty filter by @ivannovosad in https://github.com/getlago/lago-api/pull/3940
- chore(dependency): Add
pry-byebugas dependency by @groyoh in https://github.com/getlago/lago-api/pull/3941 - fix(entitlements): Fix route for partial update of plan entitlements by @julienbourdeau in https://github.com/getlago/lago-api/pull/3944
- test(factory): Add
subscription_attosubscriptionfactory by @groyoh in https://github.com/getlago/lago-api/pull/3947 - test(subscription): Add more tests
Subscriptions::UpdateServiceby @groyoh in https://github.com/getlago/lago-api/pull/3948 - feat(pricing-units): Support pricing units in current usage by @floganz in https://github.com/getlago/lago-api/pull/3945
- misc(subscription): Ensure
Subscriptions::UpdateServiceusesperform_after_commitby @groyoh in https://github.com/getlago/lago-api/pull/3950 - chore(webhook): Update webhook endpoint created in seeds to a working one by @groyoh in https://github.com/getlago/lago-api/pull/3951
- feat(entitlement): GQL to create, update and delete features by @julienbourdeau in https://github.com/getlago/lago-api/pull/3937
- feat (wallet-limitations): add wallet_targets table and model by @lovrocolic in https://github.com/getlago/lago-api/pull/3952
- fix(activity-logs): Fix
Utils::ActivityLog.produce_after_commitwhen passing block by @groyoh in https://github.com/getlago/lago-api/pull/3953 - Fix/audits logs not available by @mariohd in https://github.com/getlago/lago-api/pull/3938
- misc(seeds): Update seeds to include tax, add-on and pay-in-advance plan by @groyoh in https://github.com/getlago/lago-api/pull/3955
- misc: allow to remove a logo when passing nil by @ansmonjol in https://github.com/getlago/lago-api/pull/3957
- test(subscription): Add and update tests for subscription services by @groyoh in https://github.com/getlago/lago-api/pull/3962
- fix(audit-logs): Create invoice generated activity log when needed by @rsempe in https://github.com/getlago/lago-api/pull/3964
- misc(true-up-fee): Improve amounts precision for true up fee by @floganz in https://github.com/getlago/lago-api/pull/3963
- chore(plans): Use update_all to flag plan children for deletion by @julienbourdeau in https://github.com/getlago/lago-api/pull/3967
- feat(entitlements): Add entitlements to plan response (read-only) by @julienbourdeau in https://github.com/getlago/lago-api/pull/3960
- fix(subscription): Ensure
Subscriptions::TerminateServiceruns in a transaction by @groyoh in https://github.com/getlago/lago-api/pull/3965 - fix(plans): better plan reload by @julienbourdeau in https://github.com/getlago/lago-api/pull/3969
- feat(pricing-units): Support pricing units for true up fees by @floganz in https://github.com/getlago/lago-api/pull/3968
- feat(entitlements): Require Premium license for Entitlements by @julienbourdeau in https://github.com/getlago/lago-api/pull/3958
- test(credit-note): Update job assertions for
CreditNotes::CreateServicetests by @groyoh in https://github.com/getlago/lago-api/pull/3966 - misc(adjusted-fee): Simplify calculations and minor refactoring by @floganz in https://github.com/getlago/lago-api/pull/3880
- Chore: add customer_id to payment by @annvelents in https://github.com/getlago/lago-api/pull/3961
- feat(pricing-unit): Add support for pricing units in AdjustedFee by @floganz in https://github.com/getlago/lago-api/pull/3881
- Fix(payments with customer_id): update query that populates payments with customer id by @annvelents in https://github.com/getlago/lago-api/pull/3977
- Fix(payment to have customer_id): job to populate payments with customer by @annvelents in https://github.com/getlago/lago-api/pull/3981
- Feat(subscriptions-list): add search_term to subscriptions and payments by @annvelents in https://github.com/getlago/lago-api/pull/3898
- Fix(payments): do not send to FE payments without customer by @annvelents in https://github.com/getlago/lago-api/pull/3983
- Filter PaymentRequests by payment_status by @mariohd in https://github.com/getlago/lago-api/pull/3980
- Fix(daily-usages): Retry job fix by @ivannovosad in https://github.com/getlago/lago-api/pull/3987
- avoid papertrail when touching ChargeFilterValue by @mariohd in https://github.com/getlago/lago-api/pull/3989
- proper way to disable paper trail for classes by @mariohd in https://github.com/getlago/lago-api/pull/3991
- misc(activity-log): Add
after_commitparameter toBaseService.activity_loggableby @groyoh in https://github.com/getlago/lago-api/pull/3970 - misc(cursor): Add commit message and coding rules by @groyoh in https://github.com/getlago/lago-api/pull/3975
- misc(seeds): Update seeds to include coupons by @groyoh in https://github.com/getlago/lago-api/pull/3994
- fix(pricing-units): Minor fixes related to pricing units by @floganz in https://github.com/getlago/lago-api/pull/3988
- Fix(daily-usages): Retry job fix (#3987) - use after_commit instead by @ivannovosad in https://github.com/getlago/lago-api/pull/3996
- Feat forecast calculate price by @ivannovosad in https://github.com/getlago/lago-api/pull/3634
- chore(specs): Fix
DatabaseCleanerforclickhousedatabase by @groyoh in https://github.com/getlago/lago-api/pull/3993 - fix: Abilitiy to filter subscriptions by plan code by @rsempe in https://github.com/getlago/lago-api/pull/4002
- Fix(invoice-deletion): when destroying invoices, also destroy it's payments by @annvelents in https://github.com/getlago/lago-api/pull/3998
- feat(entitlement): Edit entitlements with graphql by @julienbourdeau in https://github.com/getlago/lago-api/pull/3976
- test(credit-note): Refactor
CreditNotes::CreateFromTerminationspec by @groyoh in https://github.com/getlago/lago-api/pull/4003 - feat(logs): produce activity logs after commit by default by @julienbourdeau in https://github.com/getlago/lago-api/pull/4005
- feat: Add regenerated_invoice_id to invoice_subscriptions and update terminating index by @brunomiguelpinto in https://github.com/getlago/lago-api/pull/4006
- fix(pricing-units): Fix calculations for pay in advance fees by @floganz in https://github.com/getlago/lago-api/pull/4009
- fix: rename post-upgrade task by @annvelents in https://github.com/getlago/lago-api/pull/3997
- feat(entitlements): Add ActivityLogs for feature and entitlements by @julienbourdeau in https://github.com/getlago/lago-api/pull/3999
- feat(entitlement): Add
Feature.subscriptions_countby @julienbourdeau in https://github.com/getlago/lago-api/pull/4007 - feat(fixed_charges): Add migration for FixedCharge ChargeModel enum by @ancorcruz in https://github.com/getlago/lago-api/pull/4000
- fix(db): Add
where deleted_at is nullcondition on privileges by @julienbourdeau in https://github.com/getlago/lago-api/pull/4012 - Feat(fixed_charges): add bill_fixed_charges_monthly to plan by @annvelents in https://github.com/getlago/lago-api/pull/4008
- feat(wallet-limitations): apply wallet credits with BM limitation by @lovrocolic in https://github.com/getlago/lago-api/pull/3995
- fix(mrrs-plan): Fix GraphQL DataApiMrrPlan mrr_share nullable by @ivannovosad in https://github.com/getlago/lago-api/pull/4013
- Feat(fixed charges): fixed charge model by @annvelents in https://github.com/getlago/lago-api/pull/4010
- feat(payment-providers): Add Flutterwave payment provider integration by @vincent-pochet in https://github.com/getlago/lago-api/pull/4014
- feat(subscriptions): Allow to skip credit note on subscription termination by @groyoh in https://github.com/getlago/lago-api/pull/3974
- misc(migration): Update a single migration to version
8.0by @groyoh in https://github.com/getlago/lago-api/pull/4020 - test(subscriptions): Add manual termination scenario tests by @groyoh in https://github.com/getlago/lago-api/pull/4001
- feat(subscription): Allow to skip credit note creation on subscription termination via GraphQL by @groyoh in https://github.com/getlago/lago-api/pull/4021
- fix (wallets): include limitation object in collection response by @lovrocolic in https://github.com/getlago/lago-api/pull/4023
- feat (wallet-limitations): Apply billable metric limitation to ongoing balance by @lovrocolic in https://github.com/getlago/lago-api/pull/4004
- misc(subscriptions): Refactor
CreditNotes::CreateFromTerminationand its tests by @groyoh in https://github.com/getlago/lago-api/pull/4025 - misc(export): Add invoice_subscription view by @vincent-pochet in https://github.com/getlago/lago-api/pull/4028
- feat(exports): Add payments export view by @jdenquin in https://github.com/getlago/lago-api/pull/4030
- feat(exports): Add Payment Requests view by @jdenquin in https://github.com/getlago/lago-api/pull/4033
- feat(infra): Process SubscriptionActivity every minute by @julienbourdeau in https://github.com/getlago/lago-api/pull/4032
- feat(pricing-group-keys): Migrate charges/filters grouped_by to pricing_group_keys by @vincent-pochet in https://github.com/getlago/lago-api/pull/3853
- misc: better typing for PrivilegeObject config attribute by @ansmonjol in https://github.com/getlago/lago-api/pull/4031
- feat(entitlement): Introduce subscription override by @julienbourdeau in https://github.com/getlago/lago-api/pull/4022
- feat(entitlements): Restore privilege ids in gql by @julienbourdeau in https://github.com/getlago/lago-api/pull/4036
- feat(entitlements): Add value validation by @julienbourdeau in https://github.com/getlago/lago-api/pull/4035
- fix(organization#admins): Return the correct set of admins by @mariohd in https://github.com/getlago/lago-api/pull/4037
- chore(migrations): Add frozen_string_literal auto comment by @jdenquin in https://github.com/getlago/lago-api/pull/4043
- chore(sec): Add GraphQL max query length validation by @jdenquin in https://github.com/getlago/lago-api/pull/4038
- feat(exports): Add credits amount on fees export view by @jdenquin in https://github.com/getlago/lago-api/pull/4039
- test(matcher): Improve
have_enqueued_job_after_commitmatcher by @groyoh in https://github.com/getlago/lago-api/pull/4046 - feat(entitlement): Change DELETE /remove to POST /restore by @julienbourdeau in https://github.com/getlago/lago-api/pull/4048
- feat(exports): Add refunded_at on credit notes export view by @jdenquin in https://github.com/getlago/lago-api/pull/4040
- feat(exports): Exports all customers by @jdenquin in https://github.com/getlago/lago-api/pull/4042
- chore(deps): bump thor from 1.3.2 to 1.4.0 by @dependabot[bot] in https://github.com/getlago/lago-api/pull/4044
- chore(deps): bump nokogiri from 1.18.8 to 1.18.9 by @dependabot[bot] in https://github.com/getlago/lago-api/pull/4045
- misc(credit-note): Refactor
CreditNotes::CreateFromTerminationspec by @groyoh in https://github.com/getlago/lago-api/pull/4049 - feat(sso_enforcement): Enforce SSO login across my organization by @mariohd in https://github.com/getlago/lago-api/pull/3896
- (fix): Use new TokenService by @mariohd in https://github.com/getlago/lago-api/pull/4052
- feat(entitlement): append new select_options + not null db column by @julienbourdeau in https://github.com/getlago/lago-api/pull/4051
- feat(pricing-units): Add API for pricing units by @floganz in https://github.com/getlago/lago-api/pull/4050
- test(subscription): Add missing tests subscription GraphQL types by @groyoh in https://github.com/getlago/lago-api/pull/4054
- feat(pricing-units): Refactor invoice PDF by @floganz in https://github.com/getlago/lago-api/pull/3866
- fix(entitlements): Use Array of privileges instead of hash indexed by code by @julienbourdeau in https://github.com/getlago/lago-api/pull/4056
- fix(event-aggregation): the query should group prorated units by day by @annvelents in https://github.com/getlago/lago-api/pull/3890
- fix(entitlements): Remove update resource routes by @julienbourdeau in https://github.com/getlago/lago-api/pull/4058
- feat(pricing-units): Adjust PDF for pricing unit by @floganz in https://github.com/getlago/lago-api/pull/3867
- Revert "fix(event-aggregation): the query should group prorated units by day" by @annvelents in https://github.com/getlago/lago-api/pull/4059
- feat(subscription): Allow to skip invoice generation on subscription termination by @groyoh in https://github.com/getlago/lago-api/pull/4047
- feat(subscription): Allow to skip invoice on subscription termination via GraphQL by @groyoh in https://github.com/getlago/lago-api/pull/4053
- fit(entitlements): Better serializer constructor by @julienbourdeau in https://github.com/getlago/lago-api/pull/4061
- integration(netsuite): add plan_code to netsuite payload by @sarkissianraffi in https://github.com/getlago/lago-api/pull/4055
- feat(daily_usage): Add to_datetime support for backfill job by @jdenquin in https://github.com/getlago/lago-api/pull/4064
- fix(entitlements): Fix various bugs by @julienbourdeau in https://github.com/getlago/lago-api/pull/4063
New Contributors
- @fgmacedo made their first contribution in https://github.com/getlago/lago-api/pull/3872
Full Changelog: https://github.com/getlago/lago-api/compare/v1.31.0...v1.32.0
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads