New Features/Improvements (3)
Pro-Forma Transactions (ZB-3218)
You can now generate a Pro-Forma preview of a billing transaction: a non-posting record that shows exactly what an invoice, sales order, or credit memo will look like, without creating a real financial record or advancing any charge statuses.
- Generate on demand: a new Pro-Forma toggle on the Create Transactions suitelet lets you preview a transaction before you create real transactions.
- Generate on a schedule: a new Create Pro-Forma process can be scheduled as its own ZAB Automation (Setup > Zone Billing Setup > Automated Processes) letting you generate previews automatically ahead of your billing run.
- Uses your existing templates: Pro-Forma output runs through the full billing engine and renders using your existing PDF templates.
- Clearly marked: A "PRO FORMA" watermark is displayed on the PDF to keep previews from being mistaken for real transactions.
- Self-cleaning: a configurable retention period setting in ZAB Preferences automatically purges old Pro-Forma records so they don't pile up.
See the Pro-Forma Transactions article for step-by-step instructions, required post-deploy setup steps, and additional details about Pro-Forma Transactions. For more information, the user guide can be found in the Knowledge base under User Guides > Generate Pro-Forma Transactions.
Configurable Cancellation Offset Proration Settings (ZB-2496)
Cancellation and termination workflows using Don't Preserve Charges now support configurable proration methods for generated offsetting charges, allowing alignment with subscription proration rules and accounting preferences.
- Account-Wide Preference Control: A new Default Cancellation Offset Proration preference in ZAB Preferences controls the default proration method across the account (Prorate Quantity by Days, Prorate Rate by Days, Follow Sub Item Proration Type, or Do Not Prorate). Upgraded and existing accounts default to Prorate Quantity by Days.
- Flexible Record-Level Overrides: Added a Cancellation Offset Proration Override field next to the Cancellation Date on both Subscription and Subscription Item records. The override resolves in hierarchical order (Subscription Item override Subscription override ZAB Preferences default Quantity-proration fallback) and stamps the resolved method on affected Subscription Items before generating offsets.
Revenue Processing Enhancements (ZB-2921)
After updating your ZoneBilling bundle, you have the option to turn on this enhancement. Once turned on, this enhancement is one-directional and cannot be undone. We strongly recommend testing thoroughly in your Sandbox account before updating your Production account. For more information, please view Understanding the ZoneBilling Revenue Billing Events Update.
- Enhances Revenue Billing Event Processing for account-wide Sales Order, Invoice and Credit Memo searches for improved performance across all accounts, with more noticeable impact for higher-volume accounts. Scheduled runs now discover only transactions modified since the last successful run, and Update Revenue Details now scopes Billing Event Processing to the submitted Subscriptions only.
- Revenue Transaction Links now store the transaction line and line unique key, so a link is identified by Revenue Detail, transaction line and applying transaction rather than by amount. This removes duplicate and ambiguous links in cases where multiple billed lines share an amount, and allows a single billed line to be represented across multiple Revenue Details.
- Billed amounts are now allocated proportionally across all Revenue Details attached to a transaction line, in whole cents, with leftover pennies distributed deterministically so the allocation always sums exactly to the billed line. This corrects sub-cent drift and, in multi-line invoices, changes rounding from a combined round-up to a per-line allocation.
- Billing Event Processing now calculates the complete expected set of Revenue Transaction Links for a transaction and writes only the difference. Records that already match are left untouched, duplicates are collapsed, and links whose transaction line, Revenue Detail or applying transaction is no longer valid are removed. Reprocessing the same transaction produces no additional records.
- Billing Event Processing now records its population and progress on ZAB Process and ZAB Subprocess records. If a run reaches a governance or time limit, the remaining work is written to a continuation subprocess and picked up automatically by ZAB Revenue Billing Event Subprocessing without anyone restarting it. Automatic Map/Reduce retries have been disabled to prevent duplicate records.
- For items configured to create revenue plans on ZAB Billing, the ARM plug-in now reads invoice links directly from Revenue Transaction Links, including accounting-book and exchange-rate context, instead of re-deriving them from a transaction search. Accounts that have not migrated continue to use the existing logic unchanged.
- Line-level billing event processing is enabled per account through a new Migrate Billing Event Processing action on ZAB Preferences, available only to NetSuite Administrators and only after a one-time script override has been added. Migration rebuilds Revenue Transaction Links across all qualifying historical transactions, may change recognized revenue on existing transactions, runs in the background, and cannot be undone. New installations with no existing Revenue Transaction Links are enabled automatically with no rebuild.
- Billing Event search overrides are no longer used once an account is migrated to line-level billing events. They remain stored and are not removed automatically.
Maintenance/Fixes (7)
Subscription cancel via API doesn't cascade to Subscription Items when payload is flat (missing "body" wrapper) (ZB-3325)
Subscription cancellations initiated through API requests now reliably trigger item-level
cancellations regardless of payload structure.
- Cascading Item Cancellations for Flat Payloads: Cancelling a Subscription via API using flat (non-body-wrapped) JSON payloads now correctly updates the Status, Cancellation Date, Original End Date, and End Date fields on all child Subscription Items.
- Payload Structure Parity: The record update handler now evaluates cancellation status across both flat payloads and nested body wrappers, preventing silent item-cancellation failures while returning a success: true response.
Subscription Items are not cancelling when cancelling a Subscription via CSV (ZB-3324)
Subscription cancellations processed via CSV import now reliably propagate cancellation dates
and updated end dates to all underlying Subscription Items.
- Synchronized Subscription Item Cancellation: Cancelling a Subscription via CSV import now correctly updates the End Date and Original End Date fields across all associated Subscription Items alongside the cancellation status and date.
ZAB Send Email Workflow Action does not include recipient from Send BCC (Email) (ZB-3263)
The ZAB Send Email workflow action now correctly parses and honors email addresses provided in the Send BCC (Email) parameter during automated email execution.
- Complete BCC Delivery & Logging: Populating the Send BCC (Email) parameter in a workflow action now reliably adds the specified recipient to outgoing emails as a BCC recipient and captures delivery details on the generated Email Message record.
Rating Issue: Unexpected QTY change with using Number Preference ID: 1 (1.000.000,00) (ZB-3208)
Usage rating processing now correctly parses fractional usage quantities when using the 1.000.000,00 number format preference.
- Accurate Usage Quantity Parsing: Rating usage data containing multi-decimal quantities (such as 0,001) now preserves exact values under the 1.000.000,00 (ID: 1) User Preference for Number Format, preventing unintended rounding or value conversions during charge generation.
- Consistent Usage Calculations: Small fractional usage records retain their exact quantities across rating execution, ensuring rated charges accurately match the raw input data.
- Multi-Decimal Compatibility: Decimal quantities with varied precision levels—such as three-decimal inputs—process consistently across all number format preferences without impacting standard rating logic.
Governance Optimization for Update Revenue Arrangements Invoice Linking (ZB-3200)
Line-item lookup performance during Update Revenue Arrangements (URA) execution has
been optimized, preventing governance limit crashes (Script Execution Instruction Count Exceeded) when processing revenue details linked to high-volume Sales Orders.
- Targeted Charge Line Lookups: The invoice linking engine now queries only the specific charge lines associated with the target revenue detail rather than retrieving all billed lines across related Sales Orders, significantly reducing script instruction counts on large transactions.
ZAB Renewal Item - Number Format Issue (1.000.000,00) (ZB-3184)
Renewal Item generation now correctly interprets high-precision discount values when using the
1.000.000,00 number format preference.
- Accurate Discount Inheritance: Creating Renewal Items from Subscription Items that contain discount values with three or more decimal places now preserves exact numeric values across all user preferences.
Create Transactions Automation Error: SSS_USAGE_LIMIT_EXCEEDED (ZB-3159)
Create Transaction Automations now efficiently handle subscriptions with large quantities of bill dates when an Override Date property is applied.
- Optimized Charge Lookups: Internal search executions during getSubscriptionCharges have been streamlined to significantly reduce script usage. Subscriptions containing dozens or hundreds of unique bill dates will no longer exhaust NetSuite governance limits (SSS_USAGE_LIMIT_EXCEEDED) during scheduled runs.
- Eliminated Silent Failures: Multi-subscription processing runs no longer complete without action or silently drop work. High-volume charge batches consistently create the required transactions and link values back to their source charges.