Release Notes - v3.2.1-rc1
18 May 2026 (719732a)
? Bundle Tickets (New Feature)
Create and sell ticket bundles (e.g. family packages)
? Memberships & Patronages
Patron-specific changes:
? ? Memberships & Patronages - Stripe
? Digital Wallet & Mobile Passes
? Payments & Checkout
? Booking & Order Management
? Point of Sale (POS)
? Promotions, Vouchers & Donations
✉️ Emails & Notifications
? Reservation Portal & Accounts
⚙️ Admin Portal & Configuration
? Reporting & Webhooks
? Bug Fixes (General)
?️ Infrastructure & Performance
? Clients in Production Tenant-Specific Notes
HRP: Patron workflow changes (terminology, DD methods, refund methods, acknowledgements, email personalisation), membership email updates, new ticket types for upgrades, ECS autoscaling.
Bamburgh Castle: GTM enabled, navigation visibility fix.
TRB/Roman Baths: External payment methods enabled at POS, ancillary item text box fix.
Design Museum: Updated Gift Aid wording, charity number, T&Cs link, email content (DD/Gift Aid status), membership text, info@expian.io removed from PDFs.
? Clients in Pre-Production only Tenant-Specific Notes
Blenheim Palace: Bundle tickets, digital wallet individual downloads (download-all hidden), donations toggle hidden, pass upgrades on B2C, extended Gift Aid modal, email template updates, brand styling, product swap recommendations.
Release Notes - v3.2.0-rc2
Date: 19 May 2026 | Issues in release: 14
? Memberships & Entitlements
? Booking & Order Management
? Customer Portal & Accounts
⚙️ Admin Portal & Configuration (Permissions)
? B2C Booking Flow
? ? Payments & Cart
Availability & Calendar
Release Notes - v3.2.0-rc3
Date: 19 May 2026 | Issues in release: 1
Product Loading Performance Improvement
Release Notes - v3.2.0-rc4
Date: 20 May 2026 | Issues in release: 4
Here are the release notes for v3.2.0-rc4, grouped by functional area:
? B2C Booking Flow
? Booking & Order Management
? Reporting
? Ancillary Items
Release Notes - v3.2.0-rc5
Date: 21 May 2026 | Issues in release: 1
Here are the release notes for v3.2.0-rc5, grouped by functional area:
Release Notes - v3.2.0-rc6
Date: 22 May 2026 | Issues in release: 2
Here are the release notes for v3.2.0-rc6, grouped by functional area:
? B2C Booking Flow
? Memberships & Patronages
Release Notes - v3.2.0-rc7
Date: 26 May 2026 | Issues in release: 3
Here are the release notes for v3.2.0-rc7, grouped by functional area:
? Memberships & Entitlements
? Reservation Portal & Accounts
Release Notes - v3.2.0-rc8
Date: 27 May 2026 | Issues in release: 4
Here are the release notes for v3.2.0-rc8, grouped by functional area:
? Clients in Production Tenant-Specific Notes
Lapland: Golden experience upgrade (LUK2-835)
P&O: Autoscaling and right-sizing for po-prod (DEVOPS-475)
Release Notes - v3.2.0-rc9
Date: 28 May 2026 | Issues in release: 6
Here are the release notes for v3.2.0-rc9, grouped by functional area:
? Bug Fixes
? Clients in Production Tenant-Specific Notes
Historic Royal Palaces: CORE-8733 Remove "Ancillary" from B2C main menu: The "Ancillary" option is being removed from the B2C location menu across all locations. Standalone ancillary items (e.g. guidebooks) are not sold through the B2C ticketing journey and should only be available via the e-commerce shop. Note: this item is currently blocked.
CORE-8672 No QR codes on standard ticket PDFs: Fixed a bug where downloaded/resulting PDF tickets did not contain QR codes, even though QR codes were correctly generated in the email confirmation.
CORE-8734 B2C: Inconsistent "Skip" and "Next Step" button behaviour on add-ons: Addressed confusing CTA behaviour on the add-ons step of the B2C journey. Previously both "Skip" and "Next Step" performed the same action when no add-on was selected. "Next Step" is now only active when an add-on is selected; otherwise only "Skip" is available.
CORE-8749 BOS promo code shows incorrect financials on membership orders: Fixed incorrect financial calculations when redeeming BOS gift voucher promo codes on Individual Membership purchases (both RES and POS). The discount was incorrectly displayed as double the order subtotal (e.g. £150 discount on a £75 order), and the eFinancials report reflected the wrong values.
P&O: CORE-8343 Pagination missing in po-update reports: Resolved an issue where pagination controls disappeared after reaching the last page of reports in the po-update environment, preventing users from navigating back to previous pages. Pagination now remains visible on all pages.
Release Notes - v3.2.0-rc10
Date: 29 May 2026 | Issues in release: 6
Here are the release notes for v3.2.0-rc10, grouped by functional area:
Promos Rework - Aligning Promos across Expian Version 3
What's changed
- Improved promotion targeting – Promotions now use a clearer, more consistent model for specifying which ticket types and capacity options they apply to. This reduces the chance of promos being misconfigured or silently misapplied.
- Separate capacity and ticket-type conditions – Capacity-based rules (e.g. remaining availability) are now managed independently from ticket-type targeting. This means changes to capacity settings won't accidentally affect which ticket types a promo applies to, and vice versa.
- Updated admin UI for promotions – The promotions configuration interface has been unified under a new controller. Entitlements configuration has also been updated for consistency.
- Stricter validation on promo setup – Invalid or ambiguous promotion configurations will now be rejected with a clear error (HTTP 422) rather than being silently accepted. This helps catch setup issues before they reach customers.
- Legacy data migrated automatically – All existing promotions have been migrated to the new format. Existing promos should continue to behave as before – legacy compatibility is maintained during this stage.
The following issues are resolved as a result of the Promos rework
- POS. Unable to apply promo against new product added to promo (CORE-8752)
- HRP UAT (V3) - Reservations - Membership Voucher issue (CORE-8352)
? Bug Fixes
Membership (B2C)
Reservations
Release Notes - v3.2.0-rc11
Date: 31 May 2026 | Issues in release: 7
Here are the release notes for v3.2.0-rc11, grouped by functional area:
Memberships & Renewals
Membership Administration
Booking & Checkout
? Clients in Production Tenant-Specific Notes
Historic Royal Palaces: V3-125 Duplicate rows removed from EFinancials sales report: Resolved an issue where some membership and entitlement orders paid by invoice appeared as duplicate line items on the sales side of the EFinancials report, causing incorrect totals. Each order now appears as a single row with the correct amount.
Release Notes - v3.2.0-rc12
Date: 01 June 2026 | Issues in release: 6
Here are the release notes for v3.2.0-rc12, grouped by functional area:
? Memberships & Purchasing
- Fixed: Membership purchase blocked in Reservations portal – Resolved an issue where purchasing a new membership displayed a "User already has an account" error, preventing checkout from completing. New customer accounts are now created correctly and confirmation emails are sent as expected. (V3-143)
? Payments
- Fixed: Incorrect redirect after DNA payment – After completing a payment via DNA Payments, users were incorrectly redirected to the payment provider's test page instead of the order confirmation screen. Users are now returned to the correct confirmation page. (V3-122)
? Reporting
- Fixed: Report execution errors – Resolved server errors that occurred when running certain reports, including issues with webhook-related report queries. (V3-135)
- Improved: "Last Updated" field clarity – The "Last Updated" label on reports has been clarified to accurately reflect that it shows the last execution time of the report, not the last time the report configuration was changed. (CORE-8662)
? Documentation
- Updated shared schema documentation – Provided updated data model documentation covering all changes between v2.9.3 and v3.2.0, including a summary of new tables and columns. All schema changes are additive with no breaking changes. (V3-136)
- Note that https://dbdocs.io/zhlyzv/shared now hosts v3.2.0, 2.9.3 is available in a PDF, and we have DBML files for both versions along with a diff PDF.
? Platform Stability
- Improved API test suite reliability – Stabilised the automated integration test suite by resolving environment-related failures and updating tests to reflect recent intentional changes to promo stacking, payment handling, and import validation. No product regressions were identified. (V3-142)
? Clients in Production Tenant-Specific Notes
? Bug Fix: Membership scan locations now display correctly in CRM (CORE-8758 / DEVOPS-504) - deployed independently of the main release on the 1st June at 09:17
When membership QR codes were scanned, the CRM was incorrectly displaying the location as the top-level organisation name (e.g. "Historic Royal Palaces") rather than the specific venue. Additionally, the scan point was showing a system-generated identifier instead of the friendly location name (e.g. "Rose Garden").
What was happening:
- Scan location showed the parent organisation instead of the specific palace/venue
- Scan point displayed a technical reference ID instead of the readable location name
What's fixed:
- Scan locations now correctly show the specific venue where the scan took place
- Scan points display the human-readable location name as expected
Component: CRM (Dynamics 365 Integration)
Release Notes - v3.2.0-rc13
Date: 02 June 2026 | Issues in release: 7
Here are the release notes for v3.2.0-rc13, grouped by functional area:
Here are the summary release notes for v3.2.0-rc13 (7 issues), grouped by functional area:
? Administration
?️ Reservations & Memberships
?️ Promotions
? Reporting & Data Infrastructure
? Configuration & Locales
Release Notes - v3.2.0-rc14
Date: 03 June 2026 | Issues in release: 3
Here are the release notes for v3.2.0-rc14, grouped by functional area:
Also fixed by the above issues: V3-141, CORE-8788.
Release Notes - v3.2.0-rc15 (second release today)
Date: 03 June 2026 | Issues in release: 4
Here are the release notes for v3.2.0-rc15, grouped by functional area:
Reservations Portal - Refunds and Amendments
Reservations Portal - Member Details
Tenant Configuration - HRP
Email and PDF - HRP and Blenheim Palace
Release Notes - v3.2.0-rc16
Date: 04 June 2026 | Issues in release: 7
Here are the release notes for v3.2.0-rc16, grouped by functional area:
Release Notes - v3.2.0-rc17
Date: 05 June 2026 | Issues in release: 8
Here are the release notes for v3.2.0-rc17:
Release Notes - v3.2.0-rc18
Date: 08 June 2026 | Issues in release: 1
Here are the release notes for v3.2.0-rc18:
? Clients in Pre-Production only Tenant-Specific Notes
Blenheim Palace - Disruption Communication Email: Branding Update
The email sent to guests when a disruption communication is triggered from the Reservations page has been updated to reflect Blenheim Palace's standard branding.
Previously, this email rendered with inconsistent styling - buttons, fonts, colours and footer layout did not match the look and feel of other Blenheim Palace emails such as booking confirmations.
This has now been resolved. The disruption communication email shares the same branded template framework as the rest of the Blenheim Palace email suite, ensuring a consistent and professional experience for guests receiving this communication.
Affects Blenheim Palace only.
Release Notes - v3.2.0-rc19
Date: 09 June 2026 | Issues in release:
Here are the release notes for v3.2.0-rc19:
Reporting & Financial Reconciliation
Booking Flow (B2C)
User & Account Management
Reservations Portal
Release Notes - v3.2.0-rc20
Date: 11 June 2026 | Issues in release:
Here are the release notes for v3.2.0-rc20:
POS and Scanning
V3-66 — Booking-options pricing now correctly returned per ticket type at zero quantity, restoring POS price previews and donation flows.
This also fixes V3-170, and CORE-8821, MPOS: GA modal not appearing.
Trade Partner Portal
V3-155 — Checkout no longer demands the trade user's own contact details; it now correctly captures the customer's details, with a shipping/billing address bug also fixed.
Email and PDF
CORE-8827 — Irrelevant boarding copy removed from beneath the QR code on HRP PDF tickets.
Reservations Portal
CORE-8804 — Membership Manager role extended with customer-detail update permissions, completing the account-management rights started in rc19.
? Clients in Production Tenant-Specific Notes
? Bug Fix: HRP UAT (V3) All membership scanning records have “Historic Royal Palaces” as the location (V3-179 / DEVOPS-548) - deployed independently of the main release on the 11th June at 08:59
- Fixed an issue that could cause membership scan records to show the wrong location.
- Scan records will now be matched to the correct site more reliably during sync.
- This improves the accuracy of location data in membership scanning records.
Component: CRM (Dynamics 365 Integration)
Release Notes - v3.2.0-rc21
Date: 11 June 2026 | Issues in release: 3
Here are the release notes for v3.2.0-rc21:
Release Notes - v3.2.0-rc22
Date: 11 June 2026 | Issues in release: 3
Here are the release notes for v3.2.0-rc22:
Promotions — Add-on discount fix
Jira: V3-117
Discounts applied to add-on items via promotions and entitlements were not being calculated correctly. This has been resolved:
- Add-on promotion configuration — When setting up a promotion targeting add-on options in the Admin portal, the add-on option list is now correctly filtered to the selected market. Previously, add-on options from all markets were displayed regardless of availability, which could lead to misconfigured promotions.
- Entitlement add-on discounts — Discounts on add-ons granted through entitlements (e.g. membership benefits) were not being applied at checkout. This has been fixed and entitlement-based add-on discounts now apply as expected.
Trade Partner Portal & Reservations Portal — Checkout improvements
Jira: V3-155
Fixed an issue where trade partner users and reservations staff placing orders on behalf of a trade partner were incorrectly prompted to manually enter contact details (name, address, email, billing address) during checkout.
- Trade Partner Portal — Contact details are now automatically populated from the trade partner user's profile, and the Customer Details step is skipped when all required information is already on file.
- Reservations Portal (on behalf of) — When placing an order on behalf of a trade partner, customer details are now correctly pre-filled from the impersonated user's profile, including company, address, and financial details. The checkout no longer shows stale or mismatched data.
Booking flow (B2C) — Add-ons step (no change)
Jira: CORE-8734
A previously released change to the add-ons step that disabled the "Next Step" button when no add-on was selected has been reverted. This change, while passing initial QA, caused unintended side effects for other booking flows — particularly those with mandatory add-on selections. The add-ons step returns to its previous behaviour: both "Skip" and "Next Step" remain active regardless of selection. This will be revisited holistically in a future release with broader product input.
Ancillary Items Not Displayed in Booking Portal
CORE-8755
CORE-8778
Membership Terms view now displays the correct status
Search endpoint case sensitivity
CORE-8750
HRP UAT (V3) - WEB Membership: Gift Aid carries over incorrectly to a life membership
CORE-8762
Google Tag Manager Event Fix for HRP Booking Flow
Resolved an issue in the Reservations portal (HRP-UAT) where attempting to add a membership to the cart resulted in a blank screen with a persistent loader. Memberships can now be added to the cart successfully.
HRP UAT (V3) - Membership Terms view column formatting
CORE-8410
V3-67 resolves CORE-8747
Basket timeout on order confirmation
HRP UAT (V3) - WEB Membership - additional adult not ghosted when doing mid-membership upgrade
Improved checkout performance for membership purchases
CORE-8738
CORE-8756
CORE-8725
CORE-8440
Patron Email Copy Changes
HRP UAT (V3) - WEB Membership: 'remove adult' button is appearing for membership amendments
CORE-8742
V3-130
CORE-8753
CORE-8739
CORE-8456
Upgrade/downgrade indicator corrected on Membership Terms view
Auto-renewal processing reliability improvements
Additional member details prompt now appears when scheduling changes at renewal
Manual renewal now correctly creates a new membership term
Reservations Portal – Membership DOB
Sidebar icons for Customer Accounts, Sales Shifts and Data intermittently vanish
V3-123 implements CORE-8394 & CORE-8376
CORE-8745
CORE-8741
CORE-8778 / V3-141
CORE-8767
- Fixed issues when amending memberships so member details are handled more reliably.
Fixed a regression of CORE-6830 where ancillary items were not shown in the Booking Portal menu, making them unavailable for purchase.
Paid bookings no longer show as "abandoned" — Resolved an issue where confirmed paid bookings were incorrectly displayed as abandoned, triggering unnecessary daily refunds.
Summary
DEVOPS-452
CORE-7751
CORE-7738
HRP UAT (V3) Error message when cancelling an order
Key
CORE-7904
V3-64
CORE-8464
CORE-8298
Add-ons preserved during booking amendments — Fixed an issue where add-on items were lost when amending a booking's time slot.
CORE-8156
Ref
Navigation visibility fixed — Header buttons now display correctly with white text and outlines (previously navy-on-navy and invisible). To verify: Visit the Bamburgh booking URL and check header button visibility.
CORE-7570
CORE-8786
CORE-7700
CORE-7414
Detail
CORE-7078
Fixed SSO activation email displaying "undefined" at the top of the page
EXPIAN-25
CORE-6135
Issue
CORE-6810, 6811
Resolved: Date of birth not saving on member record updates; improved error messaging
CORE-7914
CORE-7892
Patron terminology across portals — Comprehensive rename from "Patronage" → "Patron" in headers, menus, and order detail pages. Fixed a bug where "add child" could appear for patron products with no child configuration.
Product-specific guest checkout restrictions — Guest checkout can now be restricted at the product level, in addition to tenant level.
Issue
Ref
CORE-6618
Calendar availability threshold colours incorrect: Fixes incorrect availability colour coding on the B2C calendar. Days were showing as red/yellow despite high remaining availability. Correct thresholds: Green = 80–100%, Amber = 40–79.999%, Red = 0.1–39.999%. (carry-over from rc1)
Description
BP: Vouchers now include donation amount in base price
Ref
Ref
CORE-8275
Implemented AWS file upload/storage and malicious content scanning.
CORE-7950
CORE-7390
Ref
CORE-6702
Ref
Trade Portal amendment details fixed — Lead customer details now display correctly when amending orders in the Trade Portal.
CORE-6487
Cancelling upcoming renewal term fixed — The "Cancel" action for upcoming/pending terms now correctly routes to the right page and uses the correct order reference.
"Not Due To Renew" banner corrected — Now shows "Patronage Not Due To Automatically Renew" with the correct contact email for patrons.
Summary
Missing Year Validation in DOB Field: Adds validation to the year field in the Date of Birth input on the Booking Info form. Previously the year accepted any value (e.g. "0001") without error. (carry-over from rc1)
POS editor permissions for suspend — POS editors can now update ticket details (including suspension) through the POS interface.
CORE-6654
Trade partners hidden from admin user list — Trade partner user accounts are now filtered out of the Admin Portal "All Users" list.
Removed the redundant "Filter product" box from the new-order Available Products step, which only ever displayed the product already selected.
CORE-6935
DEVOPS-444
CORE-8808
CORE-8266
CORE-7003
CORE-6441
Date of birth now required when adding or amending members
Custom fields on products fixed — Resolved a bug preventing custom fields from being added to products in the Admin Portal.
CORE-5706
CORE-7398
POS admission ticket purchase fixed — Resolved an issue preventing the purchase of admission tickets through POS.
Button text overflow fixed — The "Restart with errored bookings" button text no longer overflows its container.
V3-122 / CORE-8726
Cancellation flow streamlined — Customer details and payment steps are now skipped for order cancellations where no refund is involved, making the process faster.
Detail
Detail
CORE-7833
Gift membership upgrade pricing fixed — Upgrading a gift membership to a higher tier now calculates the correct price rather than charging full price.
Family & Patron booking regression fixed — Resolved an issue preventing certain membership entitlement bookings (e.g. Family 2 memberships, Patron bookings) from completing successfully.
Photo ID upload feature — New capability to configure a Photo ID custom field, display an upload form, associate photos with customers, and store them securely in AWS S3.
CORE-6932
CORE-7094
Multiple vouchers with separate codes — Orders containing multiple vouchers now generate separate unique codes per item.
Webhook management UI — Admin Portal now has a dedicated interface for managing webhooks: view, create, update, enable/disable, and delete webhook configurations.
CORE-7896
CORE-7364
Patronage renewal confirmation copy corrected in Reservations portal
CORE-7898
Stripe DD cancellation refund fixed — Cancelling a membership paid by Stripe Direct Debit now correctly processes the refund back through Stripe. To test: Buy a membership via DD, cancel via Reservations using Stripe refund.
CORE-8254
Fixed 5 materialized views (services, capacity types, capacity plans) that were never refreshed on publish, causing stale report data and bulk booking issues
CORE-8575
Family membership child booking limit fixed — Fixed a validation error that incorrectly rejected valid bookings when purchasing family memberships with multiple children.
POS notes attributed to staff — Booking notes created via POS are now attributed to the staff member's name when no email is on file (previously saved with an empty user field).
Patron DD payment methods — Staff can now select "Patrons DD Annual" or "Patrons DD Instalment" as external payment methods in Reservations.
Wallet re-download prompt in amendment emails — When a booking is amended, the confirmation email now includes a notice that the pass has been updated with a button to download the new version.
When scheduling an upgrade or downgrade at renewal (e.g. from a Joint to a Family membership), the system now correctly prompts for any required additional member details, such as listing children on family memberships.
Migrated order customer details update resolved
Detail
Default pass background colour — Blenheim Palace passes default to colour #61B0BC when no product-specific colour is set.
Migrated HRP tenant config overrides (order confirmation, entitlements) into the locales system for easier maintenance
Ref
CORE-8340
CORE-6790
Page totals removed from reports — Removed per-page totals from report outputs for cleaner data presentation.
CORE-7778
CORE-7961
CORE-6138
CORE-7006
Edit past and redeemed orders — The "order:update:redeemed" permission has been added to the Membership Manager role, allowing them to edit past orders and process ticket upgrades.
Incremental transactional dumps — Daily incremental exports of transactional data tables are now available.
CORE-6946
CORE-8348
DEVOPS-441
Sub-location product restrictions — Operators can now restrict which POS sub-locations can sell specific products (Admin Portal > Product > Availability & Channels). Products without restrictions remain available everywhere.
Detail
Users starting W–Z now visible — Fixed the user administration pagination issue that prevented users at the end of the alphabet from being visible.
DEVOPS-376
Customer account management in Reservations — Staff can now search for customers, view full account details (contact, address, orders, memberships, vouchers), reset passwords, enable/disable accounts, and reassign orders to the correct customer — all from a new "Customer Accounts" area. Note: Editing customer details on an order no longer updates the account profile; account-level edits should be made in the Customer Accounts area.
Apple Wallet support added — Ticket passes can now be added to Apple Wallet (complementing existing Google Wallet). Includes QR code flow for desktop-to-mobile transfer, multi-ticket support, and automatic voiding when orders are cancelled.
CORE-7829
CORE-8091
Detail
Summary
CORE-7361
Cancelling a bundle automatically cancels all child tickets within it. Restoring a bundle also restores all related child tickets.
Entitlement custom fields — Custom fields can now be configured and displayed on entitlements.
Ref
Detail
Detail
Ref
Same-day gift membership upgrade to life — Fixed an issue where upgrading a gift membership to a lifetime tier on the same day calculated an incorrect price.
Ref
Added API validation to prevent duplicate promotion IDs from being created
CORE-7635
Manage Orders display fixed — The customer account "Manage Orders" section now correctly shows existing and past orders when pass amendments are enabled.
Magic link order viewing fixed — Customers can now reliably view their order via the magic link in emails without being incorrectly redirected back to the request page.
CORE-6479
Ref
HRP UAT (V3) - Res Incorrect duplicate "Verify Account" Email
Device limits for pass downloads — Administrators can restrict Apple and Google Wallet pass downloads to a single device per ticket type.
EFinance data source relations — Additional data relationships have been added to the EFinance data source, enabling richer financial reporting integration.
Pass dates now timezone-aware — Wallet passes display dates in the event's timezone, preventing discrepancies based on the user's local device timezone.
Removed incorrect DD savings text for Patrons — The "Save £10.00 by annual Direct Debit" message has been removed from patronage renewals (only applies to Memberships).
Membership text personalised — Copy now varies based on whether the customer is logged in as a patron, member, or general user.
Updated patron terminology and renewal messaging — Patron-specific wording for expiration alerts, renewal confirmations, and general copy throughout the system.
CORE-8661
CORE-7394
Ref
Media identifier on renewed imported DD memberships — The media_identifier field now correctly appears in the current term for renewed, imported Direct Debit memberships.
Key
CORE-6794
Custom checkout fields fixed — Resolved an issue where all custom fields were incorrectly treated as mandatory, blocking customers from proceeding.
Download passes from Order Details page — Wallet passes can now be downloaded directly from the order details page in the B2C portal without navigating to a separate pass page.
Reservations - Customer accounts
CORE-7581
CORE-8013
Membership/Patron hardcoded text not displaying on B2C: When a Member or Patron is logged in and selects a member/patron event, the expected informational text was not appearing. Members and Patrons should see specific booking guidance instead of the custom free-text from Admin.
Fixed an issue where vouchers could not be added to the cart when booking on behalf of another person.
Name validation added — First and last name fields now have front-end validation to prevent submission of empty or invalid names.
Description
CORE-6890
CORE-7740
Enabled API Gateway access logs for Admin API (improved observability).
Detail
Owned-product promotions — Automatic promotions can now be configured to apply only when the customer already owns specific products (configured in the promotion admin form).
Detail
Summary
CORE-7020
Patron labels updated — "Patronage" labels changed to "Patron" in Order Details, Entitlement cards, and Booking Row views.
CORE-7945
CORE-7079
HRP branded membership invitation and account setup email restored
CORE-7410
Whole-cart promotion configuration simplified and validated
Payment link 404 fixed — Fixed an error where clicking a payment link returned a 404 page instead of the payment form.
Per-ticket names on passes — Digital wallet passes now display names from ticket associations, meaning each ticket in an order can show a different name.
Detail
EXPIAN-24
Patronage Cards – label change: Patron cards now correctly display "Patron ID" instead of "Membership ID". Membership cards continue to show "Membership ID". Affects cards printed from both Reservations and POS.
EXPIAN-291
Corrected BOS gift-voucher reporting codes and resolved blank entitlement rows on the eFinancials report.
Patron acknowledgement required at Reservations checkout
CORE-8804
Ref
Ref
CORE-7656
Customers can purchase bundles as a single item. Cart summaries show a breakdown of what's included (e.g. "Includes 2x Adult + 1x Child"). Capacity is correctly allocated across constituent ticket types.
CORE-8208
CORE-8311
Custom address field labels — Tenants can set a custom label for the shipping address field (e.g. "Home address") which appears across checkout forms.
Detail
Blenheim Palace branding — Theme styling added for the Blenheim Palace tenant.
CORE-4996
V3-138
CORE-7585
Voucher renewal UI fixed — Resolved display issues when renewing a membership that was originally purchased with a voucher.
CORE-8439
V3-151
CORE-7741
CORE-7982
Ref
Membership payment method display fixed — Both Direct Debit and Card payment forms now display correctly during membership checkout. To test: Purchase a membership using each payment method and verify the form renders properly.
Fixed a regression where ancillary items were not shown in the Booking portal menu in the HRP-Update environment, preventing users from purchasing them. Ancillary items are now correctly displayed and available for purchase within the booking flow. (Regression of CORE-6830)
CORE-8460
Billing address stored as account address — When a logged-in customer has no stored address, their billing address from checkout is now saved to their account.
Stripe Direct Debit sync for upgrades/downgrades — When you upgrade or downgrade a membership paid by Direct Debit, the Stripe subscription is now automatically updated to reflect the new price and billing period. To test: Purchase a membership via DD, then upgrade/downgrade and verify in the Stripe Dashboard.
CORE-8081
Incorrect promo amount fixed — Resolved an issue where the wrong discount amount was displayed when a promotion was applied.
Stripe payment refactor — Comprehensive improvements to Stripe card payments across memberships, upgrades, downgrades, partial refunds, and cancellations. To test: Run through cart payments, membership purchases (card & DD), partial refunds, upgrades, downgrades, and cancellations.
Day ticket and product availability displaying incorrectly at slot start resolved
Ref
CORE-6493
Membership: DOB not saving on migrated memberships blocking change of level at renewal
CORE-8251
CORE-8810
Detail
Ref
CORE-6778
CORE-8268
CORE-8754
CORE-8466
Stripe payment metadata fixed — Order IDs are now correctly included as "reference" metadata on Stripe payments and subscriptions. To test: Make a payment and verify the order ID appears in the Stripe Dashboard metadata.
CORE-8727
Detail
CORE-8661
Ref
Downgrade removed for patrons on Customer Portal — Patrons can no longer downgrade via self-service. A message directs them to contact the Patrons team.
Issue
Detail
Ref
Sales & Income / eFinance figures for a past reporting day no longer change retrospectively when an order is subsequently amended. Amendments are now recorded as new activity on the amendment date, preserving the original day's figures.
V3-142
CORE-8281
Extended Gift Aid modal for Blenheim — A new two-column Gift Aid modal with hero image, descriptive content, and styled buttons. "No Thanks" presents a second confirmation screen. Configurable per tenant.
CORE-7789
Description
Donations toggle behaviour improved — Changing the donation value in B2C now clears the previous selection, preventing confusion.
B2C membership text corrected — Updated membership-related copy on the B2C web experience for clarity and accuracy.
CORE-8305
Promos rework (Stage 1) — unified data model separating ticket type and capacity option conditions, with DB migration and Admin UI cleanup
CORE-8794
CORE-6965
CORE-8437
Ref
Customer name update fixed — Updating a customer's name in their account now reflects immediately when searching (removed stale caching).
CORE-7717–7722
PO-1179
V3-117
Summary
CORE-6789
Child date of birth issue fixed — Resolved locale-dependent date parsing issues affecting DOB validation and age checks.
CORE-8173
Triggered password-reset emails now send the correct 7-day alphanumeric code instead of the 1-hour numeric code they had regressed to (from approximately 25 May).
Individual ticket download — Wallet passes can now be downloaded and shared individually per ticket, rather than only as a full order bundle.
Ref
Resolved: Disruption communication emails displaying error text instead of content
Enabled ECS autoscaling rules for HRP Production for better handling of traffic spikes.
Disable/Enable Customer Accounts – password reset flow issues: Addresses multiple issues in the disable/enable lifecycle — wrong email template sent on re-enable, blank customer names in emails, and the ticketing email address incorrectly displayed to end customers.
CORE-7807
CORE-6922
Removed webhook tables from Reservations Reporting — The webhook and webhook_revision tables have been removed from Reservations reporting data sources (these are admin-only concerns).
Patronage frequency filter — A "Direct Debit Frequency" column and filter have been added to the patronage search table in Reservations, making it easier to find patronages by payment frequency.
Configured CAPTCHA for WAF rules on B2C Cloudfront distributions.
Promo admin consistency fixed — The "Linked Products" selection has been moved to its dedicated tab, removing the incorrect dropdown from Promo Settings.
Gift voucher email updated — Removed the hardcoded "MEMBER26" discount code promotion from HRP gift voucher confirmation emails.
Ticket-based recommendations & product swap — Recommendations can now be triggered by specific ticket types (not just products). A new "Offer to swap product?" option replaces the first cart item with the recommendation.
CORE-8348
Membership refund after POS issue fixed — Cancellation refunds on the same order revision as the original payment are no longer incorrectly blocked.
CORE-8811
Ref
Detail
Voucher discount preserved on amendment — Orders originally discounted with a voucher now retain the correct pricing when amended, rather than being charged full price.
"Your Time Selection Expired" error when amending orders: Fixes an issue where amending an order after the original slot has expired — specifically when using "Add Another Item To Order" — incorrectly triggers a time expiry error, forcing the agent to restart.
CORE-7599
Detail
Detail
Patronage email personalisation — Confirmation emails and PDFs now include personalised welcome messaging, revised cancellation copy, and improved donation display based on patron type (Honorary, HRP Inc, Renewals).
CORE-7005
Ref
Ticket validity edit confirmation — Changing a ticket's validity/expiry date now requires clicking "Save Changes" rather than auto-saving. Invalid tickets cannot have dates amended.
CORE-8047
Mobile swap ticket modal fixed — The swap tickets modal now correctly disappears when changing from an admission to an entitlement on mobile.
"Join Now" CTA restored — The "Member - Join Now" button has been restored (was incorrectly changed to "Patron") with the correct URL.
Increased database backup retention period for Production environments.
CORE-7417
Improved the formatting of Membership Terms tables in HRP UAT (V3) to make column layouts display more cleanly and consistently.
Detail
CORE-6657
POS refund fixed — Stripe card/contactless refunds from POS now process correctly. To test: Make a Stripe payment at POS, then refund via the Stripe refund method.
Improved acknowledgement UX — Users must now either enter an acknowledgement name or tick "remain anonymous". The section has moved above marketing preferences for better visibility.
Donations included in base price option — Product admin now offers "Donations on top of base price" or "Donations included in base price" when donations are enabled.
Calendar threshold percentage corrected — The capacity threshold percentage displayed on the availability calendar now shows the correct value.
Correct Patron T&Cs link — The Terms and Conditions link in Reservations now points to the patron-specific page.
Group order amendments fixed — Resolved an error preventing group orders from being amended via both POS and Reservations.
Location descriptions for all users — Non-member events on the booking page now display the custom location description (from Admin Portal) to all user types.
CORE-6663
CORE-6780
Patron renewals on Customer Portal — Patrons whose product isn't available on the web channel now see a helpful "contact support" message with email details, rather than being shown irrelevant renewal options.
CORE-6980
CORE-7627
Detail
CORE-8244
Upgrade thank you page corrected — After upgrading a membership, both the confirmation description and order summary now display "Membership Upgraded" instead of confusing text. To test: Purchase a membership via DD, downgrade, then upgrade and verify the confirmation shows correctly.
Ref
Following the rc11 fix to resolve date of birth saving on migrated memberships, a further edge case was identified affecting new membership leads.
CORE-4570
Cancelling a booking with a promo code applied no longer double-counts the promo discount on the eFinancials report. Note: customers were always refunded the correct amount — this was a reporting-only issue.
SSO activation email formatting corrected
CORE-6805
Addressed a display issue in the Reports UI where column spacing was incorrect, causing header and data alignment to be malformed and unreadable.
CORE-6619
Media identifier in terms array — Fixed an issue where the media_identifier field was not always present in the entitlement terms data.
CORE-7604
Optional joint members/patrons in checkout — Admin can now configure whether adults and/or children as additional membership holders are optional or mandatory during checkout.
CORE-7023
"Cannot add to cart" fix — Resolved an issue preventing items from being added to cart in certain environments.
Donation confirmation email — HRP orders with location code 'DON' now receive a dedicated donation email with custom "Thank you for donating" messaging and charity impact content.
Ref
Summary
CORE-8660
V3-162
CORE-7626
Membership status display fixed — Membership statuses on the B2C Account > Memberships page now display correctly.
Issue
Issue
CORE-7400
CORE-6477
Summary
CORE-8458
Issue
CORE-8313
CORE-6112, 6273
CORE-8462
CORE-8796
CORE-8309
CORE-7737
CORE-7712
CORE-7075
"PAY" button renamed to "NEXT" — The button on the ticket selection screen now reads "NEXT" since it advances to the details screen (Gift Aid, options) rather than completing payment.
CORE-8443
Detail
Pass validity auto-updates — When validity dates are modified within the system, the digital wallet pass is automatically updated to reflect the new dates.
Each bundle purchase generates individually trackable child tickets linked to the parent bundle. Child tickets include references back to their parent for traceability.
CORE-6978
Patron/Member navigation logic improved — Nav links always show "Become a Member" and "Become a Patron". Notice text now varies based on the user's entitlement type and the page they're viewing.
CORE-6698
Gift Aid wording accuracy — Gift Aid declaration text has been updated and verified for spelling and consistency across all entitlement products.
Custom fields with multiple bookings fixed — Customer fields (name, email) are now validated per booking rather than per order, fixing issues when a single checkout contains multiple different products.
Design Museum charity number updated — Corrected company number in email footer.
Confirmation email on add-on amendments — Adding an add-on to an existing order now correctly triggers a confirmation email.
Key
Membership email copy updated — Clarified QR code availability timing for manually renewed memberships in both email and PDF.
Address validation enhanced — House numbers and county/state/province are now required for all countries during checkout, preventing incomplete addresses.
CORE-8236
CORE-6139
CORE-6140
Detail
Detail
CORE-6939
- Fixed a bug where Gift Aid could incorrectly carry over to a Life Membership.
CORE-7556
EXPIAN-43
Ref
Ref
CORE-8780
Detail
Detail
Removed expensive VPC endpoints to reduce infrastructure costs.
Upcoming Renewal Alert copy updated — Patron-specific wording referencing payment method changes and Gift Aid declarations.
Patron renewal confirmation updated — New title and revised copy on the renewal confirmation page.
CORE-6788
Detail
CORE-7617
CORE-6272
DEVOPS-377
WEB - Gift Vouchers should not be redeemed against Direct Debit membership products
CORE-8317
Ref
CORE-6662
CORE-8232
"Already hold a patronage" guidance updated — The notice now includes correct links for purchasing gift vouchers and upgrading via email.
Issue
CORE-8289
Ref
PO-1762
Same-day ticket availability restored for late-evening bookings
CORE-8665
CORE-7086
Ref
Admins can now group multiple ticket types into a single "bundle" (e.g. 2x Adult + 1x Child as a "Family Ticket"). Bundles are configured in the Admin Portal under ticket types by selecting the "Bundle" grouping mode. Bundle contents and quantities are exposed in APIs. Note: A database migration is required before deployment.
"Store Address" modal removed — The pop-up asking whether to store the address has been removed from checkout flows.
New OnAttendanceRecorded webhook — A new webhook event fires when attendance is recorded, enabling real-time integrations with attendance data.
Gift Aid not carried over for £0 renewals — Renewals paid entirely by gift voucher (£0 total) no longer incorrectly carry over Gift Aid from the previous term.
Investigating an intermittent issue where left-hand toolbar icons disappear during a session and only return after logging out and back in. Previously reported in V3-124 and now independently confirmed by HRP users.
Fixed an issue where the orders search endpoint was case-sensitive, causing searches with lowercase reference codes to return empty results.
Detail
Ref
V3-171
CORE-7415
CORE-8725
Vouchers/promotions preserved on upgrade/downgrade — Discounts applied to an upcoming term are now correctly maintained when transitioning between membership tiers.
Ref
Expire digital wallet passes — Admins can now manually expire an issued digital wallet pass via the Reservations portal so it no longer appears as active.
Beneficiary details preserved during checkout — Logging in or creating an account mid-checkout no longer resets form data (name, email, address, custom fields).
All users now visible in Admin — The User Administration page previously cut off at 1000 users (hiding names W–Z). Now uses server-side pagination with search, sort, and role filtering.
CORE-8743
CORE-8442
Bulk Rescheduling Fails: Resolves a crash when using Bulk Rescheduling in Reservations. The application was throwing a TypeError: Cannot read properties of null, caused by failure to retrieve the latest service instance time for certain bookings.
Chained membership upgrade pricing corrected where a voucher was applied
Ref
Patron acknowledgement fields — Patrons can now provide their name or choose to remain anonymous for stewardship/recognition purposes during checkout.
CORE-7544
CORE-7702
Additional webhook metadata — Webhook payloads now include additional metadata for richer integrations.
Suspend/reinstate tickets via POS — POS operators can now suspend tickets and change expiry dates through the POS API.
Ref
V3-159
DEVOPS-375
CORE-7395
Invoice payment for non-admin POS users — Users without Admin permissions can now use the Invoice payment method at POS where configured. Verified at TRB Reservations.
CORE-7593
CORE-6691
Entitlement Terms View – Upgrade/Downgrade Flag: Fixes instances where the upgrade/downgrade flag was not populating on the Entitlement Terms View for midyear upgrades. Also addresses previous terms incorrectly showing as active instead of expired. Affects renewals across B2C, POS, and Reservations.
CORE-7388
Hide donations toggle per tenant — A new configuration flag allows individual booking portals to hide the donations prompt from customers (currently enabled for Blenheim Palace).
Cancelling pending term requires Customer Details: Fixes a flow where cancelling a pending term (rather than a full order) incorrectly required Customer Details to be completed. Skipping customer details now works for both full cancellations and pending term cancellations. (carry-over from rc1)
Design Museum email content — Membership confirmation emails now show Direct Debit and Gift Aid status information.
CORE-7088
Promo lifetime limit fixed — Product-level promotion lifetime limits now correctly cap discounts during checkout, preventing customers from exceeding configured limits.
DEVOPS-337
CORE-8776
Ref
Summary
GTM enabled for Bamburgh Castle — Google Tag Manager tracking is now active for the Bamburgh Castle tenant.
HRP discount code updated — Member email discount code updated from MEMBER25 to MEMBER26 for 2026.
Design Museum PDF email address removed — The internal info@expian.io email address is no longer visible in Design Museum ticket PDFs.
CORE-8018
V3-117
Disable guest checkout per tenant — A new per-tenant configuration option allows guest checkout to be disabled in the Booking Portal.
Detail
Added alerts for ECS container failures for faster incident detection.
EXPIAN-271
CORE-6838
CORE-7588
CORE-6557
Detail
Ref
The status column in the Membership Terms view was incorrectly sourcing its data, which caused cancelled memberships to still appear as active. The status now accurately reflects the current state of each membership, and filtering by status works as expected.
Previously, processing a manual renewal recorded the payment but did not generate the new membership term, leaving the order in an expired/awaiting renewal state. This has been resolved; manual renewals now correctly create the renewal term as expected.
DEVOPS-383
CORE-7600
Amending a trade-partner invoice order now produces the correct pricing-history delta, resolving eFinancials variances and duplicate Transaction History rows.
Entitlement Limit Group ticket type selections now persist correctly
Description
CORE-6631
Raw HTML in upsell descriptions fixed — Add-on descriptions no longer show raw HTML tags (fixed for both desktop and mobile).
Detail
Cart expiry error fixed — Resolved an "access denied" error that occurred when attempting to amend an order whose cart had previously expired.
Key
Ref
CORE-8680
Daily entity table dumps — Admin Portal entity tables are now exported daily for reporting/integration purposes.
CORE-7085
Ref
Account setup retry fixed — Improved password reset retry logic so customers no longer need to repeat the flow multiple times.
Removed plaintext secrets from Lambda configurations (security improvement).
CORE-8796
CORE-7872
Ticket printing fixed for mixed bookings — Bookings containing both admission tickets and standalone ancillary items now print correctly. Previously, barcodes could be unavailable for reprint in these scenarios.
"Upgrade your ticket" removed from Reservations — The ticket upgrade option has been disabled in Reservations entitlements where it was showing incorrectly.
A regression was identified in the HRP booking portal affecting the accuracy of Google Tag Manager (GTM) event tracking.
Detail
CORE-7753
CORE-6237
Cancelling a trade-partner (invoice-paid) order now correctly records the invoice-payment reversal on the eFinancials report and shows the cancellation in Transaction History.
CORE-8743
Cancellation contact details fixed — The cancellation flow now correctly displays customer contact details rather than showing empty fields.
CORE-7749
CORE-6068
Description
CORE-7598
CORE-8814
CORE-6462
Digital wallet sync fixes — Fixed: single-device limit not resetting after voiding, passenger name changes not syncing, validity period extension failures, and JSON errors on individual downloads.
£0 donation with promotions fixed — Promotions now apply correctly when an optional donation is also configured on the product.
Replay historical webhooks — Admins can trigger asynchronous replays of historical webhook events for a chosen date range. Supports OnOrderUpdated, OnScansRecorded, OnAttendanceRecorded, OnProductUpdated, and OnTicketsScanned. Configurable batch size (1–100) and throttling (min 500ms delay).
Webhook API documentation completed — Full API documentation is now available for the 3 previously undocumented webhook endpoints.
CORE-8252
CORE-7894
Design Museum email info block updated — Revised the important information section in emails.
CORE-7966
Customer account detail – First/Last Name blank: When a customer account is created via Reservations, the first and last name fields were blank in Customer Account search, despite being correctly populated when using "Place Order on Behalf".
Recommendation acknowledgements — Customers can now be required to acknowledge certain conditions before adding a recommended product to their cart. Note: Booking portal work is still outstanding.
Custom options in checkout — Added support for capturing custom options at both customer and order level during checkout. Reservations users can view and edit these after purchase.
Multi-booking pass support — Orders containing multiple bookings now correctly generate passes for all bookings within the order.
Upgrade/downgrade no longer blocked by pass validation — Membership and patronage upgrades/downgrades are no longer incorrectly blocked by pass-specific validation rules that don't apply to entitlements.
Issue
CORE-8659
DD frequency in reporting — A new "Direct Debit Frequency" field is available across all order-related reporting data sources.
CORE-8463
CORE-6905
Ticket upgrade consumed twice fixed — Resolved an issue where ticket upgrades were being processed twice during checkout, causing incorrect pricing.
Gift membership upgrade pricing (follow-up) — Ensures upgrade pricing is preserved for memberships originally redeemed via gifts, including correct pricing through checkout and order processing.
CORE-8367
Adding additional children to membership — Clicking "Add Child" now correctly adds a new form below existing entries rather than replacing them.
CORE-6006
Detail
CORE-8238
Resolved a bug where the basket was timing out on the order confirmation page when the selected time slot expired during the purchase flow.
CORE-7909
Automatic renewal for imported DD memberships — Memberships originally imported with Direct Debit payment details are now also automatically renewed.
Fixed error blocking agents from amending membership orders ("Unable to get market data")
Addressed a performance bottleneck at the payment stage of the membership purchase flow, where certain database queries were causing delays of up to 18 seconds. The checkout process is now significantly faster.
CORE-7803
CORE-7851
CORE-6844
Detail
CORE-6891
"Download All" hidden for Blenheim Palace — Multi-ticket orders at Blenheim only show individual ticket downloads (the bulk download section is hidden).
Booking reference textbox restored — The text box for entering a booking reference when upgrading tickets to membership is now visible again.
A Direct Debit membership purchase that reached the success screen but whose order was not placed due to a missed payment-provider callback is now reconciled on return, ensuring the membership is correctly created. Note: this is a pre-existing issue also present in production, not a v3 regression.
CORE-8317
Ancillary items checkout fixed — Resolved an error in the ancillary items checkout flow.
External payment methods for POS — A new configuration (shouldFetchExternalPaymentMethods) controls external payment options at POS. When enabled, selecting "External Payment" shows available methods to record against the transaction. Currently enabled for TRB.
Mid-year pass upgrade with preserved validity — Upgrading a pass partway through its validity period now correctly preserves the remaining validity dates.
Restore deep relation-prefix splitting on /public/products/:id
Passes voided on mid-term upgrade/downgrade — When upgrading or downgrading, the old pass is automatically marked as expired and a new pass reflecting the updated product is available for download.
Resolved an issue where the palace/admission field was greyed out when editing an order in V3, preventing users from changing the palace on a reservation. Previously this was possible by selecting a new palace in the Choose Admission field.
Correct Interbacs first collection amount — The initial Direct Debit collection amount for Interbacs is now set correctly, ensuring customers are charged the right amount on their first payment.
CORE-7579
EXPIAN-30
Fixed double banner for expired patronages — Only the Expiration Alert banner now shows when a patronage is expired with DD + Do Not Renew.
CORE-7418
The directional arrow indicating an upgrade or downgrade was incorrectly appearing on renewal terms. It now only displays on memberships that were amended mid-term (i.e. an in-year upgrade or downgrade), not on standard renewals.
Duplicate webhook validation — The webhook API now prevents duplicate event types from being created, ensuring cleaner configuration.
CORE-7727
Ref
CORE-8300
CORE-6931
Detail
CORE-7728
CORE-7630
Additional patron option restored at Reservations checkout
CORE-7652–7653
The cancellation screen now groups bundled tickets under their bundle heading. You can select/deselect an entire bundle with one checkbox rather than picking individual tickets.
Ancillary item text box fixed — The text input for "Requires User Input" ancillary items now works correctly: greyed out at zero quantity, editable when quantity is 1+. To test: Edit an ancillary item, enable "Requires User Input", add to a booking and verify the text box enables/disables with quantity changes.
Issue
Permissions Based Access – new/renamed permissions not visible: The new and renamed permission levels (e.g. user:read:customer, user:update:customer) are not visible in the Admin portal's User Administration. Existing permissions still display with their old names.
CORE-6881
- Existing member information is now better preserved during amendment flows, including date of birth where applicable.
CORE-8438
Day pass status display corrected — Day passes no longer incorrectly show as "Partially Redeemed" immediately after purchase.
CORE-8475
Fixed multiple defects in the renewal email PDF generation identified during UAT2 testing.
Chained upgrade pricing corrected — When upgrading through multiple tiers (e.g. Individual → Family 1 → Family 2), the system now uses your current membership price as the credit, not the original admission ticket price.
CORE-7053
Payment succeeds but order abandoned due to cart expiry: Addresses an edge case where payment is processed but the cart expires during the payment window (>15 min), resulting in the order being marked "Abandoned". The fix introduces a grace period so expired carts convert to an order if a valid payment exists, with an inventory hold buffer to prevent overselling.
- Fixed issues when updating memberships during amendments and renewals.
CORE-6555
Ref
Detail
Cart timeout issue resolved — Fixed a performance issue causing timeouts when adding items to cart.
Fixed cancellation of fully-discounted (£0) membership orders getting stuck on the payment step
Order/entitlement search performance fixed — Improved response times for the /orders and /entitlement-terms endpoints, resolving database spikes and search latency issues.
CORE-7344
Issue
Faster membership product loading — Significantly reduced load times when fetching entitlement-heavy products (e.g. membership scanning). No changes to data or API responses.
Removed duplicate CloudTrails to reduce costs and simplify auditing.
Wrong Redirection After DNA Payment – Reservations Portal / UAT 3.0 DNA card payments crashing
Replaced internal NLB with ALB for improved routing and observability.
CORE-8256
Product history timestamps now display the correct local time
Duplicate payment rows removed from trade-partner invoices
Summary
Marketing & Gift Aid preferences in My Account — Customers can now manage their marketing communication preferences and Gift Aid declarations from their account settings.
CORE-6914
Summary
Imported order payment currency validation restored
Summary
CORE-6953
Issue
Multiple promo display fixed — When an event has multiple active promotions, each now displays its correct title. Previously the first promo's title could incorrectly appear on others. To verify: Create an event with 2+ promos and confirm each displays the correct title.
CORE-8002
CORE-8475
Detail
Customer name search and contact validation corrected
Separate Patronage Terms table — Entitlement tables are now split into Membership Terms and Patronage Terms for clearer reporting and management.
CORE-6643
CORE-7416
CORE-7718
CORE-6806
CORE-8680
CORE-7850
Blenheim email template updates — Emails now display correct Gift Aid information and show custom welcome messages when configured (under Products > Integrations or Entitlements > Integrations).
EXPIAN-269
Donation values with discounts fixed — A new product-level setting (donations_on_base_price) allows donations to be treated as part of the base price. Promotions now correctly allocate between ticket price and donation amounts.
Prevent payment on abandoned orders — The system now prevents payment being taken when an order's cart has expired in the background, avoiding abandoned cart conflicts.
CORE-7411
Lifetime membership expiry now extends correctly on POS upgrade
Nav labels – "Admissions" → "Tickets", "Events" → "Experiences": Implements configurable navigation labels. Introduces locale file loading from config server. (carry-over from rc1)
The Membership Manager role in Reservations can now update customer accounts and reassign customers on membership orders, removing the need for Admin-level access.
CORE-6188
CORE-7911
Gift Aid declaration wording customised — The Gift Aid modal now supports custom wording per client, allowing each tenant to display their specific declaration text.
Blenheim email styling improved — Updated order confirmation email template styling for Blenheim Palace.
CORE-6808
Address validation relaxed — Following feedback on CORE-6691, the house number requirement for the first address line has been relaxed.
Applying a gift voucher to a Direct Debit membership now correctly settles the order as a card payment, preventing un-collectable Direct Debit sign-ups.
"Add to Wallet" button in emails — Order confirmation and amendment emails now include an "Add Tickets to Phone Wallet" link (currently enabled for Blenheim Palace).
CORE-7777
V3-115 implements CORE-8395
Stop Sales at expiry time — The "Stop Sales At" setting on a product can now be configured relative to the expiry time, giving more flexibility for controlling when sales close.
Entitlement ordering defaults to card payment — When ordering entitlements, the payment method now defaults to card for a smoother checkout experience.
Incorrect price when upgrading membership (chained upgrades): Corrects chained membership upgrade pricing. Previously, upgrading through a chain (e.g. Individual → Family 1 Adult → Family 2 Adult) used the original admission ticket price instead of the current membership product price for the credit calculation. (carry-over from rc1)
CORE-6807
Print Card button hidden when not configured — The "Print Card" option no longer appears in the membership overview for clients without card printing set up.
V3-168
Resolved an issue in non-production environments where the auto-renewal process was running daily but renewals were not being consistently applied. Renewal processing now completes reliably.
Detail
CORE-6809
UK postcode & Gift Aid validation — Billing and shipping addresses now validate UK postcode format. Gift Aid can only be claimed with a GB shipping address.
Patron DD refund methods — When refunding a Patronage, "Direct Debit Not Collected" and "Direct Debit Refund" are always available regardless of original payment method.
CORE-8021
Bundle ticket types can now be imported via API with unique external references per child ticket (e.g. one reference per family member). Fully backwards compatible with existing imports.
Detail
Resolved: Extra customers incorrectly added during refund processing
Trade-partner bookings were showing duplicate entries against "Invoice" in Transaction History, and a corresponding discrepancy was appearing in financial exports. Duplicate records have been cleaned up and the underlying issue that allowed them to be written has been resolved, so new invoices will no longer produce duplicate rows.
Fixed a performance issue that could cause slow load times when retrieving products with large numbers of entitlements. Response times on the /public/products/:id endpoint have been significantly improved.
✨ New Features
Addressed an issue with gift membership upgrade pricing logic to ensure accurate calculations and improved user experience. The fix resolves discrepancies in pricing for upgraded gift memberships.
Following a previous fix, the branded HRP membership invitation email was not being sent to new members, causing customers to receive an unbranded fallback email from the system. The provisioning process has been overhauled to ensure the correct branded email is sent reliably when a new membership account is created.
- Fix issues when promotion or voucher discount was applied to the upcoming term. Now, each discount should reflect correctly to the corresponding term between transitions (upgrades, downgrades).
- Updated rules around when membership members can be edited or removed, helping prevent unintended changes during amendment and upgrade journeys.
Previously, entitlements were incorrectly validated using pass amendment rules, which could prevent valid entitlement operations. Pass validation rules (expiry date checks, start date restrictions, upgrade requirements) now apply only to actual passes with date or open booking unit types.
Whole-cart promotions are now required to apply at market level rather than to individual ticket types or capacity options. The promotion setup form reflects this, and the system will reject any configuration that does not meet this requirement. This ensures consistent and predictable discount behaviour across all cart-level promotions.
When importing orders, the platform now correctly rejects payments where the currency does not match the order, returning a clear error rather than accepting a mismatched payment silently. Flexibility around partial or unpaid amounts remains in place for users with the appropriate import permissions.
We have fixed an issue where a member's date of birth was not being saved correctly when updating their details. This affected memberships that were migrated into the system and could also prevent membership renewal in some cases.
Membership orders: fixed an issue where date of birth details were not always saved correctly.
- Added a "Save Changes" confirmation button when editing a ticket's validity/expiry date—changes are now saved explicitly rather than automatically when selecting a new date.
✨ New Features
A new extended Gift Aid modal has been implemented for the B2C booking flow. The modal is tenant-configurable and replaces the standard radio-button prompt with a rich two-column layout including a hero image, descriptive HTML content, and styled call-to-action buttons.
After saving a Limit Group within an entitlement type's Linked Products configuration, the selected ticket type checkboxes were appearing unchecked when returning to the screen, despite the settings having saved correctly. This display issue has been fixed so that selections are shown accurately after saving.
After completing a payment via DNA Payments in the Reservations portal, users were occasionally redirected to an incorrect page instead of the order confirmation screen. This has been corrected — you'll now be taken straight to your confirmation page after a successful payment.
When adding children to a Family membership (via the B2C site or Reservations portal), the system was not prompting for a date of birth. This has been resolved — date of birth is now correctly required when adding new members or amending existing ones.
Customers purchasing a patronage product through the Reservations portal are now required to confirm how they wish to be acknowledged, either by entering a name or selecting the anonymous option, before checkout can be completed. A clear prompt is displayed if this step is missed. This restores behaviour that had previously gone missing.
Where a membership or patronage was configured to require additional member details, the option to add an adult or child patron was not appearing during Reservations checkout. This has been resolved and the additional patron UI now displays correctly as configured.
✨ New Features
- Existing member details are now handled more consistently, including date of birth information.
Editing customer details (such as date of birth, name, or phone number) on orders migrated from the previous platform was causing an error and failing to save. This has been fixed so that updates to these fields now complete successfully, even where the migrated order has incomplete customer data.
We fixed an issue where some customers could receive duplicate account-related emails when a customer profile was created during checkout or account setup. Customers should now receive the correct onboarding communication only once, creating a clearer and less confusing sign-up experience.
How to Test
✨ New Features
CORE-7950 fixes a separate issue from CORE-7600 (which fixed ticket upgrades being consumed twice during checkout).
- View and manage customer accounts directly in the Reservations portal. A new "Customer Accounts" area (left-hand nav) lets authorised staff search for a customer by name or email and open a full account view — contact details, address, vehicle details, order history, memberships, patronages, vouchers, and security settings — all in one place.
The customer name search in Customer Accounts was returning all records rather than filtering by the name entered. Additionally, the Contact Information form now validates First and Last Name fields to reject special characters, preventing data quality issues downstream. Records with existing invalid data will prompt staff to correct the information before saving.
Changes saved to products in the Admin portal were showing with a timestamp one hour behind the actual save time during British Summer Time. Timestamps in entity history now reflect the correct local time.

Certain products were showing as "Unavailable" or "Your Time Selection Expired" immediately when a time slot began, preventing customers from completing a booking. This occurred where a product had no explicit end time configured. The platform now correctly treats these products as valid for the full duration of the slot, and existing products have been updated automatically with no changes required from staff.
We have resolved an issue where sending disruption communications to customers via the bookings page was resulting in emails that displayed a raw system error message rather than the intended content. The root cause was missing email templates for both HRP and Blenheim Palace.
✨ New Features
Upgrading a migrated membership to a Life product via POS was leaving the expiry date unchanged, rather than extending it by the expected term. This has been corrected so that Life membership upgrades always extend the expiry appropriately, regardless of whether the original membership was migrated or native.
POST /orders now accepts a tickets[] array on bundle items, allowing a unique external reference to be assigned to each individual child ticket within a bundle (e.g. one reference per family member on a family bundle).
When renewing a patronage through the Reservations portal, the order summary was displaying a generic confirmation message rather than the correct "payment received and order amended" wording. The correct copy is now shown at the confirmation step.
What was happening:
When upgrading through a chain of membership tiers and a voucher had fully covered an earlier tier, the price on a subsequent upgrade was calculating incorrectly, charging the full price rather than the incremental difference. The pricing logic has been corrected so that the upgrade credit is calculated accurately at each step in the chain.
Fixed an issue where day tickets were incorrectly shown as unavailable when attempting to purchase between 23:00 and midnight. Tickets can now be purchased at any time during operating hours.
- Gift Aid is now cleared automatically when a membership changes to a product that is not Gift Aid eligible.
The account activation email sent via SSO was displaying the word "undefined" as the first line of the message. This has been resolved so that the email renders cleanly with the correct content throughout.
Operators can now restrict which POS sub-locations can sell specific products.
- The total page count was removed from the pagination in the data response
This implements CORE-8728, Membership purchase confirmation page copy not correct.
In the Reservations portal, selecting a customer account from the search results could cause the page to hang on a loading screen. This has been fixed so customer account details now load as expected.
✨ New Features
? Improvements
- Preserve checkout stability when a user logs in or creates an account during checkout so the user's entered form data is not overwritten.
Entitlement renewals – imported Direct Debit (HRP UAT):
We have fixed an issue where reducing the ticket count on an order and then processing a refund could result in additional customers being silently added to the order. This was unintended behaviour introduced in a previous update.
? Bug Fixes
- Prevent checkout form resets when a new account is created during checkout: checkout initialization now guards against re-running after the checkout state is already set, avoiding loss of name, email, billing/shipping address, and custom field entries.
- Ensure a lead customer record exists when checkout initializes so logged-in user details are correctly pre-filled into the contact form.
Admin Portal:
Additionally, when attempting to save a member record where the email address is already registered to another account, the system will now display the specific reason for the error rather than a generic "An error occurred" message, making it easier for staff to resolve the issue quickly.
- Purchase ticket bundles: Users can buy pre-configured ticket bundles (e.g., family packages) as a single cart item instead of selecting each ticket type separately.
Detail
Fixed error messages when cancelling an order (HRP UAT)
- Add a product-level flag (donations_on_base_price) that lets products treat ticket donation amounts as part of the base ticket price.
- ~70% off response time in most cases
Gift vouchers can no longer be redeemed against Direct Debit membership products
Added the "Donations included in base price" option when setting up vouchers in Admin → Entitlements → Vouchers → Pricing. When enabled, the voucher price is treated as a donation with gift aid applied — resolving the missing functionality for BP voucher configuration on V3.
- Generate bundled ticket passes: Bookings now create explicit bundle instances that generate linked child tickets for each bundle purchase, making bundled-ticket purchases traceable.
1. Purchase a Membership
Each entry supports:
We fixed a problem affecting some membership orders where a customer’s date of birth could fail to save. This update ensures date of birth information is now retained correctly during the order process.
- Create bundle ticket types: Admins can group multiple existing ticket types into a single composite ticket and configure quantities for each bundled item.
- Enhanced ticket action menu to conditionally display "Amend validity dates" and "Suspend ticket/pass" options based on ticket status, providing clearer visibility into available actions.
- Generate bundled ticket passes: Bookings now create explicit bundle instances that generate linked child tickets for each bundle purchase, making bundled-ticket purchases traceable.
The correct templates are now in place, covering both HTML and plain-text email variants. HRP templates follow the established HRP email style, while Blenheim Palace templates align with the shared email design framework. Note: a separate SMS issue reported at the same time was related to an out-of-credits environment configuration and is not addressed by this fix.
- Implemented functionality to preserve upgrade pricing for memberships redeemed via gifts. Upgrade prices are now correctly applied during checkout and order processing.
Automatic renewal for DD memberships — Memberships paid by Stripe Direct Debit now renew automatically when the billing period elapses. To test: Subscribe to a short-period membership via DD and confirm it renews after the period expires.
- Reset a customer's password on their behalf. From the customer's Security & Preferences tab, authorised staff can trigger a password-reset email.
[Media content]
- Updated validation and editing rules to prevent incorrect changes to member records during checkout.
- Bundle-aware ticket cancellation UI: When cancelling bundled tickets, tickets are now automatically grouped and displayed under their bundle heading, making it easier to see which tickets belong together.
As part of this fix, staff using the legacy customer collection workflow will now see a dedicated step during the refund process that allows them to select which non-lead customers should be removed from the amended order. The refund workflow steps have also been numbered for clarity.
- Go through the membership purchase flow
- Show bundle contents in summaries: Bundle items display a concise breakdown of included tickets (e.g., "Includes 2x Adult + 1x Child"), and when multiple bundles are purchased the text indicates per-bundle quantities (e.g., "each").
Resolved an issue where cancelling an order via the Trade Partner or Reservations portal triggered a stream of error messages that filled the page and couldn't be dismissed. Cancellations were processing correctly in the background, but the error messages should no longer appear.
- New "Select for product by sub-location" checkbox in Product > Availability & Channels (shown when POS channel is selected)

? Improvements
- ~50% off response time the remaining cases
- Expose bundle data in APIs: Ticket type responses now include grouping and bundle_ticket_types so bundle configurations are available via API.
- Bundle-level selection: Users can now select or deselect an entire ticket bundle with a single checkbox, rather than having to select individual tickets one at a time.
What was happening:
When upgrading a membership in a chain (e.g. Individual -> Family 1 Adult -> Family 2 Adult), the upgrade credit was calculated using the original admission ticket price instead of the current membership product price.
- Integrated tickets_upgraded data into the checkout payload to retain upgrade pricing consistency across back-end transactions.
- reference — external reference for the child ticket
CORE-8454
- Validity date changes require explicit confirmation: Users can no longer change a ticket's validity date by simply selecting a new date. A "Save Changes" button must be clicked to confirm the modification.
- Include parent linkage on tickets: Child tickets include parent_ticket_type_id and parent_ticket_id so bundle membership is visible across APIs and the UI.
Fixed a bug where the system allowed gift vouchers to be applied to Direct Debit membership products on WEB. This caused renewals to fail since no payment details were captured during the original purchase. The system now correctly prevents voucher redemption against DD products, converting the basket to a card-price product as intended.
- Enable or disable a customer account. Staff can disable an account that should no longer be able to log in, and re-enable it at any time.
- Include parent linkage on tickets: Child tickets include parent_ticket_type_id and parent_ticket_id so bundle membership is visible across APIs and the UI.
Behaviour
- Multi-select to choose which sub-locations can sell the product
Where a new membership lead had no existing member type or date of birth value on record, editing the customer details via the customer modal would fail to save the date of birth. The issue also caused inconsistent display of date of birth across the customer details view, member details section, and membership sidebars.
- id — child ticket type id (e.g. adult, child)
What was happening:
- Invalidated tickets cannot have their validity dates amended: When a ticket has an invalidation reason (e.g., redeemed, suspended), the "Amend validity dates" option is no longer available in the ticket action menu.
? Improvements
- Link an order to the right customer. When an order was placed as a guest, or against the wrong account, staff with the appropriate permission can now attach or move the order to the
? Improvements
? Improvements
- Select a refundable membership plan
? Improvements
- "Yes Please" accepts Gift Aid and proceeds to checkout immediately
? Improvements
- Expose donations_on_base_price and donations_enabled in booking and product responses so cart, booking flows, and downstream consumers can read donation settings.
- Capacity-aware bundles: Bundles allocate capacity across their constituent ticket types so venue/resource limits are respected when bundles are purchased.
- Choose Stripe Direct Debit as the payment method
- Unchecked = product available at all POS sub-locations (default)
- Bundle-aware cancellation flows: Cancelling or restoring a bundle parent now also cancels or restores its related child tickets to keep cancellation state consistent.
- "No Thanks" presents a second confirmation screen with alternative messaging, allowing the user to reconsider before declining. A close button (×) is available on this screen (this functionality should be validated/tested against ticket )
For example, upgrading from Family 1 Adult (£90) to Family 2 Adult (£135) charged £120 (£135 - £15 original ticket) instead of the correct £45 (£135 - £90).
- Apply promotions with awareness of donations_on_base_price so discounts allocate correctly between ticket price and donation; when ticket price totals are zero, promo discounts can be applied to donation amounts.
- Bundle-aware cancellation flows: Cancelling or restoring a bundle parent now also cancels or restores its related child tickets to keep cancellation state consistent.
- Two grouping modes for ticket types: Admins can choose "Unit" (traditional single-ticket capacity) or "Bundle" (composite tickets) when configuring a ticket type.
- parent_ticket_type_id — id of the bundle ticket type the child belongs to
What has been fixed:
- correct customer profile. The affordance appears as a pencil icon next to the customer row on the order details page, and opens a searchable modal with a confirmation step.
- The majority of GTM events in the HRP booking flow were firing twice, resulting in duplicate data being recorded
- Enhanced the cancellation modal layout to visually organize bundled and non-bundled tickets, improving clarity when managing complex bookings with multiple ticket packages.
POS Impact:
- Complete the payment successfully
New configuration parameters (under features.giftAidModal in b2c_next.ts):
- Update checkout UI to optionally include donation amounts in the per-ticket displayed unit price when donations are configured to be part of the base price.
- Stable bundle instance identifiers: Bundle instances use stable parent IDs in the format bookingId:ticketTypeId:counter so child tickets remain deterministically linked across regenerations.
- type — "ticket"
- The add-on
add_to_cartevent was not firing at all when an add-on was added to the basket, meaning add-on activity was going untracked - Clearer order–customer relationship. Order details now always show a customer row (with "Guest customer" when none is linked), and the customer's name is a link that jumps to their account page.
The fix detects chained upgrades by checking if the order being amended already has a completed membership/patronage product, and uses that product's price as the credit.
- Stable bundle instance identifiers: Bundle instances use stable parent IDs in the format bookingId:ticketTypeId:counter so child tickets remain deterministically linked across regenerations.
- Transaction records were displaying "Imported BOS Payment" as the payment method, with an incorrect transaction ID rather than the expected Interbacs reference
- Improved customer name resolution for bundled tickets by refactoring the customer lookup logic to work in more contexts.
- Optional capacity fields: Booking and search responses tolerate ticket types that lack capacity configuration; capacity_type may be missing without breaking queries.
- Admin UI updates: Ticket type listing and capacity UI now surface grouping and display aggregated capacity summaries for bundles (e.g., combined capacities from bundled items).
References are preserved end-to-end through ticket generation, projection and regeneration (e.g. amendments).
Notes
- Capacity handling improvements: Capacity selectors and displayed summaries format capacities consistently and account for bundled quantities.
? Bug Fixes
What has been fixed:
- Custom fields for bundled tickets: Customer/passenger data collection maps fields for tickets included in bundles so per-passenger information is captured and associated correctly.
2. Upgrade the Membership (wait some minutes to be sure the first direct debit payment has been processed)
- Products with sub-location restrictions will only appear at configured sub-locations
- The eFinancials with orders report showed "Imported BOS Payment" as the title, with blank account code and Direct Debit frequency fields
- Improved ticket pricing display control: Ticket details can suppress per-child-ticket prices for bundle items while preserving per-ticket pricing for unit tickets.
- Improved ticket pricing display control: Ticket details can suppress per-child-ticket prices for bundle items while preserving per-ticket pricing for unit tickets.
Behaviour change to be aware of
The customer form has been updated to correctly synchronise date of birth values for membership and patronage orders, ensuring the date of birth saves and displays consistently across all relevant views. Non-membership customer records are unaffected by this change.
- Fix incorrect donation adjustments during promotion application so donations are moved, converted to, or preserved only when donation settings and discount thresholds require it, preventing inaccurate donation totals.
- Editing customer details on an order no longer updates the customer's account profile. Account-level edits should be made in the new Customer Accounts area. Order-level edits (e.g. quickly correcting a name for a ticket) stay on the order. The order's customer edit dialog surfaces a notice linking to the customer account page when a linked customer exists.
- Upgrade to a higher-tier membership plan (Instant not at renewal)
- Passenger grouping by bundle instance: Passenger reconstruction and association grouping now use bundle-instance identifiers so passengers remain consistently associated with the correct bundle instance.
⚠️ Breaking Changes
- No restrictions configured = available everywhere (backward compatible)
Compatibility: Fully backwards compatible. Existing imports without tickets[] are unaffected. Non-bundle tickets[] references continue to work as before.
- Where a membership had been created within the platform and subsequently auto-renewed, the sales user was recorded as the original staff member rather than "Membership System Process"
- Passenger grouping by bundle instance: Passenger reconstruction and association grouping now use bundle-instance identifiers so passengers remain consistently associated with the correct bundle instance.
- The extended form only renders in the B2C booking app (app === 'booking'). Reservations and other apps are unaffected
⚠️ Breaking Changes
⚠️ Breaking Changes
⚠️ Breaking Changes
- Verify that:
Bundle pricing: Restored the bundle child zero-pricing rule that had been silently dropped in a prior merge — the parent bundle ticket type carries the price, children are zero-priced. Fixes intermittent Unexpected state reached. Ticket pricing missing. errors seen during bundle imports.
API:
- The image asset should be placed under packages/config/src/{tenant}/gift-aid-assets/
What has been fixed:
- Database migration required: New migrations rename the ticket-type column to "grouping", add a bundle table (ticket_type_revision_bundle_ticket_type), and make capacity_type nullable. Run the new migrations before deploying to avoid schema mismatches.
- API shape additions: Booking and order payloads and schemas include new bundle-related fields (e.g., grouping, bundle_ticket_types, bundle_ticket_type_id). Integrations that inspect exact booking or order schemas or assume capacity_type is always present may need to handle these new optional fields and composite identifiers.
⚠️ Breaking Changes
Permissions changes (no behaviour changes - just cleaning up)
- Additions only: two new optional boolean fields (donations_on_base_price and donations_enabled) are added to product and booking payloads. Consumers should tolerate these optional fields being present.
Note: This fix is a follow-up to CORE-8778, which also appeared in rc11. As a result, this reference appears across both rc11 and rc14.
- API and event payload shapes extended: Ticket, customer association, and event payloads now optionally include parent_ticket_type_id, parent_ticket_id, and bundle_parent_ticket_id. Consumers that perform strict schema validation should accept these optional fields to avoid validation errors.
- Go to the Stripe Dashboard (it could take some minutes to update)
- New pos_sub_locations array on product responses
- user:read:customer — view customer accounts (viewers and above in Reservations).
The HRP add-on step has been realigned with the standard booking flow. Add-ons now correctly trigger a single add_to_cart event, including the appropriate ecommerce values, currency, and item data, merged with the rest of the basket. Duplicate event firing has been resolved.
Consumed by: data-migration-universal (order migration tool), which now maps each row in Orders.Customers.csv with a ticket_reference to the correct child ticket within a bundle.
- API and event payload shapes extended: Ticket, customer association, and event payloads now optionally include parent_ticket_type_id, parent_ticket_id, and bundle_parent_ticket_id. Consumers that perform strict schema validation should accept these optional fields to avoid validation errors.
- Tenants without giftAidModal configured continue to use the existing standard modal unchanged
Bundle ticket purchasing
- user:update:customer / user:create:customer — edit or create customer accounts (support and above).
Empty array = no restrictions (available at all sub-locations)
3. Downgrade the Membership (wait some minutes to be sure last direct debit payment has been processed)
- order:update:customer_user — reassign a customer user to an order (admin and owner only).
The renewal logic has been updated to correctly handle imported Direct Debit entitlements, ensuring renewals process accurately and records reflect the correct data throughout.
- Downgrade to a lower-tier membership plan (Instant not at renewal)
Note: This is a frontend-only change and has no impact on booking logic or data processing.
- Verify that:
Jira: CORE-7740
✨ New Features
4. Cancel the Subscription (wait some minutes to be sure last direct debit payment/refund has been processed)
- Purchase ticket bundles: Users can buy pre-configured ticket bundles (e.g., family packages) as a single cart item instead of selecting each ticket type separately.
- Cancel the current membership (Instant not at renewal)
- Show bundle contents in summaries: Bundle items display a concise breakdown of included tickets (e.g., "Includes 2x Adult + 1x Child"), and when multiple bundles are purchased the text indicates per-bundle quantities (e.g., "each").
- Confirm that:
? Improvements
You can now do the same whole process with (At renewal) and look that Stripe Dashboard update correctly the price and the billing period in the corresponding subscription
- Capacity-aware bundles: Bundles allocate capacity across their constituent ticket types so venue/resource limits are respected when bundles are purchased.
- Optional capacity fields: Booking and search responses tolerate ticket types that lack capacity configuration; capacity_type may be missing without breaking queries.
- Custom fields for bundled tickets: Customer/passenger data collection maps fields for tickets included in bundles so per-passenger information is captured and associated correctly.
⚠️ Breaking Changes
- API shape additions: Booking and order payloads and schemas include new bundle-related fields (e.g., grouping, bundle_ticket_types, bundle_ticket_type_id). Integrations that inspect exact booking or order schemas or assume capacity_type is always present may need to handle these new optional fields and composite identifiers.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article