TAG LINE
TAG LINE
SMALL TITLE

LogiSense Billing 10.7.x Release Notes

Last Updated: Mon Apr 15 2024

Within these release notes you will find descriptions of new features, enhancements and API changes in the LogiSense Billing application. The content below details changes in major release versions, point release versions and hotfixes. If you have any questions about the information provided below please do not hesitate to contact your LogiSense support representative.

10.7.0.0 Release Notes

Change Highlights

Product Catalog Enhancements:

  • Promo Code and Discount Enhancements:

    • Added a 'Trial Discount' option when configuring discounts or promo codes on package-services which can be used in conjunction with a new invoice token called 'IsFreeTrialExpiring' to alert customers that a discount is expiring in the current billing period

    • Added the ability to configure proration on promo codes

    • Added the ability to add a promo code to an account-package or account-service that has already been billed

    • Added the ability to add a promo code discount to a sales order. Promo code discounts will apply to all valid account-services in the order

    • When a Promo Code is attached to an Order, the Discounts on the Order Packages must apply (can no longer opt out of discounts being applied)

  • Contract Enhancements:

    • Added a Revoke Discount(s) option on the Setup / Product Catalog / Contracts screen. When enabled package term penalties are calculated as if discounts do not exist

  • Price Books:

    • Modified price book configuration so that bucket details on a package-service can be customized per price book and currency

Billing Enhancements:

  • Added the ability to execute bill runs in parallel

  • Added a 'Relative Date' option to the Recurring Bill Run Schedule configuration, this allows bill runs to be executed using relative values (End of Month, Start of Next Month, End of Next Month)

  • Modified bill runs to pick up any account-packages with effective cancel dates earlier than the bill run’s period end value, regardless of the account-package's next bill date. This permits the ability to apply charges/refunds to cancelled prepaid packages without the need to wait until the package’s next bill date is reached

  • Added ‘Run Invoice’ and ‘Render Invoice’ options when billing from an account. This allows charges to be generated without invoicing them

  • Modified the Bill Run History screen to display additional data and indicate where billing was initiated from (an account, sales order or a bill run)

Account Enhancements:

  • Account Search Enhancements:

    • Added the ability to create custom account search views where you can specify the fields to return in the search results

    • Expanded the data the accounts can be searched by (e.g. Invoice data, account custom fields, account-package custom fields)

    • Clicking on a search result will take you directly to the entity (e.g. clicking on an account-package custom field search result will load the account package screen with the related account-package selected)

    • A default account search can be configured

  • Other Account Screen Enhancements:

    • Added an 'Errors' tab to the Account / Profile / Orders screen which provides details as to why creating a sales order failed

    • Clicking on a note will navigate the user to the Account / Communication / Notes screen

    • An ‘Id’ field has been added to account-packages on the Account / Profile / Packages screen indicating the Account Package ID

    • An ‘Id’ field has been added to account-services under account-packages on the Account / Profile / Packages screen indicating the Account Service ID

    • A ‘Cancellation Billing Option’ field has been added to the Account / Profile / Packages screen which indicates what cancellation option was selected for cancelled account-packages

Tax Enhancements:

  • Tax Exemption Enhancements:

    • Ability to add the tax exemption for specific taxes on the Account / Settings screen Taxes tab

    • Account tax exemptions now allow granular exemptions based on tax type and tax location, along with the existing tax level settings (federal, state, local, etc.)

    • Tax Location is defined by the Tax Jurisdiction code (a.k.a. the pcode) of a location configured for the exemption

  • Tax Addresses:

    • Added the ability to configure tax addresses on the Account / Settings screen Taxes tab. These addresses can be used to apply taxes to account-services on the account/sub-accounts

    • Updating an address configured on the Account / Settings screen Taxes tab will update the address everywhere it is used on the account/sub-accounts

    • Added the ability to configure tax addresses directly on account-packages in order to tax account-services based on where the services are located. Tax addresses on account-packages can be entered as custom values specific to the package or pulled from the list of tax addresses configured on the account. Addresses configured at the account-package level will be used for taxation instead of account contact addresses

  • Inclusive Taxes:

    • Added the ability to configure rate groups as Tax Inclusive. When this setting is enabled all rates within the rate group will be tax inclusive

    • Added a ‘Zero Inclusive Tax When Exempt’ setting to the Account / Setting screen Taxes tab. When this setting is enabled tax inclusive services on the account which are tax exempt will keep the same charge and have the taxes reduced to zero. Transactions on the Invoice screen will still show the service charge as reduced (tax taken off) but the tax amount will be $0

  • Other Tax Enhancements:

    • Added the ability to configure service tax categories on usage rates

Payment Integration and Enhancements:

  • Adyen Direct Payments Integration

    • Added Adyen as a payment provider configurable at the Owner level

    • 3DS2 protocol is supported

    • Credit card, bank account and PayPal data is tokenized with no PCI data stored in LogiSense Billing

    • One-time payments are supported

    • Full and partial payment refunds are supported

    • Rejected payments can be retried

    • The Adyen Real Time Account Updater is supported allowing credit card information to be updated or the card deactivated

    • Adyen Auto Rescue is supported and integrated with LogiSense Billing Dunning functionality allowing the invoice balance to be collected during billing for cards or that have previously failed

    • Added a new field to the Account Settings screen called 'External Account Identifier' which is populated with Adyen's shopperReference value when a payment is sent to Adyen

    • Adyen fraud alerts can be received and acted upon (disable payment methods, trigger webhooks to alert the appropriate parties)

    • Payment methods and tokens can be imported

  • Spreedly Integration

    • Added the ability to setup more than one payment type using the same card type on different Spreedly payment gateways

Owner Enhancements:

  • Moved the Branding configuration into a new ‘Owner Information’ tab

  • Added the following new fields to the Owner Information tab which can referenced with new Invoice tokens and are shown in some reports

    • Owner Name (required)

    • Owner Display Name

    • Country and Address

    • Owner VAT#

    • Owner Banking Reference ID

    • Owner Registration ID

    • Owner eInvoice Endpoint ID

  • Added a 'Bill Prepaid Adjustments' option to the Owner Configuration screen which provides control on how prepaid periods are billed

    • If this setting is disabled then only the initial prepaid package charges will be applied each billing period when the prepaid account-package is billed. Additional charges that are applicable after that based on changes made (service/package status changes, upcoming cancellations, refunds, etc.) will not be billed until the next billing period

    • If this setting is left enabled then existing system behavior will still apply

  • A Reporting tab has been added which indicates if a reporting database has been configured. When a reporting DB is enabled reporting data in LogiSense Billing can be synced to a replica database. For more information on this feature please contact us

Usage & Rating Enhancements:

  • Improved the Rating Exceptions screen UI and functionality

    • Daily aggregates per exception type can be viewed

    • Aggregates can be filtered (by date, account, count)

    • Exceptions can be reprocessed or deleted

    • Up to 200 million usage exceptions can be loaded

    • Exception statuses are provided to indicate the state of an exception

    • A new Usage Rating Exceptions report can be run using the Generate Report button

  • Added a new screen under Operations / Monitor / Identifier History which displays the history of a supplied usage identifier (the accounts, services and statuses that the usage identifier has been configured with in its history, among other details)

  • Added the ability to configure general ledger codes on usage rates and usage rate groups

Data Archive and Transfer Location Enhancements:

  • The SFTP Settings screen has been renamed to 'Transfer Locations' and AWS S3 is now supported as a location in addition to the existing SFTP option

  • Scheduled reports can be configured to be sent to an external S3 bucket in the same way they can be sent to an external SFTP location

  • Migrated SFTP from LogiSense Billing to AWS S3 to address issues with downtime that occurs during maintenance/upgrades. The Usage Importer will now stream files off of S3, instead of the inbound directory

  • Added the ability to specify an ‘External’ location in the Invoice Delivery screen configuration which, when enabled, will send invoices and their attached reports to the specified transfer location during billing

    • Invoices sent externally will mark the invoice as delivered

    • Invoices delivered externally can still be downloaded from the LogiSense Billing application

    • Email templates can be attached to an invoice delivery that is setup to transfer the invoice to an external location allowing billing contacts to be notified by email when the invoice export occurs

  • Added the ability to export archived data to transfer locations when setting up a data archive

  • Added a new Delta Export data archive type which permits daily changes to account data to be sent to a transfer location

  • Added a new File Transfer screen in the Operations / Monitor menu to provide a history of file transfer events and their details

Invoice and Template Enhancements:

  • Moved Invoice and Credit Note Template files into AWS S3 buckets allowing template updates to be made without the need to log into the LogiSense Billing AdminPortal

  • Added a new Invoice Template Type XML eInvoice which stores the template as a PEPPOL 3.0 standard text document instead of a Word Mail Merge template

    • An Invoice Delivery can be setup to use the eInvoice template which renders the XML text document during billing

    • The XML text document can be exported to an external transfer location using the Offline Delivery option

    • Added the fields ‘Added VAT #’, ‘eInvoice Scheme ID’ and ‘eInvoice Endpoint’ fields to the Account / Settings screen Account tab

  • Modified Invoicing logic to adjust invoices with a negative balance to a zero balance value as new invoices are created and the negative balance is applied to the next invoice. This approach addresses issues with aged invoice balance reports

  • Added a new Account Id invoice token

  • Added a currency 'Format' field when configuring invoice or credit note templates. This setting allows the default formatting for tokens of type 'Money' to be overridden on invoices/credit notes

  • Adjusted validation to allow using the same Alias name when adding custom reports to invoice templates

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

Other Enhancements and Fixes

  • Many UI and API validation fixes and improvements

  • Billing and rating performance and resiliency improvements

  • Security improvements

  • Improved performance when loading large reports

  • Removed the total count value from the paging controls of many screens to address performance issues

  • Modified package contracts to permit them to be added to an account-package with any start date, even a date that precedes the effective date of the account-package

  • Modified general ledger names to support up to 255 characters

  • Updated several screens to adhere to the standard left hand side menu format

  • Moved the Rating Exceptions and Import History screens into the Operations / Monitor menu

  • Added LogiSense Billing Entity ID, Single Sign-On URL and Billing Tenant URL details to the Owner Configuration SAML Setting tab

  • Fixed an SSO issue where SCIM users would remain in the SCIM default role group after a new group was configured on the user

  • Removed the option to add a new default account service status from the Services screen

  • Removed the field type 'Text' when creating custom fields to address performance issues. Existing custom fields setup with the Text field type will still be able to use this type

  • Fixed an issue where an account-package with an effective date time value of 00:00:00.000 could result in an extra charge for a prepaid, charge full period account package

  • Fixed an issue where voiding an invoice could result in an incorrect next bill date being set on prepaid account-packages with non-recurring charged services

  • Fixed an issue with prepaid packages where an account-service status could not be changed from a suspended status to a billable status in some scenarios

  • Fixed an issue that prevented the reversal of a remaining partial transaction on a sub-account if the sub-account was configured with a different currency than its invoicer account

  • Fixed an issue that prevented a partial reversal of a previously reversed transaction that was voided

  • Fixed an issue that could cause invoice re-rendering to fail

  • Fixed an issue where a package configured to bill on its own bill day would be set with a bill day of the 28th instead of the 1st when the account-package was added on the 29th, 30th or 31st day of the month

  • Fixed an issue that could generate an unexpected API error response when attempting to select a product code while creating an order

  • Fixed an issue where re-rating might not be triggered when an account in overage had an account-service added containing a shared bucket and the account-service was later cancelled

  • Fixed an issue that could cause email template tokens to fail to resolve

  • Added a BillAccount permission to the Account Profile permissions list to control if a user has permissions to bill an account or not

  • Fixed a permission issue that prevented a user with valid permissions from creating a sales order

  • Fixed a permission issue that prevented a user with read-only permission from accessing the package frequencies screen

  • Fixed several issues with data imports and the Data Import screen

  • Added a totalCount property to child embedded datasets for use in invoice templates

  • Modified the Developer / Server / API screen not to display deprecated API versions in the Version drop down list

  • Modified the CompanyIdentifier field to support only 20 characters to match the Avalara character limit

  • Modified customer portal UI to clearly indicate which payment methods are active on an account

10.7.0.0 API Changes

API versions v4 is deprecated as of this release

API Version 9 is introduced in this release

  • 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> AccountTaxExemptions { 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)

For additional API documentation please see the API Reference documentation on logisense.com.

10.7.1.0 Release Notes

  • Added an 'Allow Credit' option to the discount configuration screen. When set discounts can be configured to be greater than the price of a service (resulting in a negative charge/credit)

  • Added a 'Default Gateway' field to the Account / Settings screen Billing tab which appears if at least one payment gateway is setup in the system. This setting is used to indicate the payment gateway that will be used when payment methods are setup or payments are made

  • Modified the Adyen payment method dialog to display the Credit Card holder's name

  • Added Sage Payment Solutions as a supported gateway in Spreedly integrated environments

  • Improved performance loading data on the Account Package and Package screens

  • Re-rating performance improvements

  • Added custom fields of type Text that support field sizes of 500, 1000, and 2000

  • Modified the Aged Invoice Balance data source to include Account Name, Display Name, and Currency Code columns

  • Fixed a billing issue where a daily bill run could have its End Date incremented by two days instead of one in some scenarios

  • Fixed an issue with sales orders where the invoice ID was not being saved when processing an order

  • Fixed an invoice rendering error that could occur in some scenarios

  • Fixed an email template issue where Invoice variables failed to load in the Variables list in some scenarios

  • Fixed an issue in AvaTax integrated environments where billing would fail to bill some transactions if no document codes were available when committing the transactions to Avalara

  • Fixed an issue with fixed rate usage where partially bucketed usage that went into overage was charged at a prorated rate per event instead of at the configured fixed rate

  • Fixed an issue where an error would occur after modifying a share plan's Recur Type from Recurring to Recurring with rollover

  • Fixed an issue where an error would occur when attempting to update the Threshold, Usage Unit or Flat Charge on share plan usage bucket tiers

  • Fixed an issue in Adyen integrated environments where attempting to make a payment would fail if a billing contact was not configured on the account

  • Fixed an issue in Adyen integrated environments where creating a new payment method using an existing payment method's name could result in payment processing failures

  • Fixed an issue where json files were being transferred when sending invoice attachments to an external delivery location

  • Fixed an SSO issue which could result in login errors in load balanced environments

10.7.1.0 API Changes

  • v9/Account (Get, Post, Patch, Put): added public int Default_PaymentGatewayId { get; set; }