Restaurant365: what Sail sends
sail pos · integrations
Every night, Sail sends Restaurant365 (R365) a set of files for each location: your sales, payments, taxes, labor and the lists R365 needs to read them. This page shows what goes into each file, where each kind of sale ends up, and what Sail deliberately leaves out.
This applies to locations with the Restaurant365 integration turned on in POS › System Setup › Integrations. R365's own column names are shown in code style.
At a glance
| When | Automatically, right after each location's Daily Close. |
| Which day | The business day that was closed, not the calendar date. A check belongs to the Daily Close it was settled in, and a payment to the Daily Close it was taken in. |
| Where | R365's FTP site, in a folder per day: POSExports/YYYYMMDD. |
| File names | File_Company-Location_YYYYMMDD.csv, for example SalesDetail_Harbor-Grill-Downtown_20261001.csv. |
| Re-send or download | Reporting › Exports › Integrations › Restaurant 365. Pick a location and dates, then Execute Export to download one file, or Submit All To R365 to upload every file again, one day at a time. |
Where everything lands
Find the thing you rang up in Sail, then the R365 file it appears in.
| In Sail | R365 file | How it shows up |
|---|---|---|
| On the check | ||
| Items, in a Reporting Group that is included in sales | Sales Detail | One row per item, at its full price |
| Modifiers | Sales Detail | Rows under their item, with their own price |
| Sizes | Sales Detail | A $0 modifier under the item, or part of the item itself (see How items are named) |
| Comps (a Comp Reason) | Sales Detail | A Comp on the item for its full price; the item still shows its price |
| Comps on items in a Reporting Group that is not included in sales | Voids | A void, named after the Comp Reason |
| Item discounts | Sales Detail | A Promo on the item |
| Order discounts | Discounts | One row per discount on the check |
| Voids (a Void Reason) | Voids | One row per voided item, plus its modifiers |
| Charges: service charges, auto-gratuities, delivery fees | Surcharges | One row per charge |
| Taxes | Tax Details | One row per item, discount and charge |
| Returns and negative-price items, in a Reporting Group that is included in sales | Sales Detail | A negative sale. The Refunds file is sent empty. |
| Outside of sales | ||
| Items in a Reporting Group that is not included in sales, such as gift card sales or event deposits | Non-Sales Revenue | One row per item |
| Payouts | Paid In/Outs | A paid out (positive amount) |
| Customer Account Payments (paying down a house account) | Paid In/Outs | A paid in (negative amount) |
| Payments and tips | Payments | One row per payment |
| Labor | ||
| Clock-ins, pay rates, tips | Labor Detail | One row per shift |
| Employees and Job Roles | Employees, Jobs | The lists Labor Detail refers to |
| Lists R365 matches against | ||
| Items, modifiers and sizes | Menu Items | Only what sold that day |
| Tenders | Tenders | All tenders, marked Cash or Non-Cash |
| Tax rates | Tax Definitions | Every tax at the location |
| Customers | House Accounts | Customers on file |
Sales files
Sales Detail
Every check, with its items, modifiers, comps and item discounts. Each check has a header row, then one row per item, with the item's modifiers on the rows beneath it.
CheckNumber | Sail's check ID, a unique number for each check |
TableName | The order or table number shown on the POS |
OpenTime / CloseTime | When the check was started / when its last payment was taken |
RevenueCenterName | The check's Profit Center, or Default if it has none. Each item also carries its own Profit Center. |
EmployeeNumber | The check's server. Each item also carries the employee who rang it in. |
GuestCount | Guest count |
ItemNumber, ItemName | The item's Integration ID and Integration Name (see How items are named) |
ItemCategory | The item's Reporting Group |
Quantity, GrossAmount | Quantity and price, before discounts |
Modifiers_… | Modifier item, quantity (multiplied by the Modifier Type's Integration Quantity) and price |
Comp_… | Comp Reason, full item price, who comped it and when. Modifiers on a comped item are comped with it. |
Promo_… | Item discount name, amount, who applied it and when |
Not in this file: voids, order discounts, non-sales items, Payouts and Customer Account Payments (each has its own file), items marked Exclude From Integration, and modifiers whose Modifier Type is marked Integration Excluded. Order Type (R365's OrderModeName), Day Part and drawer numbers are not sent.
Discounts
Order discounts: discounts applied to the whole check rather than to one item.
CompPromo_CheckNumber | Sail's check ID |
Promo_PromoName | Discount name |
Promo_Amount, Promo_Time | Amount and when it was applied |
Not in this file: item discounts and comps, which travel with their item in Sales Detail. The Comp_… columns are always empty.
Voids
Items removed from a check with a Void Reason, and the modifiers that were on them.
Void_CheckNumber | Sail's check ID |
Void_ItemNumber | The item's Integration ID |
Void_Name | Void Reason |
Void_Amount, Void_Quantity | Item price and quantity |
Void_EmployeeNumber, Void_Time | Who voided it and when |
Void_RevenueCenterName | The item's Profit Center |
Void_Notes | Notes entered on the item |
Comps on non-sales items (a comped event deposit, for example) are sent here as voids, because R365's Non-Sales Revenue file has no place for comps.
Not in this file: comps on regular items (Sales Detail), voided items whose Item Type is anything other than Item (Gift Card Sale, Payout, Customer Account Payment, Ticket Service Fee), and items marked Exclude From Integration. Void_DrawerNumber is blank.
Surcharges
Every Charge on a check: service charges, auto-gratuities, delivery fees and so on. A charge split between guests is sent once per guest's share.
Surcharge_Name | Charge name |
Surcharge_Amount | Amount |
Surcharge_EmployeeNumber, Surcharge_Time | Who added it and when |
Surcharge_RevenueCenterNumber | The charge's Profit Center, or Default |
Not in this file: Day Part (blank).
Tax Details
The tax on each check: one row per item (untaxed items show $0), discount and charge.
Tax_TaxNumber | The tax's number from Tax Definitions. A number ending in -I is tax included in the price. |
Tax_Amount | Tax amount. Discounts reduce tax, so they appear as negative amounts. |
IsInclusive | Whether the tax is included in the price |
Tax_RevenueCenterName | The item's Profit Center; charges always use Default |
Not in this file: tax on voided or comped items, since none is collected.
Refunds
Sent every night with column headings only. Returns and negative-price items in a Reporting Group that is included in sales are reported in Sales Detail as negative sales instead.
Money in and out
Payments
Every payment taken, with its tip.
Payment_TenderNumber | The tender's number from the Tenders file. The tender's name is included alongside it. |
Payment_BaseAmount | Amount paid, not including the tip |
Payment_Tip | Tip on this payment |
Payment_TenderIdentity | Last four digits of the card. Full card numbers are never sent. |
Payment_GuestName | Cardholder name, or the name on the check |
Payment_EmployeeNumber, Payment_Time | Who took the payment and when |
Payment_RevenueCenterName | The check's Profit Center |
Cash handed out for a Payout is taken off each payment made by the same guest on that check, so it isn't counted as a payment. Payments of $0 are left out.
Not in this file: auto-gratuities (they're in Surcharges, so the AutoGratuity columns are blank) and drawer numbers.
Non-Sales Revenue
Items in a Reporting Group with Is Included In Sales turned off, such as gift card sales, event deposits or retail you track separately.
NonSalesRevenue_Name | The item's Integration Name |
NonSalesRevenue_Amount | Price after any item discount |
NonSalesRevenue_Quantity | Quantity |
NonSalesRevenue_DaypartName | The check's Day Part, or Other |
NonSalesRevenue_RevenueCenterName | The item's Profit Center, or Default |
Not in this file: voided or comped non-sales items. Regular items go to Voids; voided or comped gift card sales and ticket service fees are not sent.
Paid In/Outs
Payouts from the drawer, and Customer Account Payments that pay down a house account.
PaidInOutName | The item's Integration Name |
Amount | Payouts are positive (money out); Customer Account Payments are negative (money in) |
AffectsCash | Yes when the check was paid with a tender set to Include In Amount Due, or with a check |
Notes | Notes entered on the item, such as the payout reason |
DaypartName, EmployeeNumber, Time | Day Part, who rang it and when |
Not in this file: voided Payouts and Customer Account Payments. Comped ones are sent at $0.
Labor files
Labor Detail
One row per shift. Each night's file covers the last two weeks of shifts, so a punch corrected after the fact still reaches R365.
EmployeeNumber | The employee's number from the Employees file |
ClockInDate, ClockInTime, ClockOutTime | The punch |
JobCode, JobName | The Job Role worked |
PayRate | Hourly rate for that Job Role |
RegularHours | Regular hours worked. Unpaid breaks are already taken out. |
CreditTips | Tips paid by card, gift card and house account |
DeclaredTips | Cash tips the employee reported |
Sales | The employee's sales for the business day, shown on one of their shifts that day |
Not in this file: overtime hours, salaried employees, charged gratuities, tip-outs given or received, and card tip fees. ShiftNumber is blank, and IsPaidBreak / IsUnpaidBreak are always No.
Employees
Employees who work at the location, have a Job Role there, or clocked in there that day: name, email, phone, address, and whether they're inactive.
Not in this file: middle name, payroll ID and birthdate (blank). PINs are never sent.
Jobs
Every Job Role: its number and name.
Not in this file: default pay rate and description (blank). Pay rates travel per shift in Labor Detail.
Lists R365 matches against
R365 uses these to recognize the numbers in the other files. Sail identifies employees, Job Roles, tenders, taxes and customers by its own internal number, a long code such as 3f2a9c1e-…. Profit Centers are matched by name, so name them the way your R365 revenue centers are named.
Menu Items
Every item and modifier item that sold that day (not your whole menu).
ItemNumber, ItemName | Integration ID and Integration Name |
CategoryName | Reporting Group |
PLU | The item's UPC / barcode |
ItemCost | The item's default price. Sail does not send item cost. |
When Split Out Items By Size is off, every size is also listed, as a $0 item in a category named Size Group followed by the group's name. SKU is blank.
Modifier Groups
Your Size Groups, plus the Item Categories of the modifiers sold in the date range. Used with Include Modifier Category. This file is not part of the nightly upload; download it from the export page when you need it.
Tenders
Every tender: its number, name, and type. A tender whose Payment Type is Cash is sent as Cash; all others are Non-Cash.
Tax Definitions
Every tax at the location, listed twice: once added on top of the price (for example Sales Tax), and once included in the price (Sales (Inc) Tax, with a number ending in -I). Rates are percentages.
House Accounts
Your customers: number, name, address, contact name, phone and email.
How items are named and numbered
R365 recognizes an item by its ItemNumber, so set it up before you go live. Changing it later makes R365 treat the item as new.
- Item number: the item's Integration ID, or Sail's internal number if it's empty. It's sent in lowercase with spaces removed, up to 50 characters. A size sent as a $0 modifier uses its own Integration ID, in lowercase.
- Item name: the Item Category's Integration Item Prefix, then the item's Integration Name (or its regular name if that's empty).
- Location overrides win. An Integration ID, Integration Name or Exclude From Integration set for a location replaces the item's own.
Two switches on the integration change how sizes and modifiers are numbered. Both add the first six characters of an Integration ID, and an underscore, to the front of the item number.
| Example | Item number | Item name |
|---|---|---|
Cheeseburger (Integration ID BURGER), both switches off | burger | Cheeseburger |
Same item, size Large (Integration ID LG), Split Out Items By Size on | lg_burger | Large Cheeseburger |
Bacon modifier (Integration ID BACON) with Modifier Type Add (Integration ID ADD), Split Out Modifiers By Type on | add_bacon | Add Bacon |
| Item Category with Integration Item Prefix LUNCH | (unchanged) | LUNCH Cheeseburger |
Give a size or Modifier Type an Integration ID of [NONE] to leave it off the item number. This suits a "Regular" size, so a regular cheeseburger stays plain burger.
Settings that change what's sent
| Setting | Where | What it does |
|---|---|---|
| Split Out Items By Size | System Setup › Integrations › Restaurant365 | On: each item and size is its own R365 item. Off: the item is sent once, with its size as a $0 modifier. |
| Split Out Modifiers By Type | Same | On: Add Bacon, Extra Bacon and No Bacon become separate R365 items. |
| Include Modifier Category | Same | On: each modifier carries its Item Category as its R365 modifier group. |
| FTP Username / Password | Same | The FTP login R365 gives you. Submit All To R365 appears on the export page once the login is verified. |
| Integration ID / Name | Items, Sizes, Modifier Types | The number and name R365 sees |
| Exclude From Integration | Items | Leaves the item, and its modifiers on checks, out of Sales Detail, Voids and Menu Items |
| Integration Excluded | Modifier Types | Leaves modifiers of that type out of Sales Detail, Voids and Menu Items |
| Integration Quantity | Modifier Types | Multiplies the modifier's quantity, for example 2 for Double |
| Integration Item Prefix | Item Categories | Added in front of the item name |
| Is Included In Sales | Reporting Groups | Off: the group's items go to Non-Sales Revenue instead of Sales Detail |
| Payment Type | Tenders | Cash is sent as Cash; all others as Non-Cash |
| Include In Amount Due | Tenders | Decides AffectsCash on Paid In/Outs |
| Name | Profit Centers | Sent as the R365 revenue center name |
Never sent to R365
- Full card numbers (only the last four digits) and employee PINs
- Order Type, which R365 calls Service Type or Order Mode
- Drawer numbers
- Refunds as their own file: returns are negative sales in Sales Detail
- Overtime hours, salaried employees, charged gratuities, tip-outs and card tip fees
- Employee middle name, payroll ID and birthdate; Job Role pay rate and description
- Item cost and SKU
- Anything marked Exclude From Integration or Integration Excluded, in the files listed above
No Comments