Releases: getlago/lago-api
Releases · getlago/lago-api
v1.24.0
What's Changed
- Reapply "misc: Update rails to v7.2" (#3243) by @ancorcruz in #3250
- chore(deps): bump rack from 3.1.8 to 3.1.12 by @dependabot in #3317
- feat(kafka): Add in advance charge consumer, to replace sidekiq hack by @vincent-pochet in #3291
- fix(preauth): Remove unnecessary amount_capturable check by @julienbourdeau in #3319
- misc(refactor): Refactor Customers::CreateService by @ancorcruz in #3321
- Revert Add in advance charge consumer, to replace sidekiq hack by @ivannovosad in #3325
- feat(wallet): Add Expiration Support to RecurringTransactionRules by @brunomiguelpinto in #3313
- chore(deps-dev): bump json from 2.10.1 to 2.10.2 by @dependabot in #3326
- chore(deps): bump graphql from 2.3.20 to 2.3.21 by @dependabot in #3330
- fix(invoice): Fix refundable amount by @ivannovosad in #3329
- Reapply: Add in advance charge consumer, to replace sidekiq hack (#3325) by @vincent-pochet in #3331
- fix(events): delete events on clickhouse only if activated by @jdenquin in #3324
- fix(kafka): Avoid defining empty topics by @vincent-pochet in #3332
- fix(kafka): Avoid defining empty topics by @vincent-pochet in #3333
- fix(locales): Fix invoice email locales by @ivannovosad in #3334
- feat: Update GraphQL to Support Metadata and Expiration on wallets and Rules by @brunomiguelpinto in #3323
- feat(preauth): Get latest payment method from Stripe if not found locally by @julienbourdeau in #3320
- chore(gems): require
pry
for development and test env by @julienbourdeau in #3337 - feat(regroup_fee): Use current month boundaries for AdvanceCharges invoices by @julienbourdeau in #3327
- Fix units rounding by @ivannovosad in #3336
- misc(retry-jobs): Adjust jitter to increase spread between repeating jobs by @floganz in #3340
- fix(data): Fix data api urls by @rsempe in #3307
- feat(multi-entities): create billing entity with full data... by @ancorcruz in #3316
- misc(http-client): Add response headers to http error by @ivannovosad in #3344
- Fix(wallet-balance): Fail if failed to fetch full current usage while updating wallet by @annvelents in #3351
- bug(WalletTransaction) - round to right amount of digits for wallet transaction creation by @nudded in #3260
- Feat(multientiies): create billing_entity that follows organization by @annvelents in #3295
- feat(invoice-preview): Support previews for simulated termination, upgrade or downgrade of subscription by @floganz in #3342
- misc: upgrade rails to latest 7.2.x version by @ancorcruz in #3355
- fix(tax-provider): do not call tax provider when invoice is zero amount or without fees by @lovrocolic in #3343
- fix(preview-invoices): rescue more transient error in preview mode and apply zero taxes by @lovrocolic in #3357
- feat(data): Add analytics_dashboards organization flag by @rsempe in #3360
- fix(permissions): Fix permissions in integrations resolver by @ivannovosad in #3359
- fix(aggregator-items): Fix empty cursor in aggregator items service by @ivannovosad in #3361
- feat: add wallet transaction details by @brunomiguelpinto in #3339
- chore(eu-vat): Update eu_vat_rates.json by @julienbourdeau in #3352
- chore(spec): Add HINT when gql query use snake_case by @julienbourdeau in #3353
- feat(data): Add limit and offset to mrrs plans by @rsempe in #3362
- chore(results): Introduce Result classes for app/queries folder by @julienbourdeau in #3350
- Fix/wallet ballance with progressive billing by @annvelents in #3338
- Fix(multientities): ensure seeded organization is created with billing_entity by @annvelents in #3363
- feat(event): Add metadata in kafka payload by @vincent-pochet in #3364
- chore(sentry): Add strackprof profiling with sentry by @jdenquin in #3366
- fix(bm): Fix counts perf in BM resolver by @jdenquin in #3368
- feat(multi-entities): Update customers create, update and upsert services to require billing entity code param by @ancorcruz in #3322
- feat(pdf): Add env var to disable generating pdfs by @ivannovosad in #3348
- feat(dunning): Add BCC emails addresses by @julienbourdeau in #3354
- fix(clickhouse): Use from_datetime for prorated unique count by @rsempe in #3376
- chore(logs): Disable logger for /health endpoint by @jdenquin in #3369
- feat(payments): Save payment method on successful payment (stripe only) by @julienbourdeau in #3345
- bug(LifetimeUsage) - refresh lifetime usage when creating subscriptions / updating plans by @nudded in #3249
- feat(multi-entities): Organizations' first billing entity matches its id with the organization_id by @ancorcruz in #3377
- feat(netsuite): Add description to netsuite payloads by @ivannovosad in #3378
- feat(multi-entities) Invoices services with billing entities by @ancorcruz in #3371
- feat(stripe): Add lago_payment_id to payment intent metadata by @julienbourdeau in #3346
- refactor(eu_vat): store json in class const (so it's only read once at boot) by @julienbourdeau in #3356
- misc(GraphQL): add
has_*
attributes to billable_metric object as replacement of*_count
attributes by @ancorcruz in #3379 - fix(fees): Fix advance fees query by @jdenquin in #3370
- spec(dunning): Add scenario tests for dunning by @julienbourdeau in #3367
- feat(stripe): Update payment method in a job by @julienbourdeau in #3381
- chore(CI) - Enable knapsack-pro by @nudded in #3383
- misc(GraphQL): add
has_*
attributes to plan object as replacement of*_count
attributes by @ancorcruz in #3385 - tests: improve GraphQLHelper to set CurrentContext.source to graphql by @nudded in #3386
- fix(job): Wrong retry strategy name by @julienbourdeau in #3387
- specs - Explicitly expire cache before executing graphql by @nudded in #3388
- Fix charge update service params by @brunomiguelpinto in #3384
- feat(LifetimeUsage): Add lifetime_usage premium integration by @nudded in #3373
- fix(payment): Dont update payment method if payment not found by @julienbourdeau in #3389
Full Changelog: v1.23.0...v1.24.0
v1.23.0
What's Changed
- feat(stripe): Pre-authorize payment before creating subscription by @julienbourdeau in #3262
- chore(logs): Improve logging to json by @jdenquin in #3272
- feat(data): Add mrrs plans resolver by @rsempe in #3293
- fix(logs): Parse AJ logs in json by @jdenquin in #3301
- feat(preauth): Prepare Stripe Authorization for recent versions by @julienbourdeau in #3303
- feat(netsuite): enforce customer external id to be NetSuite EntityId by @sarkissianraffi in #3286
- chore(logs): Add level to json by @jdenquin in #3304
- fix: make json parsing more resilient by @lovrocolic in #3298
- feat(payment-receipts): Add pdf templates by @ivannovosad in #3248
- fix(invoice-preview): Add charge duration to boundaries during preview generation by @floganz in #3305
- feat(payment-receipts): Add services to create payment receipt and generate pdf by @ivannovosad in #3255
- feat(data): Add usages invoiced resolver by @rsempe in #3306
- feat(payment-receipts): Add mailer for payment receipts by @ivannovosad in #3264
- feat(payment-receipts): Add GraphQL mutation and type by @ivannovosad in #3289
- Misc: migrate invoice_errors to error_details by @annvelents in #3211
- chore(config): Improve the RSA Keys configuration by @jdenquin in #3309
- misc(wallet): Reduce number of queries to flag refresh by @vincent-pochet in #3311
- fix(dunning): adapt refund logic with dunning by @lovrocolic in #3308
- chore(deps): bump rack from 2.2.11 to 2.2.13 by @dependabot in #3314
- Feat(multi-entities): add services to update billing_entity by @annvelents in #3251
- chore(validation): Refactor Expiration Date Validation to Use Centralized Validator by @brunomiguelpinto in #3312
- Fix: overdue invoices should not include invoices not ready to be paid by @annvelents in #3315
Full Changelog: v1.22.1...v1.23.0
v1.22.1
What's Changed
- Feat(multi-entities): add validations for billing_entity by @annvelents in #3237
- feat(multi-entities): Add multi_entities premium integrations with two tiers... by @ancorcruz in #3252
- feat: add customer email by @brunomiguelpinto in #3254
- feat(data): Extract revenue streams resolver to data_api namespace by @rsempe in #3256
- feat(multi-entities): Basic billing entity create service with guard by @ancorcruz in #3258
- feat(data): Rename customerCurrency to currency for revenue streams by @rsempe in #3259
- fix(webhook): wallet.updated needs to be sent only after_commit by @julienbourdeau in #3261
- fix: Wallet metadata issues by @brunomiguelpinto in #3268
- feat(console): Add helper to enable premium integrations by @julienbourdeau in #3263
- chore(dev): colorize logs in dev env by @julienbourdeau in #3270
- Fix remove invoice paid due amount by @ivannovosad in #3253
- Feat: update hard_delete_invoice Method by @brunomiguelpinto in #3273
- bug(PayInAdvance) - Don't loose precision when converting timestamp by @nudded in #3274
- feat(credit): Introduce item description by @julienbourdeau in #3269
- fix(stripe): Better errors on Stripe customer checkout url by @julienbourdeau in #3247
- feat(stripe): Save
payment_method_data
for successful Payments by @julienbourdeau in #3230 - feat(data): Add graphql endpoint for revenue streams plans by @rsempe in #3278
- feat(payment-receipts): Add models and serializers by @ivannovosad in #3229
- feat(data): Add graphql endpoint for revenue streams customers by @rsempe in #3281
- fix(checkout-link): Fix the total due amount by @ivannovosad in #3280
- revert: save payment method by @julienbourdeau in #3282
- fix: retry Net::ReadTimeout for pulling taxes by @lovrocolic in #3283
- bug(advance_charges): invoice paid in advance succeeded fees by @ancorcruz in #3284
- feat(payment-receipts): Add payment receipts controllers by @ivannovosad in #3246
- bug(ProgressiveBilling) - Reset progressive billing credits when refreshing draft by @nudded in #3288
- Feat(multientities):remove usage of is_default flag on billing_entities by @annvelents in #3266
- Feat(multi-entities): migration to remove is_default from billing_entities by @annvelents in #3267
- Feat(multientities): remove default migration cleanup by @annvelents in #3276
- fix(kafka): Ensure timestamp is pushed as float by @vincent-pochet in #3290
- feat(data): Add graphql endpoint for mrrs by @rsempe in #3287
- Feat(multientities): add billing_entity code uniqueness validation by @annvelents in #3279
Full Changelog: v1.22.0...v1.22.1
v1.22.0
What's Changed
- feat(data): Compute daily usages for positive fees only by @rsempe in #3172
- feat(wallet): New
wallet.(created|updated|terminated)
webhooks by @julienbourdeau in #3133 - feat(DataExport): move processing to default queue by @nudded in #3175
- fix(fee-estimation): fix rounding when small amounts provided by @floganz in #3174
- misc: Add kafka event consumer by @vincent-pochet in #3176
- chore(rubocop): Disable or fix last errors by @julienbourdeau in #3179
- chore(style): Fix all string litteral quotes (Style/StringLiterals) by @julienbourdeau in #3177
- chore(deps): bump rack from 2.2.10 to 2.2.11 by @dependabot in #3180
- chore(rubocop): Enable Style/StringLiterals by @julienbourdeau in #3181
- fix: Avoid startup issue with missing LAGO_KARAFKA_WEB_SECRET by @vincent-pochet in #3183
- fix(rate-limit): Fix rate limit errors by @ivannovosad in #3184
- fix(invoice-webhooks): Fix progressive billing invoice not having webhook on payment retry by @floganz in #3182
- fix(karafka): Fix env config by @vincent-pochet in #3186
- fix(invoices): Fix progressive billing by @ivannovosad in #3188
- feat(webhooks): Add subscription updated webhook by @ivannovosad in #3169
- feat(data): Remove in_advance_fee_amount_cents from revenue streams by @rsempe in #3187
- feat(regroup_fee): Sum fees to get invoice totals instead of recomputing taxes by @julienbourdeau in #3153
- misc: Extract DailyUsages::FillHistoryJob to a new long_running queue by @rsempe in #3192
- misc: Change queue from low_priority to default when creating a payment by @rsempe in #3193
- fix(stripe): Avoid raising not_found for deleted stripe customers by @vincent-pochet in #3194
- fix(add_on): Validate presence of code by @vincent-pochet in #3195
- fix: Don't raise error when invoice's status is invalid by @rsempe in #3197
- fix(payment): Handle deleted customers by @vincent-pochet in #3196
- misc(charge): Index pay_in_advance charges to speed-up post processing by @vincent-pochet in #3189
- fix(integration): Avoid raising RecordNotUnique on race condition by @vincent-pochet in #3199
- feat(data): Do not create daily usage when no usage by @rsempe in #3198
- fix(webhook): Handle errors with payment and refunds by @vincent-pochet in #3200
- misc(mailer): Improve attachements names by @vincent-pochet in #3201
- fix(data): Convert revenue stream amount currency to non nullable by @rsempe in #3202
- misc(stripe): Improve error code handling by @vincent-pochet in #3203
- fix(customer): Add validation om customer type by @vincent-pochet in #3204
- fix(integration): Do not raise when invalid login attempt on netsuite by @rsempe in #3205
- Feat(manual payments): Support for Partial/Manual Payments by @brunomiguelpinto in #3125
- misc(integration): Add retry for invoice creation on Net::ReadTimeout by @vincent-pochet in #3207
- fix(spec): tentative fix for flacky test by @julienbourdeau in #3213
- feat(multi-entities): Add billing entity model by @ancorcruz in #3217
- chore(deps): bump nokogiri from 1.16.8 to 1.18.3 by @dependabot in #3216
- feat(stripe): Add Stripe
crypto
payment method by @julienbourdeau in #3214 - feat(mailers): Add from email premium integration by @jdenquin in #3218
- feat(dev): Add console helpers for local development by @julienbourdeau in #3210
- chore(deps): Update rubocop and standard by @julienbourdeau in #3221
- misc(incoming_webhook): Refact handling for Adyen and Cashfree by @vincent-pochet in #3212
- fix: Add unique index on payment provider id by @rsempe in #3223
- fix(currency): Use some ISO codes instead of symbols by @vincent-pochet in #3225
- fix: Delete duplicated failed payments by @rsempe in #3226
- fix(manual_payments): Fix Incorrect total_paid_amount_cents for Invoices Without Payments by @brunomiguelpinto in #3219
- feat(gql): Introduce ObfuscatedStringType by @julienbourdeau in #3209
- chore(spec): Merging rails_helper into spec_helper by @julienbourdeau in #3208
- feat(invoice-preview): generating invoice review for existing subscriptions by @lovrocolic in #3231
- fix(stripe): Avoid raising for concurent status update by @vincent-pochet in #3232
- fix(netsuite): Prevent trying to create customer with max netsuite state reached by @rsempe in #3233
- fix(integration): Fix error handling for Bad Gateway errors received as HTTP 200 by @vincent-pochet in #3234
- fix: Netsuite sync with customer nil state by @rsempe in #3235
- feat(stripe): Stop listening to
charge.succeeded
webhook by @julienbourdeau in #3228 - feat(Uniqueness) - Mark BillNonInvoiceableFeesJob as unique by @nudded in #3239
- feat(multi-entities): Add billing entities applied taxes relationship by @ancorcruz in #3227
- Feat(multi-entities): add references to and from billing_entity by @annvelents in #3224
- misc: Update rails to v7.2 by @ancorcruz in #2894
- Revert "misc: Update rails to v7.2" by @rsempe in #3243
- fix(netsuite): Use max length when creating netsuite customer by @rsempe in #3245
- misc(payment): Factorise logic for payment_url generation by @vincent-pochet in #3238
- Feat stripe bank transfers by @brunomiguelpinto in #3236
Full Changelog: v1.21.0...v1.22.0
v1.21.0
What's Changed
- bug(ProgressiveBilling): take failed invoices into account by @nudded in #3127
- misc(billing): Split billing job per organization by @vincent-pochet in #3109
- bug(ProgressiveBilling) - Also recalculate current_usage when invoiced usage is changed by @nudded in #3128
- misc: Introduce BaseResult to get rid of OpenStruct by @vincent-pochet in #3122
- chore(versions): Bump redis related gems and configure reconnection in redlock by @nudded in #3132
- fix: clickhouse related specs by @vincent-pochet in #3138
- feat: add Singapore to tax invoices label countries by @brunomiguelpinto in #3136
- Fix(rev-share): do not display logo in credit note PDF by @annvelents in #3141
- imp(webhooks): Increase webhook endpoints limit to 10 by @jdenquin in #3143
- fix(invoice-preview): Prevent customer updates during invoice preview by @floganz in #3140
- perf(InvoiceGeneration) - add index on invoices to speed up fetching the highest organization_sequential_id by @nudded in #3146
- feat: change BillPaidCreditJob to high_priority by @brunomiguelpinto in #3145
- fix(anrok): Remove cache for Current Usage by @julienbourdeau in #3142
- fix(fees): Avoid empty invoice subscription on regroup fees by @vincent-pochet in #3147
- chore(spec): Use
stub_pdf_generation
helper by @julienbourdeau in #3148 - chore(spec): Use instance_double instead of OpenStruct by @julienbourdeau in #3150
- Fix(revenue-share): add self-billed field to data exports by @annvelents in #3149
- fix(invoice): Add GraphQL flag to know editable status by @vincent-pochet in #3152
- feat: added PaymentRequestMailer on rescue by @brunomiguelpinto in #3155
- chore(GraphQL): rename invoice subscription attribute by @ansmonjol in #3157
- bug(GracePeriod) - Make grace period update async for increased reliability by @nudded in #3154
- hotfix(invoice): Fix graphql object rendering by @vincent-pochet in #3158
- chore(Cleanup): remove dead code in Organizations::UpdateInvoiceGrace… by @nudded in #3159
- bug(Event): Propagate expression evaluation failure by @nudded in #3160
- fix: Remove tax cache from invoice preview by @lovrocolic in #3156
- Bug(BatchEvent): add validation error propagation to batch event service by @nudded in #3161
- fix: prevent calling eu tax service when not needed by @lovrocolic in #3134
- feat(api_key): cache api key and organization by @vincent-pochet in #3137
- New
remove_branding_watermark
Premium addons by @julienbourdeau in #3162 - chore(deps): bump net-imap from 0.5.5 to 0.5.6 by @dependabot in #3164
- fix(migrations): Remove migration tasks by @vincent-pochet in #3165
- chore(spec): group scattered it blocks for Graphql Types by @julienbourdeau in #3167
- chore(git): Add #3167 to .git-blame-ignore-revs by @julienbourdeau in #3168
- feat(data): Add revenue streams resolver by @rsempe in #3151
- fix(integrations): Fix invoices with progressive billing by @ivannovosad in #3166
- Revert "fix(integrations): Fix invoices with progressive billing" by @ivannovosad in #3170
Full Changelog: v1.20.2...v1.21.0
v1.20.2
What's Changed
- fix(current usage): fix current usage taxes by @lovrocolic in #3115
- feat(data): Add premium integrations enabled methods by @rsempe in #3118
- chore(valvalt): Update valvat version by @jdenquin in #3116
- Fix(revshare): add self billed credit note pdf by @annvelents in #3113
- feat(api): Add GET /api/v1/wallet_transactions/:id endpoint by @julienbourdeau in #3119
- misc(adjusted_fee): Allow fee adjustement without pre-existing fee by @vincent-pochet in #3083
- feat(InstantEstimate) - Standard charges by @nudded in #3120
- feat(boleto): Introduce Boleto as a valid Stripe Payment Method by @julienbourdeau in #3111
- Allow to override existing customer attributes by @floganz in #3124
- fix(invoice-preview): disable preview feature for freemium users by @lovrocolic in #3126
Full Changelog: v1.20.1...v1.20.2
v1.20.1
What's Changed
- feat: Support for Multiple Date Formats in Manual Payments Service by @brunomiguelpinto in #3110
- chore(deps): Bump lago-expression to v0.1.3 by @nudded in #3114
- feat(stripe): Save Payment Method in Customer when paying invoice with checkout url by @julienbourdeau in #3107
- Feat(InstantEstimate) - estimate instant fees by @nudded in #3033
Full Changelog: v1.20.0...v1.20.1
v1.20.0
What's Changed
- fix(payment): Ensure payment status is checkd as a string by @vincent-pochet in #3104
- fix(cashfree): Fix webhook and payment flow by @AyushChothe in #3106
- feat(preview-invoice): add route and controller action by @lovrocolic in #3108
- Reapply "feat(invoice): Avoid generating 0 amount charge fees (#3032)" (#3059) by @vincent-pochet in #3068
- misc(fee): Delete zero amount finalized fees by @vincent-pochet in #3020
New Contributors
- @AyushChothe made their first contribution in #3106
Full Changelog: v1.19.1...v1.20.0
v1.19.1
What's Changed
- chore(fees): Add unique index on event transaction id by @jdenquin in #3079
- Feat(revshare): self billed invoices numbering by @annvelents in #3078
- Fix: add validation on transaction_metadata type for recurring transaction rules by @annvelents in #3087
- feat(revshare): self billed invoice pdf/html template by @ancorcruz in #3089
- feat(revshare): missing bits of the feature... by @ancorcruz in #3090
- Add ability to filter invoice by absence of metadata by @floganz in #3082
- fix: adapt nango status code checks by @lovrocolic in #3093
- feat(invoice-preview): Add invoices preview context service by @floganz in #3091
- feat(invoice-preview): add preview support for wallet and credit note credits by @lovrocolic in #3084
- feat(revshare): missing bits to complete the feature by @ancorcruz in #3094
- feat(preview-invoice): add tax provider support for preview invoice by @lovrocolic in #3095
- Chore: add validation on credit note creation and estimate to have items as an array by @annvelents in #3096
- Chore: delete invoice errors for sequential number generation when finishing invoice generation by @annvelents in #3092
- fix(invoice-filtering): Wrong total count when filter invoices by metadata by @floganz in #3097
- fix(webhook): Fix specs when webhook worker is enabled by @vincent-pochet in #3099
- fix(payment): Handle payment and invoice status update by @vincent-pochet in #3088
- fix(Fee) - make sure organization_id is stored by @nudded in #3100
- fix(tasks): Fix signup task env var by @jdenquin in #3101
- fix: filter payments based on visible invoices by @brunomiguelpinto in #3102
- add rescue when failing to update charge filters and charges by @annvelents in #3103
Full Changelog: v1.19.0...v1.19.1
v1.19.0
What's Changed
- feat(invoices): Add new filters by @floganz in #3046
- fix(validations): Fix subscriptions validate service by @ivannovosad in #3052
- feat(payment_providers): Add Cashfree by @vincent-pochet in #2767
- feat(invoice): Avoid generating 0 amount charge fees by @vincent-pochet in #3032
- Feat manual payments controller by @ivannovosad in #3045
- Revert "feat(invoice): Avoid generating 0 amount charge fees (#3032)" by @vincent-pochet in #3059
- fix(terminate-relations): Fix terminate relations service by @ivannovosad in #3061
- feat(revshare): Add db columns for partners and self_billed invoices by @ancorcruz in #3062
- feat(revshare): Skip self billed invoices in analytics by @ancorcruz in #3066
- feat(revshare): Create customers with partner as account_type by @ancorcruz in #3065
- feat: Expose billing periods in invoice serializer by @vincent-pochet in #3064
- feat(invoice-preview): add base preview service by @lovrocolic in #3056
- Add taxes to recreated recurring pay in advance fees by @floganz in #3069
- feat(revshare): self billed invoice creation and skip payments by @ancorcruz in #3067
- feat(segment): Remove 8 unused events by @julienbourdeau in #3075
- feat(revshare): update customer account_type by @ancorcruz in #3074
- chore(spec): Rename shared example file by @julienbourdeau in #3076
- Feat(revshare): self billed invoices - do not trigger integrations by @annvelents in #3072
- chore: Use enum with positional arguments by @julienbourdeau in #3077
- fix(migration): Payment status migration by @vincent-pochet in #3080
- fix(stripe): Idem-potency errors should keep the payment pending by @vincent-pochet in #3063
- chore(gems): Upgrade gems to latest patch version by @julienbourdeau in #3081
- feat(invoice-preview): add logic for applying coupons on preview invoice by @lovrocolic in #3073
- misc(stripe): Improve payment create specs by @vincent-pochet in #3086
Full Changelog: v1.18.0...v1.19.0