Partner Integration Technical Documentation
Goals of this Document
This document should outline the technical details of building a Partner Integration that sends data to Tenzo for a joint customer between the partner and Tenzo.
Once the build of the integration is complete, the Tenzo team will be in contact to ask the partner to complete the Partner Integration Certification. This document allows for correct documentation to be completed, shares knowledge of both Tenzo and the partner platform and shares key contacts on both partner and Tenzo so that everyone is informed. It is the official sign off on the technical side of the integration.
Data Delivery
Destination
Data is to be delivered via SFTP.
Within each SFTP folder there will be a 'writeable' folder. The data must be put in this folder.
During initial development and testing phase, the SFTP credentials will be provided by either the Partnerships team, Product Manager of Integrations or Implementation Managers at Tenzo. Tenzo will also provide the Partner with a sandbox account, to allow the Partner to test sending data to Tenzo and checking it against their own platform.
Once the partner has been certified via the Partner Integration Certification, the SFTP credentials will be provided by Implementation Managers or Customer Success Managers at Tenzo.
Naming Requirements and File Type
These should be delivered to the SFTP as CSV files. The name of these files depends on the type of data being sent and must begin with:
"sales_"
"labor_"
- this is actual labour (shifts taken place in the past)"labor_planned_"
- this is scheduled labour (shifts scheduled for the future)"actual_usage_"
- this is the COGS (cost of goods sold)"theoretical_usage_"
- this is the theoretical usage (in theory how much did we use based off of sales)"wastage_"
- wasted food and beverage costs per item"menuitem_costs_"
- cost of the menu items (dish or recipe cost)
If possible, sending one file per location/site is preferable for debugging purposes. However Tenzo can support all locations to be contained within one file.
For example the Partner could send one file for multiple locations:

Example Files
You can find example files in the following way:
Example google sheet here (one CSV per tab)Or you can find specific CSV examples here:
- actual_usage_20240101_locationa.csv
- exchange_rates_20240101_locationa.csv
- labor_20240101_locationa.csv
- labor_planned_20240101_locationa.csv
- menuitem_costs_20240101_locationa.csv.csv
- purchases_20240101_locationa.csv
- sales_20240101_locationa.csv
- social_20240101_locationa.csv
- theoretical_usage_20240101_locationa.csv
- wastage_20240101_locationa.csv
Date Ranges
Tenzo recommends to send different amount of data depending on the type of data. These are:
- Sales: Previous 7 days.
- Labour: Previous 14 days (shifts taken place) and 14 days into the future (scheduled shifts)
- Inventory:
- Purchases, Theoretical Usage, Wastage, Menu Item Costs: Previous 28 days
- Actual Usage: Previous stocktake.
NOTE: Tenzo will overwrite ALL data for the date range that is sent. Tenzo cannot append additional data onto existing data. Therefore, each time data is sent, it must include a complete export of all data for the day(s).
Data Frequency
Frequency
Data should be sent at a minimum frequency of once per day.
Increases in frequency can be discussed on a per integration basis, as it's largely dependent on the type of data being sent.
Timings
Ideally the data is sent between 4am and 6am UK time (GMT in winter, BST in summer). Tenzo will ingest this data within 20 minutes from it being sent.
Data Fields
NOTE: The Tenzo format supports data at both an item and transaction level. Some metrics only make sense at a transaction level. In these cases Tenzo will take the data point from the first item on the transaction. Therefore it is always safest to repeat the transaction level data for every item on the transaction.
e.g. If there is a guest count of 4 on a table, this would be best represented as:

Tenzo would not sum the guest count → 12 in this example, but take the guest count from the 'Burger' row and therefore for the whole transaction Order ID → 1, it would have a guest count of 4.
Sales
Date YYYY-MM-DD
Format: YYYYMMDD
Location Text field
Format: Text field
Order ID Text field
Format: Text field
Employee Name Text field
Format: Text field
Table Number Text field
Format: Text field
Time HHMM
Format: HHMM
Order Type Text field
Format: Text field
Product Item Text field
Format: Text field
Product Category Text field
Format: Text field
Item Price Decimal
Format: Decimal (e.g. 12.50)
Quantity Integer
Format: Integer (e.g. 2)
Net Sales Decimal
Format: Decimal (e.g. 25.00)
Tax Decimal
Format: Decimal (e.g. 2.50)
Gross Sales Decimal
Format: Decimal (e.g. 27.50)
Discount Decimal
Format: Decimal (e.g. 3.00)
Service Charge Decimal
Format: Decimal (e.g. 2.75)
Tips Decimal
Format: Decimal (e.g. 5.00)
Guests Integer
Format: Integer (e.g. 4)
Payment Method Text field
Format: Text field
Labour
Date YYYY-MM-DD
Format: YYYYMMDD
Location Text field
Format: Text field
Employee Name Text field
Format: Text field
Employee ID Text field
Format: Text field
Role Text field
Format: Text field
Shift Start Time HHMM
Format: HHMM
Shift End Time HHMM
Format: HHMM
Hours Worked Decimal
Format: Decimal (e.g. 8.5)
Hourly Rate Decimal
Format: Decimal (e.g. 15.50)
Total Cost Decimal
Format: Decimal (e.g. 131.75)
Inventory
Actual Usage
The supported fields in the "actual_usage"
files are:
Date YYYY-MM-DD
Format: YYYYMMDD
Location Text field
Format: Text field
Item Category Text field
Format: Text field
Item Text field
Format: Text field
Amount Float (Decimal)
Format: Float (Decimal)
Theoretical Usage
The supported fields in the "theoretical_usage"
files are:
Date YYYY-MM-DD
Format: YYYYMMDD
Location Text field
Format: Text field
Item Category Text field
Format: Text field
Item Text field
Format: Text field
Amount Float (Decimal)
Format: Float (Decimal)
Wastage
The supported fields in the "wastage"
files are:
Date YYYY-MM-DD
Format: YYYYMMDD
Location Text field
Format: Text field
Item Category Text field
Format: Text field
Item Text field
Format: Text field
Amount Float (Decimal)
Format: Float (Decimal)
Invoices
Date YYYY-MM-DD
Format: YYYYMMDD
Location Text field
Format: Text field
Item Category Text field
Format: Text field
Item Name Text field
Format: Text field
Supplier Text field
Format: Text field
Unit Text field
Format: Text field
Quantity Decimal
Format: Decimal (e.g. 2.5)
Cost Decimal
Format: Decimal (e.g. 31.25)
Stock Counts
Date YYYY-MM-DD
Format: YYYYMMDD
Location Text field
Format: Text field
Item Category Text field
Format: Text field
Item Name Text field
Format: Text field
Unit Text field
Format: Text field
Quantity Decimal
Format: Decimal (e.g. 2.5)
Data Validation
Tenzo will validate incoming data and notify partners of any issues. Common validation checks include:
- Format validation: Date formats, numeric fields, required fields
- Business logic validation: Negative sales amounts, future dates for historical data
- Data consistency: Location names match expected values
- File naming: Correct file prefixes and format
If validation fails, Tenzo will provide detailed error messages to help partners correct the data.
Testing and Certification
Before going live, partners must complete the Partner Integration Certification process:
- Development Phase: Build integration using sandbox environment
- Testing Phase: Send test data and verify in Tenzo dashboard
- Start Certification: Complete our certification template
- Finalize Certification: Tenzo team reviews and certifies the integration
- Go Live: Production credentials provided and integration activated
FAQ
Tenzo monitors all file uploads and will notify you via email if there are any issues. Common causes include incorrect file naming, invalid data formats, or SFTP connection problems. You can retry uploading the corrected file.
Yes, you can include multiple locations in a single file. However, we recommend sending separate files per location for easier debugging and troubleshooting.
Use the local timezone of each location. If you have locations across multiple timezones, specify the timezone in your data or coordinate with the Tenzo team on the best approach.
Send refunds as negative values in the sales data. Include them in the same file with the original transaction date, or coordinate with Tenzo on your preferred approach for handling refunds.
Contact your Tenzo implementation manager to discuss historical data requirements. We can accommodate larger date ranges for initial setup or data migration purposes.
Yes, Tenzo will overwrite existing data for any date range that you send. Simply include the corrected data for the specific dates you want to update in your next file upload.
Key Contacts
Below are the key contacts for different phases of the partner integration process:
Team | Contact Role | Responsibilities | Contact Information |
---|---|---|---|
Partnerships | Partner Manager | Initial integration discussions, commercial agreements | partnerships@gotenzo.com |
Product | Product Manager - Integrations | Technical requirements, integration scope definition | integrations@gotenzo.com |
Implementation | Implementation Manager | SFTP credentials, testing environment setup, certification | partnerships@gotenzo.com |
Partner Success | Partner Success Manager | Post-certification support, ongoing relationship management | partnerships@gotenzo.com |
Technical Support | Support Engineer | Technical issues, data validation problems, troubleshooting | support@gotenzo.com |