Release 10.7

This release introduces Version 9 APIs in billing platform version 10.7, with a strong focus on security, observability, and event-driven capabilities. Webhook functionality has been significantly enhanced with support for OAuth 2.0 client credentials, expanded monitoring capabilities, and the ability to trigger events from dunning processes, along with a new “Payment Status Updated” webhook. API reliability and security have also been improved through better error handling, support for idempotency keys to prevent duplicate operations, and the introduction of client ID and secret-based authentication for API users as an alternative to traditional credentials.

In addition to deprecating several legacy endpoints, this release delivers extensive updates and new capabilities across v9 APIs. Enhancements include expanded tax handling with support for custom and shared tax addresses, improved billing and reporting controls, additional invoice and payment data fields, and broader discount and pricing flexibility. Several structural changes streamline data models, including removal of legacy rate plan references and updates to reporting filters. A wide range of new endpoints has also been introduced, covering templates, usage exception management, administration, payment method synchronization, advanced search capabilities, and system health checks, significantly expanding the platform’s flexibility, integration options, and operational control.


📘

NOTE: Version 9 APIs have been introduced in billing platform version 10.7.

Webhook Enhancements

  • Updated Webhooks to support OAuth 2.0 client credentials
  • Added the ability to send webhooks from dunning events
  • Modified the Webhooks Monitor screen to be able to view webhooks coming into the system
  • Modified the Webhooks Monitor screen to provide more details to aid in resolving errors and tracking/sorting payment events
  • Added a new webhook entity ‘Payment Status Updated’ which is triggered when a payment record in LogiSense Billing changes status

API Enhancements

  • API error handling fixes and improvements
  • Added the ability to specify a Idempotency Key which can be optionally sent in with a non-GET API request
  • Added a new Client ID/Secret Authentication Type for API Users (configured on the Setup / Users & Accounts / Users screen). Instead of authenticating with a username/password, with the password following password expiry rules, the user will authenticate with a Client ID (the username) and client secret (an API key), which does not expire

Deprecated APIs

  • Account/Summary (all versions)
  • Account/Summary/Paged (all versions)
  • Udr/Aggregate/UsageRate (all versions)
  • Udr/Aggregate/UsageRate/Paged (all versions)
  • Udr/Aggregate/UsageRate/[id] (all versions)
  • v9/BillRun/Schedule//Recurring (v5-v8 versions still available)
  • v9/Account/Summary/[id:int] (v5-v8 versions still available)

Updated APIs

  • v9/Account/Package/FromCatalog: added nonBillableServiceStatusTypeName to AccountPackageFromCatalogServiceDTO, added ImportLastUsageBilled to AccountService (but not on AccountServiceDTO)
  • v5-v8/Package/Frequency/id/Detail: PriceBookId is now included in the usageBucketTiers, moneyBuckets detail sections
  • v9/Package/Frequency/[id]/Detail (Get): usageBucketTiers, moneyBuckets, defaultUsageBucketTiers, defaultMoneyBuckets are no longer returned in the detail section
  • v5-v8/Package/Frequency/id/Detail (Get): PackageFrequencyDetail.usageBucketTiers, PackageFrequencyDetail.defaultUsageBucketTiers to use new DTO UsageUnitsBucketTierDTO PackageFrequencyDetail.moneyBuckets, PackageFrequencyDetail.defaultMoneyBucketTiers to use new DTO MoneyUnitsBucketTierDTO
  • v9/Package/Frequency/id/Detail (Post, Put): PackageFrequencyDetail.usageBucketTiers, PackageFrequencyDetail.defaultUsageBucketTiers to use new DTO UsageUnitsBucketTierDTO PackageFrequencyDetail.moneyBuckets, PackageFrequencyDetail.defaultMoneyBucketTiers to use new DTO MoneyUnitsBucketTierDTO
  • v9/Template (Get): made public
  • v9/Template/[id] (Get): made public
  • V9/Invoice/Item (Get): Added public int InvoicerAccountId ( get; set; ), public string InvoicerAccountName ( get; set; )
  • V9/Invoice/Item/Paged (Get): Added public int InvoicerAccountId ( get; set; ), public string InvoicerAccountName ( get; set; )
  • V9/Invoice/Item/Paged/Detail (Get): Added public int InvoicerAccountId (get; set; ), public string InvoicerAccountName ( get; set; )
  • V9/Invoice/Item/[id] (Get): Added public int InvoicerAccountId ( get; set; ), public string InvoicerAccountName ( get; set; )
  • V9/Invoice/Item/[id]/Detail (Get): Added public int InvoicerAccountId ( get; set; ), public string InvoicerAccountName ( get; set; )
  • v9/Payment (Get, Post): Added public int PaymentStatusTypeId ( get; set; )
  • v9/EventSubscription/Webhook (Post, Patch): Added public string OAuthClientSecret ( get; set; )
  • Account/Package/[id]/Detail (Get, Post, Patch): Removed AccountService CurrentRatePlan from accountServices Detail and removed AccountPackageRecurringPriceTier CurrentRatePlan from AccountPackageRecurringPriceTier Detail
  • Account/Package/Paged/Detail (Get, Post, Patch): Removed AccountService CurrentRatePlan from accountServices Detail and removed AccountPackageRecurringPriceTier CurrentRatePlan from AccountPackageRecurringPriceTier Detail
  • Account/Service/[id]/Detail (Get, Post, Patch): Removed AccountService CurrentRatePlan from Detail
  • Account/PricePlan/[id]/Detail (Get, Post, Patch): Removed AccountPricePlan CurrentRatePlan from Detail
  • Account/PricePlan/Paged/Detail (Get, Post, Patch): Removed AccountPricePlan CurrentRatePlan from Detail
  • Package/Service/PricePlan (Get, Post, Patch): Removed RecurringPriceTier CurrentRatePlan from RecurringPriceTier Detail
  • v9/Owner (Get): Added public bool IsReportingDatabaseEnabled ( get; set; )
  • v9/ReportDefinition (Get, Post, Put, Patch): Added public bool UseReportingDatabase ( get; set; )
  • AuthorizationServer/api/V9/Access/Login (Post): Added public string client_secret ( get; set; )
  • v9/Account/Detail (Get, Post, Put, Patch): Added public ListResultsDTO<AccountTaxExemptionDTO>
  • AcountTaxExemptions ( get; set; ), removed public ListResultsDTO<AccountTaxExemptLevelDTO> AccountTaxExemptLevels ( get; set; )
  • v9/ReportDefinition/[reportDefinitionId]/Render (Post): ReportRequest Header Updated:
    • Added “onDemandFilters” as of v9
      • Supports dataSourceName and dataSourceColumnName
      • filterId removed
    • Deprecated “filters” (can use in API version v8 and below)
  • v9/Usage/Rate (Get, Post, Put, Patch): Added GeneralLedgeId and ServiceTaxCategoryId
  • v9/Owner (Get, Patch): Added public bool BillPrepaidAdjustments ( get; set; )
  • v9/Account/Package/FromCatalog (Post): Added public int discountPromoCodeId ( get; set; ) and public string discountPromoCodeName ( get; set; )
  • v9/Order (Get, Post, Put, Patch): Added public int discountPromoCodeId ( get; set; )
  • v9/Usage/Rate/Group (Get, Post, Put, Patch): Added public int GeneralLedgerId ( get; set; )
  • and public string GeneralLedgerName ( get; set; )
  • v9/Usage/Rate/Group (Post, Get): Added public bool IsTaxInclusive ( get; set; )
  • v9/Account (Get, Post, Put, Patch): public bool ZeroInclusiveTaxWhenExempt ( get; set; )
  • v9/Account (Post, Put, Patch, Delete):
    • Added optional custom taxAddresses to details
      • public ListResultsDTO<TaxAddressDTO> TaxAddresses ( get; set; )
    • and TaxAddressDTO:
      • public string Name ( get; set; )
      • public bool IsShared ( get; set; )
      • public int AccountId ( get; set; )
      • public string AccountName ( get; set; )
      • public int AddressId ( get; set; )
      • public bool SaveTaxAddressOnInvoicer ( get; set; )
      • public string Address1 ( get; set; )
      • public string Address2 ( get; set; )
      • public int StateId ( get; set; )
      • public string StateName ( get; set; )
      • public string StateCode ( get; set; )
      • public int CountryId ( get; set; )
      • public string CountryName ( get; set; )
      • public string CountryCode ( get; set; )
      • public string ZipCode ( get; set; )
      • public long TaxJurisdictionCode ( get; set; )
      • public string CityName ( get; set; )
      • public DateTime TaxJurisdictionCodeUpdated ( get; set; )
      • public long TaxJurisdictionCodeOverride ( get; set; )
      • public bool IsIncorporated ( get; set; )
  • v9/Account/Package (Get, Post, Put, Patch, Delete): Added ability to set optional shared taxAddressId or custom taxAddress in details
  • v9/Account/Package/FromCatalog (Post): Added ability to set optional shared taxAddressId or custom taxAddress
  • v9/Order (Get, Post, Put, Patch, Delete): Added ability to set optional shared taxAddressId or custom taxAddress in OrderPackage
  • v9/Rerate (Get, Post, Put, Delete): public in v5, internal in v6 onwards
  • v9/Account/Package (Post, Patch): Added int IsFreeTrial ( get; set; )
  • v9/PaymentMethod/CreditCard (Post): Added int PaymentGatewayId and string PaymentGatewayName
    • **NOTE: **this is a Breaking Change as more than one PaymentType is now permitted to use the same CardType on different PaymentGateways. Prior to this change a CardType could only be used once, so a PaymentType was unique
    • This does not affect Adyen integrations since only one Adyen PaymentGateway is allowed For Spreedly, if a CardType is used multiple times, then the PaymentGateway MUST be provided for these API routes, or an error will be returned
  • v9/PaymentMethod/BankAccount (Post): Added int PaymentGatewayId and string PaymentGatewayName NOTE: this is a Breaking Change as more than one PaymentType is now permitted to use the same CardType on different PaymentGateways. Prior to this change a CardType could only be used once, so a PaymentType was unique
    • This does not affect Adyen integrations since only one Adyen PaymentGateway is allowed For Spreedly, if a CardType is used multiple times, then the PaymentGateway MUST be provided for these API routes, or an error will be returned
    • v9/PaymentMethod (Get): Added int PaymentGatewayId and string PaymentGatewayName

New APIs:

  • v9Package/Frequency/[id]/PriceBook/[id]/Currency/[id]/UsageBucketTier (Get)
  • v9/Package/Frequency/[id]/PriceBook/[id]/Currency/[CurrencyCode]/UsageBucketTier (Get)
  • v9/Template/CreditNote (Post)
  • v9/Template/Invoice (Post)
  • v9/Template/CreditNote/[id] (Put)
  • v9/Template/Invoice/[id] (Put)
  • v9/JsonApi/ApiVersion/Available (Get)
  • v9/UsageRatedExceptionSchedule/Reprocess (Post)
  • v9/UsageRatedExceptionType (Get)
  • v9/Administration/User/* (Get, Post, Patch)
  • v9/PaymentMethod/Import/Sync (Post)
  • V9/CustomDataSource/ByConnection/[id:int]/Paged?useReportingDatabase=(true/false) (Get)
  • V9/CustomDataSource/ByConnection/[id:int]?useReportingDatabase=(true/false) (Get)
  • v9/Account/ByName/Search (Post)
  • v9/Account/ByHierarchy/Search (Post)
  • v9/Account/[id]/Balance?asOf=[Date] (Get)
  • v9/ResourceServer/api/Ping (Get)
  • v9/AuthorizationServer/api/Ping (Get)
  • v9/UsageIdentifier/ByIdentifier/Search (Post)
  • v9/Account/[id]/TaxAddress/Search (Post)
  • v9/Account/[id]/TaxAddress/AvailableFor/Search (Post)
  • v9/Account/Package/ByExtension/Search (Post)