Releases: getlago/lago-api
Releases · getlago/lago-api
v1.32.4
What's Changed
- misc: Do not create fee if 0 units on current usage by @rsempe in #4076
- misc: Add BillingPerdiodBoundaries by @vincent-pochet in #4121
- feat: we need to grab charges even if deleted by @brunomiguelpinto in #4127
- feat(projected-usage): Create a new endpoint for the projected usage calculation by @murparreira in #4124
- feat(one-off-invoice): Add billing period to one-off invoices by @lovrocolic in #4119
- fix(netsuite): Fix invoice payload - add item_source by @ivannovosad in #4120
- fix/allow query subscriptions with plan attributes by @mariohd in #4129
- feat(audit_logs): Let the organization query unlimited audit logs by @mariohd in #4131
- misc(event): remove unique validation by @vincent-pochet in #4133
- fix(weighted-sum): Clickhouse query by @rsempe in #4134
- fix(audit-log): Non blocking api logs by @rsempe in #4137
- Feat(fixed_charges): Add GraphQL types, update Plan resolver and create mutation by @ancorcruz in #4126
- Feat(fixed charges 6): update services by @annvelents in #4138
- feat(customers-filters): Add active_subscriptions_from and active_sub… by @mariohd in #4122
- fix(feature): Add missing ActivityType enum entry by @julienbourdeau in #4140
Full Changelog: v1.32.3...v1.32.4
v1.32.3
What's Changed
- Feat(fixed_charges): Move
AmountDetails
toChargeModels
namespace by @ancorcruz in #4098 - fix(invoice): Voided invoice is disputable as well by @ivannovosad in #4107
- misc(event): Add missing results on events services by @vincent-pochet in #4110
- Fix get tax regenerate invoice by @brunomiguelpinto in #4108
- Feat(fixed_charges): Extract ChargeModel::FilterPropertiesService by @ancorcruz in #4100
- Feat(fixed_charges): Extract chargeable validation service by @ancorcruz in #4109
- REVERT: Projected usage feature on API by @murparreira in #4112
- Feat(fixed_charges): Add FixedCharges::CreateService by @ancorcruz in #4113
- fix(subscription-service): Fix potential race condition by @ivannovosad in #4117
- Feat(fixed_charges): Plans::CreateService creates fixed charges by @ancorcruz in #4116
- fix(charge-model-factory): Boolean param to only calculate the projected values when being called by the projection service by @murparreira in #4118
Full Changelog: v1.32.2...v1.32.3
v1.32.2
What's Changed
- Feat(fixed_charges-1): add fee model updates by @annvelents in #4017
- Feat(fixed-chages-2): extract charge_models services by @annvelents in #4085
- fix/third party failure for generate payment link by @mariohd in #4093
- Feat(fixed charges): extract charge models properties builder by @annvelents in #4086
- Feat(fixed_charges-3): add fixed_charges_taxes by @annvelents in #4087
- misc(gql): expose feature on plan entitlement object by @ansmonjol in #4079
- Feat(fixed charges 3): apply taxes services by @annvelents in #4088
- fix(dunning-campaign): send webhook when dunning campaign ends and is not paid by @lovrocolic in #4092
- fix(activity-log): Do not include fees when there are too many of them by @ivannovosad in #4102
- misc(adyen): Ignore OFFER_CLOSED webhook by @ivannovosad in #4097
- fix(payments): allow load discarded customers by @mariohd in #4104
- Feat Regenerate invoice from voided invoice by @brunomiguelpinto in #3992
- feat: changed index by @brunomiguelpinto in #4105
Full Changelog: v1.32.1...v1.32.2
v1.32.1
What's Changed
- feat(entitlements): Add
entitlements
to Subscription Graphql object by @julienbourdeau in #4029 - fix(entitlements): missing config attribute by @julienbourdeau in #4067
- feat(wallet-limitations): Add service updates for billable metric wallet limitation by @lovrocolic in #3973
- test: Fix two flaky tests by @groyoh in #4069
- chore(gql): update plan entitlements directly in Plan update mutation by @julienbourdeau in #4068
- strip customer email from invisible characters by @annvelents in #4073
- misc: add invoice payment link generation GQL mutation by @ansmonjol in #4066
- feat: email validation by @brunomiguelpinto in #4075
- fix: skip touching during cascade to avoid deadlocks by @lovrocolic in #4077
- feat: change void behaviour and wallet check by @brunomiguelpinto in #4084
- Feat Allow multiple subscription_starting invoice_subscriptions when regenerating invoice by @brunomiguelpinto in #4083
- Feat(Fixed_charges): add subscription_fixed_charge_units_override by @annvelents in #4011
- Do not check voided invoice for subscription fee creation by @rsempe in #4089
- feat(api): Add GET payment_request endpoint by @ivannovosad in #3971
- fix(invoice-preview): Ensure that plan lookup uses only parent plans by @floganz in #4091
- Change gross_revenue_share and net_revenue_share to display nil values on graphql query by @murparreira in #4078
- feat(projected-usage): add projected usage data to the current usage endpoint by @murparreira in #3905
- Fix failing test after merging projected usage on main by @murparreira in #4094
- Feat(fixed_charges-1): migration to update fee by @annvelents in #4016
- fix: do not return unauthorized when ActivityLogs are not available by @mariohd in #4095
- feat(pre-aggregation): Expose charge properties in flat filters by @vincent-pochet in #4034
Full Changelog: v1.32.0...v1.32.1
v1.32.0
Migration guide:
please, follow the migration guide:
https://getlago.com/docs/guide/migration/migration-to-v1.32.0
What's Changed
- feat: handle canceled stripe payments by @brunomiguelpinto in #3870
- feat(audit-logs): Add API logs by @rsempe in #3791
- chore(charges): Charge children batch update should be low_priority by @jdenquin in #3875
- feat(webhooks): Add
plan.(created|updated|deleted)
webhooks by @julienbourdeau in #3868 - misc(pricing-units): Various adjustments by @floganz in #3874
- misc(clickhouse): Remove more to_sql from aggregation queries by @vincent-pochet in #3871
- feat: handle canceled stripe intent by @brunomiguelpinto in #3876
- misc(organization): Not null constraint on applied_usage_thresholds by @vincent-pochet in #3879
- Add fix migration by @brunomiguelpinto in #3885
- fix(warnings): Fix warnings caused by
order
andfind_each
combination by @groyoh in #3877 - feat(cursor): cursor rules and new matcher! by @julienbourdeau in #3878
- misc(organization): Not null constraint on b* models by @vincent-pochet in #3882
- misc(organization): Not null constraint on c* models by @vincent-pochet in #3883
- fix(aggregator): Add auto-retry logic on SSL error by @vincent-pochet in #3887
- misc(organization): Not null constraint on d* models by @vincent-pochet in #3884
- fix(clickhouse): Batch event end-point by @vincent-pochet in #3888
- misc(currency): Add Ghanaian Cedi (GHS) currency by @vincent-pochet in #3889
- misc(adyen): ignore RECURRING_CONTRACT webhook by @vincent-pochet in #3892
- fix(progressive_billing): Avoid checking threshold on terminated subscriptions by @vincent-pochet in #3893
- fix(wallet_transaction): Ensure consistency when creating wallet transaction by @vincent-pochet in #3895
- feat(entitlement): Introduce Feature and Privilege models by @julienbourdeau in #3873
- misc: Add pt_BR translation by @fgmacedo in #3872
- chore(i18n): Run
i18n-tasks normalize
by @julienbourdeau in #3903 - feat: all invoices can be voided now by @brunomiguelpinto in #3902
- fix(wallet_transaction): Enqueue BillPaidCreditJob after commit by @vincent-pochet in #3906
- fix(wallet): Retry balance refresh on tax errors by @vincent-pochet in #3907
- feat(wallet_transactions): Expose wallet transactions sources in GQL schemas by @sarkissianraffi in #3908
- chore(matcher): Rename
enqueue_after_commit
matcher tohave_enqueued_job_after_commit
by @groyoh in #3909 - fix(payment_request): Prevent payment creation when invoices are payment succeeded by @vincent-pochet in #3910
- fix(usages): Fix usage date - use customer timezone by @ivannovosad in #3911
- feat(events): Change index by @floganz in #3912
- fix(payments): Prevent returning non-persisted payment in stripe service by @floganz in #3916
- feat(entitlement): Attach features to plans by @julienbourdeau in #3899
- fix(specs): Add a check to fail if community PR by @groyoh in #3915
- misc: Renew token only when expired by @rsempe in #3913
- feat(entitlement): Send
plan.updated
webhooks by @julienbourdeau in #3918 - fix(specs): Run specs using
parallel_tests
in CI if PR is from a community member by @groyoh in #3917 - fix(webhook-endpoint): Add missing created_at by @vincent-pochet in #3924
- misc(organization): Not null constraint on i* models by @vincent-pochet in #3925
- fix: adjust batch size for cascade feature by @lovrocolic in #3897
- misc(organization): Not null constraint on p|r* models by @vincent-pochet in #3926
- misc(organization): Not null constraint on w* models by @vincent-pochet in #3927
- misc(organization): Not null constraint on *_taxes models by @vincent-pochet in #3929
- misc(organization): Not null constraint on integrations_* models by @vincent-pochet in #3930
- feat(entitlements): Introduce
feature.*
webhooks by @julienbourdeau in #3922 - chore(webhooks): Add default
current_organization
by @julienbourdeau in #3923 - chore(specs): Fix
DatabaseCleaner
forevents
database by @groyoh in #3914 - chore(naming): Rename
pay_in_arrear
topay_in_arrears
by @groyoh in #3928 - misc(organization): Not null constraint on i|u_* models by @vincent-pochet in #3931
- feat(usages): Add is_customer_tin_empty argument to resolvers by @ivannovosad in #3919
- misc(organization): Not null constraint on remaining models by @vincent-pochet in #3933
- chore(specs): Add missing tests for
Subscription
model by @groyoh in #3932 - allow frontend to read x-lago-token header by @mariohd in #3921
- fix(refunds): Fix refunds when payment provider customer is discarded by @ivannovosad in #3936
- fix: Ensure not null organization_id on deleted payment_provider_customers by @vincent-pochet in #3935
- chore(ai): Symlink CLAUDE.md and copilot-instructions.md by @julienbourdeau in #3942
- misc(events-processor): Add new index to speed up in advance charge processing by @vincent-pochet in #3943
- fix: prevent cascading when overridden plan is not linked to active sub by @lovrocolic in #3934
- feat(pricing-units): Support pricing unis for pay in advance fees by @floganz in #3939
- fix(invoice-collection): Add is_customer_tin_empty filter by @ivannovosad in #3940
- chore(dependency): Add
pry-byebug
as dependency by @groyoh in #3941 - fix(entitlements): Fix route for partial update of plan entitlements by @julienbourdeau in #3944
- test(factory): Add
subscription_at
tosubscription
factory by @groyoh in #3947 - test(subscription): Add more tests
Subscriptions::UpdateService
by @groyoh in #3948 - feat(pricing-units): Support pricing units in current usage by @floganz in #3945
- misc(subscription): Ensure
Subscriptions::UpdateService
usesperform_after_commit
by @groyoh in #3950 - chore(webhook): Update webhook endpoint created in seeds to a working one by @groyoh in #3951
- feat(entitlement): GQL to create, update and delete features by @julienbourdeau in #3937
- feat (wallet-limitations): add wallet_targets table and model by @lovrocolic in #3952
- fix(activity-logs): Fix
Utils::ActivityLog.produce_after_commit
when passing block by @groyoh in #3953 - Fix/audits logs not available by @mariohd in #3938
- misc(seeds): Update seeds to include tax, add-on and pay-in-advance plan by @groyoh in #3955
- misc: allow to remove a logo when passing nil by @ansmonjol in #3957
- test(subscription): Add and update tests for subscription services by @groyoh in #3962
- fix(audit-logs): Create invoice generated activity log when needed by @rsempe in #3964
- misc(true-up-fee): Improve amounts precision for true up fee by @floganz in #3963
- chore(plans): Use update_all to flag plan children for deletion by @julienbourdeau in #3967
- feat(entitlements): Add entitlements to plan response (read-only) by @julienbourdeau in #3960
- fix(subscription): Ensure
Subscriptions::TerminateService
runs in a...
v1.31.0
What's Changed
- Fix daily usages by @ivannovosad in #3840
- feat: Void and generate credit notes by @brunomiguelpinto in #3748
- misc(sidekiq): Add configs for usage backfill by @ivannovosad in #3852
- feat(pricing_group_keys): Allow cascading override by @vincent-pochet in #3850
- feat: Generate credit note validate License by @brunomiguelpinto in #3848
- misc(clickhouse): Add retries on to_sql by @vincent-pochet in #3855
- feat(pricing-units): Add PricingUnitQuery with filter by name or code by @floganz in #3854
- fix(no-customer-on-payment):early return when payment method has no c… by @mariohd in #3826
- Fix: Retry ViesCheck after rescuing from any Valvat Maintenance exception by @diegocharles in #3844
- feat: Admin add organization by @brunomiguelpinto in #3856
- misc(clickhouse): Rewrite aggregation queries using Arel by @vincent-pochet in #3858
- fix(invoice): Fix race-condition in invoice update jobs by @groyoh in #3851
- fix(seeds): Fix alerting seeds when no premium license is set by @groyoh in #3860
- migration: create invoices#void_invoice_id references by @diegocharles in #3815
- feat(stripe): Fix Stripe.api_version to
2025-04-30.basil
by @julienbourdeau in #3823 - fix: cascade charge updates in batches by @lovrocolic in #3861
- fix(customer): Fix array parameters in
GET /api/v1/customers
by @groyoh in #3862 - fix(customer): Fix email validator by @ivannovosad in #3590
- fix(customer): Fix email validation and add tests by @groyoh in #3847
- Fix: process cascade charge creation in batches by @lovrocolic in #3864
- Chore: dead jobs small fixes by @annvelents in #3863
- Reapply "chore(organization): Not null organization_id" (#3838) by @vincent-pochet in #3841
- Reapply "chore(db): Squash old migrations into a single file" (#3839) by @vincent-pochet in #3842
- Feat(multientities): data fix for billing entitiy sequential id on invoices by @annvelents in #3820
- update changed scope by @annvelents in #3869
Full Changelog: v1.30.0...v1.31.0
v1.30.0
What's Changed
- Fix: modify managers role permission by @annvelents in #3755
- ftr(wallet-fee-type-limitation): add graphql support for wallet limitations by @lovrocolic in #3751
- feat(multientities): Update Invoice custom sections services by @ancorcruz in #3742
- fix(multientities): Broken DB migration by @ancorcruz in #3756
- fix(billable_metric): Destroy when attached to a lot of charges by @vincent-pochet in #3747
- feat(data): Add billing entity code to invoice collections resolver by @ivannovosad in #3752
- feat(multientities): Invoice custom sections GraphQL by @ancorcruz in #3759
- feat(avalara-integration): small avalara improvements and enabling feature by @lovrocolic in #3682
- fix(coupon): Add validation on enums by @vincent-pochet in #3740
- misc(organization): Ensure organization_id is set everywhere by @vincent-pochet in #3726
- feat(data): Add billing entity code to resolvers by @ivannovosad in #3709
- feat(data): Add billing entity code to overdue balance resolver by @ivannovosad in #3763
- feat(audit-logs): Restrict access to premium license by @rsempe in #3766
- fix(charge): Fix deletion cascade on large plan override by @vincent-pochet in #3765
- fix(charge): Fix creation cascade on large plan override by @vincent-pochet in #3767
- (Misc) - Add AI Agent ripper mode instructions by @diegocharles in #3725
- feat(webhook): email admins in case of failed webhooks by @julienbourdeau in #3654
- feat(usage): Fix history usages by @ivannovosad in #3770
- feat(alerting): Add REST API layer by @julienbourdeau in #3600
- fix: auto retry throttling errors for wallet refresh job by @lovrocolic in #3769
- revert(gql): disable lookahead to confirm memory bloat origin by @julienbourdeau in #3773
- fix(jobs): Use polynomially_longer not exponentially_longer by @julienbourdeau in #3775
- revert(email): Failed webhook notification by @julienbourdeau in #3776
- fix: use keyword arguments when calling refresh draft job by @lovrocolic in #3778
- misc(usages): Add spec for pre-filling historical usages by @ivannovosad in #3777
- chore(stripe): Add fixtures version and helper by @julienbourdeau in #3723
- feat(alerting): new field for alert.triggered webhook payload by @julienbourdeau in #3779
- fix(migrations): Disable transaction for wallet_transaction migration by @julienbourdeau in #3780
- chore(deps): bump rack from 3.1.15 to 3.1.16 by @dependabot in #3785
- feat(pricing_group_keys): Add new
pricing_group_keys
API attribute by @vincent-pochet in #3681 - feat(audit_logs): Activity logs creation by @rsempe in #3669
- feat(multientities): Update billing entity Invoice custom sections REST by @ancorcruz in #3786
- fix(audit-logs): Prevent payment receipt duplicate logs by @rsempe in #3792
- feat(multientities): applied_dunning_campaign on BE to follow org by @annvelents in #3724
- Feat(multientities): dunning campaing - reset associated customers by @annvelents in #3741
- misс(charge): Extract validation from services to the model by @floganz in #3781
- Feat(multientities): billing_entity source of dunning campaign by @annvelents in #3745
- feat(audit-logs): Ensure user belongs to the log organization by @rsempe in #3793
- feat(pricing_group_keys): Add grouped_by logic for per event aggregations by @vincent-pochet in #3789
- Feat(multientities): be manage applied dunning campaign by @annvelents in #3753
- misc: Add sandbox mode for fill history job by @vincent-pochet in #3797
- fix: Use current attributes instead of activejob_traceable by @rsempe in #3794
- feat(stripe): Introduce integration tests (calling Stripe API) by @julienbourdeau in #3783
- feat(stripe): Prepare test suite to use Stripe 2025-04-30.basil by @julienbourdeau in #3787
- fix(charge): fix cascading for child charges by @lovrocolic in #3788
- fix(invoice-preview): Support preview for subscription during upgrade or downgrade by @floganz in #3744
- fix(netsuite): Do not create duplicate contacts in netsuite by @ivannovosad in #3801
- feat (wallet-credit-limitations): Add precise credit notes calculation per fee by @lovrocolic in #3764
- feat(wallet-limitations): add api support for wallet limitations by @lovrocolic in #3754
- Feat(multientities): update_applied_dunning_campaign mutation by @annvelents in #3798
- feat(pricing-unit): Add applied pricing unit model by @floganz in #3802
- misc: Refactor Utils::ActivityLog by @rsempe in #3804
- chore(filter): Add the flat_filters database view by @vincent-pochet in #3774
- feat(stripe): Ensure webhook specs run with multiple versions by @julienbourdeau in #3799
- chore(clickhouse): Enable charge caching by @vincent-pochet in #3807
- chore(organization): Organization factories by @vincent-pochet in #3805
- misc: Fix typo on invoice.rb by @diegocharles in #3810
- fix(audit-logs): Add payment request resource type by @rsempe in #3806
- fix(subscriptions): Fix subscriptions creation race condition by @ivannovosad in #3809
- feat(coupons): Add
coupon_code
filter for "List all applied coupons" endpoint by @groyoh in #3782 - fix(webhooks): Fix sending of
invoice.payment_status_updated
webhook on manual payment recording by @groyoh in #3795 - chore(api): Move lifetime_usages_controller.rb to subfolder by @julienbourdeau in #3814
- revert(email): Remove Webhook notification in case of failed by @julienbourdeau in #3813
- feat(alerting): Serialize
customer_external_id
to TriggeredAlerts by @julienbourdeau in #3819 - Add PricingUnitUsage model by @floganz in #3817
- Feat(multientities-cleanup): ignore applied_to_organization at dunning campaign by @annvelents in #3808
- fix(dates): Fix validation of impossible dates by @ivannovosad in #3821
- misc(organization): Ensure organization_id is added everywhere by @vincent-pochet in #3822
- fix(sidekiq):only mount the sidekiq web routes if LAGO_SIDEKIQ_WEB is… by @mariohd in #3825
- chore(gems): Fix
rails generate
task by @julienbourdeau in #3824 - feat(multientities): delete redundant model by @ancorcruz in #3760
- feat(ongoing-balance): Save last_balance_sync_at on wallets also when updating ongoing balance by @ivannovosad in #3800
- feat: Ability to resolve customer and subscription by external id by @rsempe in #3828
- chore(optimization): remove n+1 query from invoices controller by @murparreira in #3827
- feat(pricing-units): Add GQL for PricingUnit model by @floganz in #3830
- misc(rubocop): Fix existing warnings by @floganz in #3832
- feat(pricing-units): Add GQL for AppliedPricingUnit model by @floganz in #3833
- chore(sidekiq): Update liveness socket to listen to 0.0.0.0 by @jdenquin in #3831
- fix(filter): Matching in advance events with ALL_FILTER_VALUES by @vincent-pochet in #3772
- feat(pricing-units): Add GQL for PricingUnitUsage model by @floganz in https://g...
v1.29.0
What's Changed
- misc: avoid ActiveRecord::PreparedStatementCacheExpired errors by @vincent-pochet in #3645
- feat(multi entities): Invoice numbering from billing entity by @ancorcruz in #3531
- Gql/plan bm relation by @julienbourdeau in #3658
- chore(organization): Add organization_id to commitments table by @vincent-pochet in #3632
- chore(organization): Add organization_id to commitments_taxes table by @vincent-pochet in #3633
- chore(organization): Add organization_id to credit_note_items table by @vincent-pochet in #3635
- chore(organization): Add organization_id to integration_resources table by @vincent-pochet in #3636
- chore(organization): Add organization_id to integration_customers table by @vincent-pochet in #3637
- Fix: rebuild invoices index by @annvelents in #3659
- Fix/multientities/rebuild indexes by @annvelents in #3663
- chore(organization): Add organization_id to integration_mappings table by @vincent-pochet in #3661
- feat(avalara-integration): add support for multiple integration types as GQL filter by @lovrocolic in #3655
- misc: Bump ruby to 3.4.4 by @vincent-pochet in #3657
- chore(organization): Add organization_id to integration_items table by @vincent-pochet in #3660
- chore(organization): Add organization_id to charge_filter_values table by @vincent-pochet in #3664
- feat(dx): Introduce cursor rules by @julienbourdeau in #3670
- fix(activity-log):add invoice.one_off_created to ActivityTypeEnum by @mariohd in #3668
- feat(pricing-units): Add Pricing unit model and service for create and update by @floganz in #3672
- feat(audit_logs): Add api_key_id to ActivityLog object by @rsempe in #3675
- feat(avalara-integration): store avalara external transaction id by @lovrocolic in #3656
- fix(adjusted_fees): Avoid NaN precise amount cents on fees when 0 units by @vincent-pochet in #3676
- fix(avalara-integration): add small avalara payload fix by @lovrocolic in #3639
- chore(organization): Add organization_id to recurring_transaction_rules by @vincent-pochet in #3671
- chore(organization): Add organization_id to integration_collection_mappings table by @vincent-pochet in #3673
- chore(organization): Add organization_id to refunds table by @vincent-pochet in #3674
- fix: Migration task for recurring_transaction_rules.organization_id by @vincent-pochet in #3678
- feat(alerting): Introduce Alerting 🔔 by @julienbourdeau in #3554
- misc(ssl): Configure assume_ssl with env var by @jdenquin in #3677
- fix(refund): Assign organization_id by @vincent-pochet in #3680
- chore(organization): Add a task to migrate all resources by @vincent-pochet in #3679
- fix(daily-usages): Retry job on ActiveRecordError by @ivannovosad in #3685
- feat(audit-logs):extract mark invoice payment overdue service by @mariohd in #3686
- feat(exports): Update exports views with organization_id by @jdenquin in #3688
- feat(gql): Add BillableMetricId field on Alert object by @julienbourdeau in #3692
- chore(gql): remove deprecated field (see #3627) by @julienbourdeau in #3696
- feat: Fallback to organization country for EU bank transfers by @brunomiguelpinto in #3689
- feat(audit-logs): Return resource as an object for graphql by @rsempe in #3699
- fix(gql): Add DISTINCT when filtering BM per plan_id by @julienbourdeau in #3697
- fix(estimate fees): return 1 unit for estimate count_aggr by @annvelents in #3694
- feat(multientities): add billing entity and customer invoice custom sections join models by @ancorcruz in #3693
- feat(alerting): Add LifetimeUsageAmount and BillableMetricUsageUnits alerts by @julienbourdeau in #3690
- feat(exports): Add Daily Usage view by @jdenquin in #3704
- Chore/add delete pdf command by @annvelents in #3706
- feat(audit_logs): Add resource_type as an enum by @rsempe in #3707
- Fix(wallet_transaction): Don't create transaction when the credits are zero or negative. by @diegocharles in #3698
- fix(payment-providers): Fix uniqueness validation by @floganz in #3713
- feat(pricing_group_keys): Add validation logic for all charge models by @vincent-pochet in #3666
- feat(audit-logs): Add activity ids filter by @rsempe in #3715
- fix(daily-usage): Fix from and to dates in daily usages service by @ivannovosad in #3717
- fix: Use transaction id for event resolver by @rsempe in #3716
- ftr(wallets-with-fee-limitations): add model and db changes for wallets with fee limitations by @lovrocolic in #3719
- fix(wallet): Optimistic locking for in advance events by @vincent-pochet in #3720
- chore(stripe): Refactor Stripe webhooks by @julienbourdeau in #3718
- feat(stripe): Mark invoice as disputed for PaymentRequest by @julienbourdeau in #3643
- fix(alerting): fix seeder by @julienbourdeau in #3721
- fix(alerting): Better All SubscriptionActivity job by @julienbourdeau in #3714
- fix(cache): temptative fix for Redis "invalid expire time" by @julienbourdeau in #3701
- feat: Unique wallet transaction job for threshold top-ups by @brunomiguelpinto in #3710
- misc(organization): Remove legacy clickhouse_aggregation column (#3720) by @vincent-pochet in #3722
- Fix(wallet balance): failed transaction and voided invoice by @annvelents in #3703
- Feat(multientities): use billing entity timezone by @annvelents in #3667
- fix(clickhouse): Add auto-retry logic on SSL reset error by @vincent-pochet in #3733
- misc(daily_usage): Spread load over 30 minutes by @vincent-pochet in #3734
- fix(alerting): small QA return by @julienbourdeau in #3735
- fix(clickhouse): Add more auto-retries on error by @vincent-pochet in #3736
- feat(data-api): Add is_billable_metric_deleted argument by @ivannovosad in #3732
- misc(organization): Exclude remove clickhouse_aggregation column by @vincent-pochet in #3739
- fix(clickhouse): Add missing with retry by @vincent-pochet in #3738
- feat: coupon recrediting when voiding invoices by @brunomiguelpinto in #3729
- chore(spec): better scenario helpers by @julienbourdeau in #3750
- feat(gql): Introduce lookahead to eager load relationships (N+1) by @julienbourdeau in #3695
- ftr(wallet-limitations): add support for limitations in wallet services by @lovrocolic in #3737
- fix(bug): rescue BaseService::ThrottlingError when calculating Custom… by @mariohd in #3653
New Contributors
- @diegocharles made their first contribution in #3698
Full Changelog: v1.28.1...v1.29.0
v1.28.1
What's Changed
- feat(multi entities): Add REST endpoint and GraphQL mutation to update a billing entity by @ancorcruz in #3563
- feat(multi entities): Add REST endpoint and GraphQL mutation to create a billing entity by @ancorcruz in #3567
- feat: Add webhook resolver by @rsempe in #3641
- feat: add event resolver by @mariohd in #3644
- Feat(multientities): add standard algorithm of managing the taxes by @annvelents in #3646
- fix(console): Fix console helpers by @julienbourdeau in #3647
- fix(netsuite): Use max length when creating netsuite customer by @rsempe in #3649
- fix(stripe): Deliver error webhook when wrong key for registering webhooks by @julienbourdeau in #3650
- fix(multientities): Fix invoice billing_entity_sequential_id by @ancorcruz in #3652
- feat(multientities): add billing_entity_id to payment_receipts and mailers by @ancorcruz in #3648
- feat(console): Add
deadjobs_summary
helper by @julienbourdeau in #3651
New Contributors
Full Changelog: v1.28.0...v1.28.1
v1.28.0
What's Changed
- chore(organization): Add organization_id to coupon_targets table by @vincent-pochet in #3626
- Feat(multientities): use taxes from selected for the billing entity for invoices by @annvelents in #3525
- misc(webhooks): Add lago_id to payment.requires_action webhook payload by @ancorcruz in #3612
- Feat(multientities): refresh draft invoices when manage taxes on billing entity by @annvelents in #3530
- misc(webhooks): add payment amount to payment requires action webhook by @ancorcruz in #3629
- chore(logs): Log when idempotency record is not unique by @julienbourdeau in #3630
- feat(avalara-integration): Define invoice payload for avalara by @lovrocolic in #3569
- chore(gems): No more whitequark/parser warning! by @julienbourdeau in #3628
- feat(avalara-integration): handle reporting credit notes for avalara by @lovrocolic in #3592
- fix: populate job for credit_notes_taxes by @vincent-pochet in #3631
- Feat(multientities): use organizations default_currency and timezone from the default billing_entity by @annvelents in #3547
- feat (avalara-integration): Cover void invoice flow by @lovrocolic in #3638
- fix(multientities): wrong document numbering by @annvelents in #3602
- Feat(multientiites): add billing entities to data exports by @annvelents in #3550
- Fix(multientities): fix eu_tax country source by @annvelents in #3622
- feat(multi entities): Invoice mailer uses billing entity as data source by @ancorcruz in #3523
- feat(multi entities): Apply Billing Entity invoice grace period changes by @ancorcruz in #3548
- Fix(multientities): return be sequential id by @annvelents in #3616
Full Changelog: v1.27.1...v1.28.0