Transactions in Omneo represent completed purchases. Sending a transaction links it to a customer profile, contributes to aggregations (lifetime spend, ATV, purchase frequency), triggers reactions, and makes the transaction visible in Clienteling and Profile Portal.Documentation Index
Fetch the complete documentation index at: https://docs.omneo.io/llms.txt
Use this file to discover all available pages before exploring further.
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:
profile_id_handle | Behaviour |
|---|---|
| (omitted) | profile_id is treated as the Omneo profile UUID |
"email" | profile_id is treated as an email address |
| Any other string | profile_id is treated as an identity value for that handle (e.g., "shopify") |
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.
Key fields reference
| Field | Required | Notes |
|---|---|---|
total | Yes | Final transaction total |
transacted_at | Yes | Datetime in UTC or with timezone |
timezone | Recommended | IANA timezone string |
external_id | Recommended | Your system’s transaction ID |
receipt_ref | Recommended | The receipt number the customer knows |
profile_id | Recommended | Links the transaction to a profile |
location_id | Recommended | Omneo location ID |
staff_id | Optional | Omneo staff ID |
payments | Optional | Array of payment method strings |
items | Recommended | Array of line items |