Only sync completed transactions to Omneo. Do not sync draft, partially paid, or otherwise incomplete records. Omneo transactions are immutable records of what occurred.
Before you start
- Review Authentication to get a bearer token
- Plan your data mapping: decide which transaction fields from your source system map to Omneo fields
- Determine whether you’ll look up profiles by Omneo ID, email, or an external identity handle
Transaction anatomy
A transaction has two levels:- Header: overall transaction details: total, date, location, staff, receipt ref, payments, tags
- Items: individual line items with product, price, and quantity
Resolving the profile ID
You don’t need to know the Omneo profile ID up front. Useprofile_id_handle to tell Omneo how to interpret the profile_id field:
Creating a transaction
Upsert (create or update)
Use the sync endpoint when you have a reliableexternal_id and want to avoid duplicate transactions:
external_id. If found, it updates it. If not found, it creates a new one.
Updating a transaction
Voiding a transaction
Prefer voiding over deletion. Setis_void: true on the transaction to mark it as voided without removing it from history:
Bulk / queued transactions
For historical imports or high-volume ingestion, use the queue endpoint rather than the standard create endpoint. This places each transaction into a batch processing queue rather than processing it synchronously:transaction.created webhook fires as each one processes.
Adding line items after creation
total. Update the header separately if needed.