Releases: getlago/lago-api
Releases · getlago/lago-api
v1.27.0
What's Changed
- chore(spec): Ensure all tables have organization_id column by @julienbourdeau in #3565
- Fix(multientities): fix payment receipt pdf generation by @annvelents in #3566
- fix(Analytics): Check if Sentry is defined by @nudded in #3564
- feat(audit_logs): Create Clickhouse::ActivityLog model by @rsempe in #3502
- Revert "chore(sentry): Add strackprof profiling with sentry (#3366)" by @nudded in #3568
- fix(billing_entities): Disable billing entity numbering by @jdenquin in #3570
- bug(PayInAdvance): Simplify pay in advance error handling by @nudded in #3574
- feat(audit_logs): Ability to fetch activity logs thru the API by @rsempe in #3513
- fix(progressive_billing): Ensure IdempotencyRecord is persisted by @vincent-pochet in #3575
- feat(audit_logs): Add ActivityLogsController#show by @rsempe in #3572
- feat(audit_logs): Create GraphQL classes for activity log by @rsempe in #3573
- chore(organization): Add organization_id to usage_thresholds table by @vincent-pochet in #3553
- chore(organization): Add organization_id to invoice_subscriptions table by @vincent-pochet in #3558
- chore(organization): Add organization_id to plans_taxes table by @vincent-pochet in #3557
- feat(avalara-integration): add new tax_customer method by @lovrocolic in #3576
- chore(organization): Add organization_id to payment_provider_customers table by @vincent-pochet in #3560
- feat(Idempotency): Detect early returns and raise an error by @nudded in #3578
- chore(organization): Add organization_id to invoices_taxes table by @vincent-pochet in #3562
- chore(organization): Add Organization Reference on Adjusted Fees by @jdenquin in #3540
- misc: Add more service results by @vincent-pochet in #3577
- chore(organization): Add Organization reference on Applied Coupons by @jdenquin in #3543
- chore(organizations): Add Organization ref on add_ons_taxes by @jdenquin in #3536
- feat(avalara-integration): refactor payload creation for invoice and CN taxes by @lovrocolic in #3512
- misc: Add temporary rails generator to fill the organization_id on every table by @vincent-pochet in #3585
- fix: Fix resolver to not include pending downgraded subscriptions by @ivannovosad in #3580
- chore(organization): Add organization_id to idempotency_records table by @vincent-pochet in #3579
- chore(organization): Add organization_id to charge_filters table by @vincent-pochet in #3582
- chore(organization): Add organization_id to charge_taxes table by @vincent-pochet in #3583
Full Changelog: v1.16.1...v1.27.0
v1.26.1
What's Changed
- Fix(invoices): Ensure invoices got organization sequential id by @ancorcruz in #3549
- chore(organization): Add organization_id to payments table by @vincent-pochet in #3544
- feat(error): Add original_error to FailedResult by @julienbourdeau in #3457
- fix(data-api): Fix prepaid credits data types by @ivannovosad in #3551
- chore(organization): Add organization_id to webhooks table by @vincent-pochet in #3552
- hotfix(webhooks): Avoid errors with webhooks delivery by @vincent-pochet in #3555
- misc: unify avalara account id type by @ansmonjol in #3545
- feat(alerting): Introduce SubscriptionActivity by @julienbourdeau in #3535
- chore(deps): bump net-imap from 0.5.6 to 0.5.7 by @dependabot in #3556
- fix: send correct contact error webhook for avalara by @lovrocolic in #3559
- feat(avalara-integration): change namespace in mutation for fetching provider taxes by @lovrocolic in #3504
- fix(docker): Add psql dependency by @jdenquin in #3561
Full Changelog: v1.26.0...v1.16.1
v1.26.0
What's Changed
- fix(invoices): improve organization numbering performances by @jdenquin in #3436
- feat: Add section_type to InvoiceCustomSections to support different section types by @brunomiguelpinto in #3456
- feat(wallet-transactions): Add generate payment url endpoint by @floganz in #3459
- bug(PayInAdvance) - don't create invoice outside of transaction by @nudded in #3460
- feat: Add Stripe funding instructions as system-generated invoice custom sections by @brunomiguelpinto in #3458
- Feat(multientities): add billing_entity constraints on invoices by @annvelents in #3447
- Feat(multientities): customers billing entity constraints by @annvelents in #3448
- Feat(multientities): add setting that was added on organization by @annvelents in #3462
- Feat(multientities): Add billing_entity constraints for fees by @annvelents in #3449
- fix(seeders): set billing_entity_id by @julienbourdeau in #3465
- fix(analytics): Fix null customer name by @ivannovosad in #3464
- fix(payment-receipts): Implement missing payment_method by @ivannovosad in #3467
- fix(payment-receipts): Fix payment_method by @ivannovosad in #3468
- fix(processor): Avoid dead jobs with subscription consumer by @vincent-pochet in #3469
- misc: Removes some references to OpenStruct by @vincent-pochet in #3470
- feat(fee): reset timestamps when updating fee.payement_status by @julienbourdeau in #3471
- Chore(fees): add null_false to organization_id at fees table by @annvelents in #3466
- misc(plans): Extract plan GraphQL arguments in types by @vincent-pochet in #3473
- fix(deps): Require ostruct when initializing by @julienbourdeau in #3476
- bug: Add zeitwerk check to the linters by @nudded in #3477
- feat(avalara-integration): add support for company code by @lovrocolic in #3463
- feat(Fee): improve scopes on Fee by @nudded in #3481
- chore: Drop unused indexes on events by @nudded in #3479
- Feat(multientities): add missing fields to serializer by @annvelents in #3474
- misc(job): Add a new ClockJob base job class by @vincent-pochet in #3482
- feat(avalara-integration): add support for avalara integration customer by @lovrocolic in #3461
- Feat(multientities): Services to apply and remove taxes on billing entity by @annvelents in #3475
- feat(multientities): Assign billing entity sequential id to invoices by @ancorcruz in #3394
- Feat(multientities): update old taxes services by @annvelents in #3478
- fix(migration): Apply migration to create unique index on billing_entity_sequential_id after fixing its content. by @ancorcruz in #3485
- fix(migration): handle invoices billing_entity_sequential_id index by @ancorcruz in #3487
- chore(spec): Send
customer.vies_check
webhook if error by @julienbourdeau in #3472 - Fix(multientities): one more seed org creation with billing_entity by @annvelents in #3484
- misc(db): Change indexes on cached aggregations table by @vincent-pochet in #3488
- feat(exports): Create Export views by @jdenquin in #3491
- fix(exports): Force type for exports by @vincent-pochet in #3493
- chore(workers): Add dedicated payments worker by @jdenquin in #3496
- feat: Enqueue EU tax update job for organizations by @brunomiguelpinto in #3498
- feat(multientities): Add taxes (applied) to billing entity serializer by @ancorcruz in #3495
- feat(jobs): Make
Payments::UpdatePaymentMethodDataJob
unique by @julienbourdeau in #3490 - feat(multientities): Migrate organization applied taxes. by @ancorcruz in #3489
- Fix: save provider_payment_id on payment even if it failed by @annvelents in #3501
- feat(dx): improve seeders and truncate db by @julienbourdeau in #3507
- chore(spec): maintain_test_schema! before test by @julienbourdeau in #3497
- misc(usage): Remove OpenStruct by @vincent-pochet in #3509
- feat: add usage_already_billed_cents by @brunomiguelpinto in #3508
- chore(deps): bump nokogiri from 1.18.4 to 1.18.8 by @dependabot in #3514
- Feat/multientities 4 graphql taxes by @annvelents in #3420
- feat(multientities) BillingEntity as source of truth for Invoices by @ancorcruz in #3506
- misc(filter): Remove OpenStruct for Query::Filters definition by @vincent-pochet in #3499
- feat(multientities): Handle eu tax management at billing entity level by @ancorcruz in #3500
- Fix(stripe-webhooks): do not process payment on stripe webhook that belongs to another organization by @annvelents in #3511
- Prepaid credits GQL by @ivannovosad in #3503
- feat: Add create_org helper to Rails console by @brunomiguelpinto in #3521
- feat(avalara-integration): add logic for fetching company id by @lovrocolic in #3492
- feat(multi entities): Billing entities as source of truth for invoices by @ancorcruz in #3515
- Feat(multientities): add api endpoint and service to manage taxes all together by @annvelents in #3483
- Feat(multientities): use billing_entity when generating a credit note by @annvelents in #3516
- feat(Idempotency): introduce IdempotencyRecord by @nudded in #3494
- misc(charge_model): Define Result for charge model services by @vincent-pochet in #3517
- Feat(multientities): payment receipt pdf use billing_entity_info by @annvelents in #3519
- chore(ci): Set permissions to none by @julienbourdeau in #3529
- refactor(billing): Breakdown RecalculateAndCheckService to inject current_usage by @julienbourdeau in #3528
- feat(ProgressiveBilling) - Add Idempotency.transaction to progressive billing service by @nudded in #3526
- fix(invoice-preview): Handle downgraded subscriptions in invoice previews by @floganz in #3534
- misc: Add organization_id field on charges by @vincent-pochet in #3532
- misc(segment): Track only active memberships during login by @floganz in #3537
- feat(payment-urls): Store payment url by @floganz in #3518
- chore(organization): Add organization_id to subscriptions table by @vincent-pochet in #3539
- fix(dispute-lost): Do do call lose dispute service for payment requests by @ivannovosad in #3546
- chore(organization): Add organization_id to wallets table by @vincent-pochet in #3541
- chore(organization): Add organization_id to wallet_transactions table by @vincent-pochet in #3542
Full Changelog: v1.25.0...v1.26.0
v1.25.0
What's Changed
- feat(taxes): Add jobs to update EU Taxes by @julienbourdeau in #3390
- fix(coupon): Allow updating description when already applied by @vincent-pochet in #3412
- misc: Remove count attributes from BillableMetric graphQL type object by @ancorcruz in #3403
- Feat(multientities): add API endpoints for billing_entities by @annvelents in #3408
- Feat(multientities): serialize billing_entity_code in API by @annvelents in #3411
- fix(regroup_fees): Compute taxable_base_amount_cents on applied taxes by @rsempe in #3415
- fix: Use BigDecimal instead of Float on amount details by @rsempe in #3416
- fix(redis): increase timeouts and retry counts, and reconnect counts, add retry_jitter to avoid lock contention by @roeeklinger in #3413
- fix(services): return valid Result in AutoGenerateService by @julienbourdeau in #3414
- feat(payment_providers): Add MoneyHash [Allow edits by maintainer] by @shahwan42 in #3418
- ftr(avalara-integration): add avalara model by @lovrocolic in #3419
- Fix(multientities): create customer with billing_entity when creating a subscription by @annvelents in #3421
- Fix Invoices::PrepaidCreditJob queueing to ensure uniqueness by @ancorcruz in #3422
- Feat(multientities): step-3 billing entity graphql endpoints by @annvelents in #3382
- Feat(multientities): assign billing_entity_id when creating fees by @annvelents in #3375
- fix(bug): Stripe payment intent creation payload by @ancorcruz in #3426
- fix(sentry): stackprof should be loaded before sentry by @jdenquin in #3423
- feat(avalara-integration): add base avalara graphql connection setup by @lovrocolic in #3424
- feat(payment-receipts): Use services by @ivannovosad in #3294
- Add env var to disable lifetime-usage refresh by @nudded in #3433
- misc: Remove schema.rb by @ivannovosad in #3438
- Feat(multientities): Add support of billing_entity filter in invoices query by @annvelents in #3427
- fix(payments): Fix payment of a one time payment request by @ivannovosad in #3441
- Feat(multientities): add billing_entity to invoices#preview by @annvelents in #3417
- Fix(multientities): add billing_entity_id to cache key for analytics by @annvelents in #3425
- feat(wallet-transaction): Populate invoice_id by @floganz in #3435
- fix(payment): Fix PaymentIntentSucceededService by @ivannovosad in #3442
- fix(fee): Add repeatable read isolation for in advance fees creation by @vincent-pochet in #3444
- feat(avalara-integration): add support for updating avalara connection by @lovrocolic in #3445
- Feat(multientities): Add support of billing_entity filter in customers query by @annvelents in #3428
- fix: fix credit note applied taxes by @lovrocolic in #3446
- Feat(multientities): Add support of billing_entity filter in credit_notes query by @annvelents in #3429
- Feat(multientities): graphql create and update user with billing entity by @annvelents in #3437
- Chore(fees): add migration to populate fees with organization_id by @annvelents in #3432
- feat (avalara-integration): add GQL support for creating avalara connection by @lovrocolic in #3443
- feat(processor): Add flag subscription refresh logic by @vincent-pochet in #3393
- feat(avalara-integration): add support for avalara mapping by @lovrocolic in #3450
- Feat(multientities): migration to populate billing_entity_id on fees by @annvelents in #3431
- Feat(multientities): update discarded customers to be assigned to a billing entity by @annvelents in #3434
- fix(post-process): Enable TLS for valkey by @vincent-pochet in #3451
- Feat(multientities): Small fixes at the end of step 3 implementation by @annvelents in #3452
- fix(post-process): Fix redis connection by @vincent-pochet in #3453
- fix(cashfree): wrong module name by @julienbourdeau in #3454
- misc(processor): Change config for refresh by @vincent-pochet in #3455
New Contributors
- @shahwan42 made their first contribution in #3418
Full Changelog: v1.24.1...v1.25.0
v1.24.1
What's Changed
- Misc dump sql by @ivannovosad in #3349
- fix(wallets): Fix wallet stale error when decreasing balance by @jdenquin in #3395
- Don't retry in advance invoices by @nudded in #3398
- fix: flaky tests by @brunomiguelpinto in #3399
- feat(data): Add pagination by @rsempe in #3380
- Feat add timeout by @brunomiguelpinto in #3400
- fix: handle xero decimal cases by @brunomiguelpinto in #3396
- Feat(multientities): include billing_entity_id filter in analytics by @annvelents in #3372
- feat: Add deleted records to customers and plans resolvers by @rsempe in #3401
- wallets - Use explicit lock by @nudded in #3404
- feat: ops follow ai issue by @brunomiguelpinto in #3406
- misc(GraphQL): add deletedAt on plans object by @ansmonjol in #3405
- Move jobs to low_priority when unable to acquire lock by @nudded in #3407
- bug(LifetimeUsage): Extend uniqueness lock from 1 hour to 12 hours by @nudded in #3410
Full Changelog: v1.24.0...v1.24.1
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 F438 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