Changelog
2025-10-30 - Schema Version 2.1.0
- Added
serviceitemization to both thereceiptanditineraryschemas - Added nullable
carrierstring toshipmentobject - Added nullable
logo_asset_idstring toorgobject - Changed
brand_colorto be case-insensitive for the purpose of schema validation
Update Events
- Added new schemas for our
transit_routeupdate events. See the Events documentation for more details
Deprecation Notices
- The
subscriptionitemization has been deprecated and will be removed in a future release. Theserviceitemization should be used instead. - The
logofield has been deprecated and will be removed in a future release. Thelogo_asset_idfield should be used instead.
2025-10-20 - Protocol Update
Beta release of Update Events.
- Specifying the
event_typein the event registration payload filters receivers by subscription. - Registration payloads of update events can exclude transaction
handles; the handles will be looked up from the original event registration bytransaction_id.
2025-07-18 - Protocol Update
Added the Receiver Query API to replace 'check registry' (now deprecated).
2025-06-17 - Schema Version 2.0.0
This is a major version change. The grace period to get all senders and receivers migrated is currently indefinite; both 1.11.0 and 2.0.0 will be supported for the foreseeable future. We will automatically 'downshift' 2.0.0 receipts to 1.11.0 receipts for 'Custodial Receivers' (as needed) to smooth the transition. We will work with all clients directly on this migration, and we will deprecate 1.11.0 when we confirm 100% readiness.
If you’re a sender, please make a plan to migrate from 1.11.0 to 2.0.0. If you’re a Custodial Receiver client, you’ll need to manually update your webhook’s maximum schema version, via the Versa dev portal, to start receiving 2.0.0 data (until you do, you will continue to receive 1.11.0 formatted data).
Why?
The 2.0.0 update incorporates several points of customer feedback. It enables richer 'passenger' profiles for air travel / 'guest' profiles for hotel bookings. And it enables more flexibility around matching and corporate loyalty programs, to increase match rates.
Breaking Changes
passengerchanges from a string to a new nullablepersonobject (see the Person documentation for details)metadatais removed from flight tickets (and included in thepersonobject)guestsis now an array ofpersonobjectscurrent_period_startandcurrent_period_endhave been renamedcurrent_period_start_atandcurrent_period_end_atfor consistencymetadata,taxes,adjustmentsand other arrays that are valid when empty are now also optional and nullable
Other Changes
- Fixed:
placenullable fields are no longer required - Fixed:
vehiclenullableimageis no longer required - Fixed:
currencynow supportscnyinstead ofcnh - Added to rental car
vehiclelicense_plate_number(string)vehicle_class(ACRISS car code, four letters)
- Added
adjustment_typeenum option:add_on(for e.g. paid seat upgrades) - Added
websitetocustomer - regex pattern validation for
vehicle_class,phone,routing_number,last_fourand airport codes - minimum and maximum bounds for unix timestamps
End of Life
Schema Version 1.10.0 and earlier are now considered at end of life (EOL) and are no longer supported. The registry will not accept new registrations for these versions.
2025-05-01 - Protocol Update
- Added support for multiple misuse codes in the
/report_misuseAPI - Added semantic validation to misuse reporting spec (see Misuse Reporting for more details)
2025-03-31 - Schema Version 1.11.0
- Made 'payment_type' optional on 'payment'
- Fixed incorrect definition of nullable enum types ('mode', 'shipment_status', and 'network')
2025-03-13 - Schema Version 1.10.0
- Made 'merchant' optional on 'third_party'
- Renamed 'first_party_relation' to 'relation' on 'third_party'
2025-03-10 - Protocol Update
- Dropped support for
receiver_addressandreceiver_secreton customer credentials - All receiving clients were migrated to webhooks
2025-02-28 - React Library v1.10
- Added a
ReceiptWithHistorycomponent to the @versa/react library that supports viewing previous versions of a receipt
2025-02-10 - Protocol Update
- Added
org_idtoSenderobject in Checkout - Added
registered_attimestamp to Checkout - Added
transaction_event_indexto Checkout
2025-01-07 - Schema Version 1.9.0
- Flight itemization change: added optional 'fare' and 'taxes' to the flight ticket, and adjusted the segment 'fare' to be nullable, to support cases where fare and tax info is only available at the parent ticket level and not at the segment level
2024-11-21 - Schema Version 1.8.0
- Flight itemization change: added 'aircraft_type' to flight segment
2024-11-7 - Schema Version 1.7.0
- Added 'footer' to top level
- Added 'supplemental_text' nullable string to footer, which supports Markdown
- Moved 'actions' into 'footer'
- Made 'rate' and 'name' optional on 'adjustment'
- Made 'email', 'address', and 'phone' optional on 'customer'
2024-10-31 - Schema Version 1.6.0
- Changed 'product_image_url' to 'product_image_asset_id'
- Changed General itemization 'line_items' to 'items'
- Added 'metadata' to car_rental
- Added optional 'seat' string to flight segments
- Added optional 'metadata' to tickets (for rewards #)
- Added optional 'metadata' for flight segments (for e.g. meals)
- Made all 'address' fields optional
- Change itemized 'subtotal' field to 'amount'—so 'total' and 'subtotal' should appear only in the receipt header
2024-10-18 - Schema Version 1.5.0
- Omitting optional keys is now allowed and considered equivalent to setting said keys to null
- Added support for PDF receipt exports in the @versa/react library
2024-10-18 - Protocol Update
- Added support for sending clients to register customers, scoped to the sending merchant’s receipts and targeting a specific receiver (see Receiver vs. Sender Customer Registration for more details)
2024-10-09 - Protocol Update
- Added misuse reporting to the receiver client specification (see Misuse Reporting for more details)
2024-10-08 - Schema Version 1.4.0
- Adding 'invoice_asset_id' and 'receipt_asset_id' to receipt header (see Assets for more details)
2024-09-26 - Schema Version 1.3.0
- Fields 'actions' and 'payments' no longer accept null
- Changed 'merchant' schema definition name to 'org'
- Added 'date' and 'unspsc' to 'line item'
- Added 'legal_name' to 'org'
- Collapsed 'lodging_items' up a level to the 'lodging' itemization, meaning the schema no longer supports multiple rooms per receipt
2024-08-27 - Schema Version 1.2.0
- Added 'metadata' object to customer in receipt header
- Added 'tz' to address
- Added 'vat_number' and 'address' to merchant
- Fields that expect arrays no longer accept null
- Renamed 'receipt_id' to 'invoice_number' for clarity
- Renamed all itemized 'total' fields to 'subtotal' for clarity
- Renamed 'departure_timezone' and 'arrival_timezone' to 'departure_tz' and 'arrival_tz' for consistency
- Render percentages next to taxes in @versa/react
- Render customer data in @versa/react
2024-08-21 - Schema Version 1.1.0
- Added optional timezone field for origin and destination on flight segments
- Made the card payment network field to be nullable
- Updated the payment UI component in @versa/react
2024-06-30 - Schema Version 1.0.0
The schema is considered finalized for production use. Core client specifications are stable.
- Receiver target endpoint and handle registration API
- AES-GCM-SIV encryption of receipts with registry-provided 32-byte key, by sender
- HMAC token generation for outgoing payloads by sender
- HMAC verification of incoming payloads for receiver
- Reporting invalid payloads back to registry by receiver
2024-05-08 - v0.1.0
Initial release.