Skip to main content

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

WhenAutomatically, right after each location's Daily Close.
Which dayThe 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.
WhereR365's FTP site, in a folder per day: POSExports/YYYYMMDD.
File namesFile_Company-Location_YYYYMMDD.csv, for example SalesDetail_Harbor-Grill-Downtown_20261001.csv.
Re-send or downloadReporting › 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 salesSales DetailOne row per item, at its full price
ModifiersSales DetailRows under their item, with their own price
SizesSales DetailA $0 modifier under the item, or part of the item itself (see How items are named)
Comps (a Comp Reason)Sales DetailA 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 salesVoidsA void, named after the Comp Reason
Item discountsSales DetailA Promo on the item
Order discountsDiscountsOne row per discount on the check
Voids (a Void Reason)VoidsOne row per voided item, plus its modifiers
Charges: service charges, auto-gratuities, delivery feesSurchargesOne row per charge
TaxesTax DetailsOne row per item, discount and charge
Returns and negative-price items, in a Reporting Group that is included in salesSales DetailA 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 depositsNon-Sales RevenueOne row per item
PayoutsPaid In/OutsA paid out (positive amount)
Customer Account Payments (paying down a house account)Paid In/OutsA paid in (negative amount)
Payments and tipsPaymentsOne row per payment
Labor
Clock-ins, pay rates, tipsLabor DetailOne row per shift
Employees and Job RolesEmployees, JobsThe lists Labor Detail refers to
Lists R365 matches against
Items, modifiers and sizesMenu ItemsOnly what sold that day
TendersTendersAll tenders, marked Cash or Non-Cash
Tax ratesTax DefinitionsEvery tax at the location
CustomersHouse AccountsCustomers 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.

CheckNumberSail's check ID, a unique number for each check
TableNameThe order or table number shown on the POS
OpenTime / CloseTimeWhen the check was started / when its last payment was taken
RevenueCenterNameThe check's Profit Center, or Default if it has none. Each item also carries its own Profit Center.
EmployeeNumberThe check's server. Each item also carries the employee who rang it in.
GuestCountGuest count
ItemNumber, ItemNameThe item's Integration ID and Integration Name (see How items are named)
ItemCategoryThe item's Reporting Group
Quantity, GrossAmountQuantity 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_CheckNumberSail's check ID
Promo_PromoNameDiscount name
Promo_Amount, Promo_TimeAmount 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_CheckNumberSail's check ID
Void_ItemNumberThe item's Integration ID
Void_NameVoid Reason
Void_Amount, Void_QuantityItem price and quantity
Void_EmployeeNumber, Void_TimeWho voided it and when
Void_RevenueCenterNameThe item's Profit Center
Void_NotesNotes 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_NameCharge name
Surcharge_AmountAmount
Surcharge_EmployeeNumber, Surcharge_TimeWho added it and when
Surcharge_RevenueCenterNumberThe 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_TaxNumberThe tax's number from Tax Definitions. A number ending in -I is tax included in the price.
Tax_AmountTax amount. Discounts reduce tax, so they appear as negative amounts.
IsInclusiveWhether the tax is included in the price
Tax_RevenueCenterNameThe 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_TenderNumberThe tender's number from the Tenders file. The tender's name is included alongside it.
Payment_BaseAmountAmount paid, not including the tip
Payment_TipTip on this payment
Payment_TenderIdentityLast four digits of the card. Full card numbers are never sent.
Payment_GuestNameCardholder name, or the name on the check
Payment_EmployeeNumber, Payment_TimeWho took the payment and when
Payment_RevenueCenterNameThe 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_NameThe item's Integration Name
NonSalesRevenue_AmountPrice after any item discount
NonSalesRevenue_QuantityQuantity
NonSalesRevenue_DaypartNameThe check's Day Part, or Other
NonSalesRevenue_RevenueCenterNameThe 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.

PaidInOutNameThe item's Integration Name
AmountPayouts are positive (money out); Customer Account Payments are negative (money in)
AffectsCashYes when the check was paid with a tender set to Include In Amount Due, or with a check
NotesNotes entered on the item, such as the payout reason
DaypartName, EmployeeNumber, TimeDay 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.

EmployeeNumberThe employee's number from the Employees file
ClockInDate, ClockInTime, ClockOutTimeThe punch
JobCode, JobNameThe Job Role worked
PayRateHourly rate for that Job Role
RegularHoursRegular hours worked. Unpaid breaks are already taken out.
CreditTipsTips paid by card, gift card and house account
DeclaredTipsCash tips the employee reported
SalesThe 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, ItemNameIntegration ID and Integration Name
CategoryNameReporting Group
PLUThe item's UPC / barcode
ItemCostThe 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 offburgerCheeseburger
Same item, size Large (Integration ID LG), Split Out Items By Size onlg_burgerLarge Cheeseburger
Bacon modifier (Integration ID BACON) with Modifier Type Add (Integration ID ADD), Split Out Modifiers By Type onadd_baconAdd 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 SizeSystem Setup › Integrations › Restaurant365On: 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 TypeSameOn: Add Bacon, Extra Bacon and No Bacon become separate R365 items.
Include Modifier CategorySameOn: each modifier carries its Item Category as its R365 modifier group.
FTP Username / PasswordSameThe FTP login R365 gives you. Submit All To R365 appears on the export page once the login is verified.
Integration ID / NameItems, Sizes, Modifier TypesThe number and name R365 sees
Exclude From IntegrationItemsLeaves the item, and its modifiers on checks, out of Sales Detail, Voids and Menu Items
Integration ExcludedModifier TypesLeaves modifiers of that type out of Sales Detail, Voids and Menu Items
Integration QuantityModifier TypesMultiplies the modifier's quantity, for example 2 for Double
Integration Item PrefixItem CategoriesAdded in front of the item name
Is Included In SalesReporting GroupsOff: the group's items go to Non-Sales Revenue instead of Sales Detail
Payment TypeTendersCash is sent as Cash; all others as Non-Cash
Include In Amount DueTendersDecides AffectsCash on Paid In/Outs
NameProfit CentersSent 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