Importing transactional data
By importing transactions to Synerise, you can prepare analyses of transactions. The output of the import is transaction.charge events generated on the profile cards of customers indicated in the imported file.
Requirements
- You need user permissions that grants you access to Simple Imports or/and Automation
- Prepare a
.csvfile that contains the data presented in the table below. If you use different names, you will be able to map them to the correct parameters during the import process.- Each row in the CSV represents one product. If an order contains multiple products, include one row per product and use the same
orderIdon each of those rows. The system groups rows byorderIdand builds a singletransaction.chargeevent with aproductsarray. - All rows sharing the same
orderIdmust be placed consecutively in the file. If rows from the same order are not grouped, the system will generate separate transactions instead of a single one. - Transaction-level fields (such as
revenue,value,source) should be repeated identically on every row belonging to the same order.
- Each row in the CSV represents one product. If an order contains multiple products, include one row per product and use the same
| Column | Required? | Description |
|---|---|---|
client |
Yes | Profile identifier. Accepted values: email, uuid, clientId, or customId. If using email, ensure the correct email format — an invalid format will cause the import to fail. |
orderId |
Yes | ID of the transaction. Sending multiple transactions with the same orderId generates multiple events; use eventSalt if you need to overwrite a transaction instead. |
paymentInfo.method |
Yes | How the transaction was paid (for example, CASH, ONLINE). |
products.finalUnitPrice.amount |
Yes | Final unit price of the item. |
products.finalUnitPrice.currency |
Yes | Currency of the final unit price (for example, USD, EUR). All monetary values in a transaction must use the same currency and be greater than or equal to zero. |
products.quantity |
Yes | Number or quantity of purchased items. |
products.sku |
Yes | SKU of the purchased item. |
revenue.amount |
Yes | Transaction revenue after taxation. Not calculated automatically — you must provide this value by summing finalUnitPrice × quantity for all items in the transaction. |
revenue.currency |
Yes | Currency of the transaction revenue. |
value.amount |
Yes | Transaction amount before taxation. If you only have the post-tax price, set this to the same value as revenue.amount. |
value.currency |
Yes | Currency of the transaction value before taxation. |
source |
Yes | Source of the transaction. Accepted values: POS, WEB_MOBILE, WEB_DESKTOP, MOBILE_APP, MOBILE, DESKTOP. |
recordedAt |
No | Date and time of the transaction. If omitted, the import date is used. See the recordedAt note below for accepted formats. |
discountAmount.amount |
No | Discount applied to the total transaction cost. Must be greater than zero if provided. |
discountAmount.currency |
No | Currency of the discount amount. |
eventSalt |
No | Unique identifier that enables a transaction to be overwritten. If you send a new transaction with the same eventSalt, recordedAt, and profile, it overwrites the original. Must be unique within a workspace. Cannot be added to a transaction after the fact. |
metadata.* |
No | Any custom transaction parameters, passed as nested columns (for example, metadata.promotionCode). To enable automatic redemption of promotionCode and quantityToRedeem, contact Synerise support. |
products.name |
No | Name of the purchased item. |
products.categories |
No | Categories of the item. |
products.image |
No | URL of the item image. |
products.url |
No | URL of the item page. |
products.netUnitPrice.amount |
No | Net unit price of the item. |
products.netUnitPrice.currency |
No | Currency of the net unit price. |
products.tax |
No | Tax rate applied to the item. |
products.regularPrice.amount |
No | Regular (non-discounted) price of the item. |
products.regularPrice.currency |
No | Currency of the regular price. |
products.discountPrice.amount |
No | Discounted price of the item. |
products.discountPrice.currency |
No | Currency of the discounted price. |
products.discountPercent |
No | Discount percentage applied to the item. |
For the full list of accepted values and formats, see the API reference.
File requirements:
- Spaces and special characters in the column headers are not allowed.
.csvfiles must be UTF-8 encoded.- If you don't have a value for an optional field, omit the column entirely rather than leaving the cell empty or setting it to
null.- For numeric or composite fields (for example,
discountAmount.amount,discountAmount.currency), leaving the cell empty while the column is present causes the entire row to fail import. - For custom attributes (for example,
metadata.*), leaving the cell empty while the column is present clears any existing value for that attribute, the same as sendingnull. For Synerise-native attributes, sendingnullresets the attribute to its default value. - If only some rows in your file need a value for an optional field, split them into separate import files: one where the column is fully populated, and one where the column is omitted entirely.
- For numeric or composite fields (for example,
- Maximum file size: 200 MB.
To add the original dates for transactions, include the
recordedAtparameter in ISO 8601 format, otherwise, the transaction will be added with the date of the import. The following formats are supported:- UTC time with a
Zsuffix (for example,2025-10-01T12:02:06Z) - Time with a timezone offset (for example,
2025-10-01T14:02:06+02:00for UTC+2 or2025-10-01T04:02:06-08:00for UTC-8). All times are converted to UTC when saved in the database.
If you send a transaction with a future timestamp, the timestamp is rejected and replaced with the time of import.
- UTC time with a
More information about time formats for the recordedAt parameter can be found in the "Create a transaction" method.
Tips for preparing a CSV file
- Recommended file metacharacters:
- A character that splits columns (delimiter):
, - A character that is used to contain the text (quotation mark):
" - A character (escape character) that changes the default interpretation of a sign or string followed by the escape character:
/
- A character that splits columns (delimiter):
- For more details about parameters and their accepted formats, click here.
Procedure
Selecting the file for import
In this part of the process, you will upload a file from your device.
- Go to
Data Modeling Hub > Imports > New import.
- As the data type for import, select Transactions.
- As the import method, select one of the following options:
Import a local file - To import a single
.csvfile to Synerise.Import in Automation - To import a .
csv,.json,.jsonl, and.xmlfiles and execute periodical imports.- Upload the
.csvfile by using the + Upload file or drop one here field. - Optionally, you can customize the file metacharacters by clicking the arrow down icon.
- From the Delimiter dropdown, select the character that marks the end of a column.
- From the Quotation mark dropdown list, select the characters that contain the text or data type.
- From the Escape character dropdown lists, select the character which changes the default interpretation of a character or a string followed by the escape character.
- To proceed to the next step, click the Next button.
Mapping the columns with parameters in Synerise
In this part of the process, you will connect the columns from the file with their counterparts (the existing parameters) in Synerise. This way, you will point which parameters in Synerise will contain the event information from the imported file.
During mapping, you can:- exclude parameters from the import.
- create new event parameters in Synerise to map the data in the input file to them. Note that all custom parameters will be imported as additional transaction parameters.
Remember that you can't add new columns to the imported file while mapping.
- Next to the file column name, from the dropdown list, select the corresponding parameter in Synerise. Perform this step for all columns in your file.
- To exclude a parameter from import, next to the column name, click this icon:

Result: The icon changes to
- To proceed to the summary of the import, click Next.
Counting revenue
In this part of the process, optionally, you can enable automatic calculation of the revenue which is the multiplication of the item quantity by its price.
- Enable the Calculate revenue option.
- In the Product unit price field, from the dropdown list select the name of the column that contains the price of a single piece of an item.
- Confirm by clicking Next. Result: The summary of the import is displayed.
- After checking the import summary, to start the import, click Run import.
Result: The output of the import istransaction.chargeevents generated on the profile cards of customers indicated in the imported file.
Launching import
After steps described above you'll be redirected to the mapping summary. If it's correct, to launch the import, click Run import.
- Select the method of delivering the file:
- Local File - This option allows you to upload a file from your device.
- SFTP protocol - This option allows you to upload a file from a server using the SFTP protocol.
- HTTPS protocol - This option allows you to upload a file from a server using the HTTPS protocol.
- Amazon S3 - This option allows you to upload a file from Amazon S3 bucket.
- Azure - This option allows you to upload a file from Azure Blob Storage.
- Google Cloud Storage - This option allows you to upload a file from Google Cloud Storage.
- Click Go to import template.
- Define the settings of the Scheduled Run node.
- Depending on the method of delivering the file, configure the settings of Local File or the Get File node that uses HTTP protocol or the Get File node that uses SFTP protocol.
- If the data requires modification, configure the settings of the Data Transformation node. If you have prepared the transformation rules for the data structure of the imported file, select it from the dropdown list. If not, create it from scratch.
You can remove this node if your data doesn't require transformation. - The rest of the nodes in the default template don't require any further configuration.
- If your workflow is ready, click Save & Run.
- Upload the