Legacy — planned for deprecation
The R365 API Connector is a legacy REST API. It is read-only and will be deprecated as R365 transitions to the R365 Public API. If you have an existing integration built on this surface, it continues to work. Migrate to the Public API, which offers broader coverage, read/write support, and is the integration surface R365 continues to build on.
Restaurant365 provides an OData connector for accessing your Restaurant365 data from within your OData reporting provider. These endpoints provide near-real-time data (within seconds) on transactions, rather than data from the previous day.
Sales and labor data becomes available via OData only after the Daily Sales Summary is polled.
You can use the following providers with the R365 OData Connector:
Connect to the R365 OData Connector using your R365 user profile. If you receive an authentication error when you attempt to log in, contact R365 Support to start or troubleshoot the connection process.
R365 support assists with connecting to OData and confirming that the API is functioning. R365 support covers the OData connection itself. The applications used to connect to OData are outside that scope.
Review and use the OData documentation for best practices.
How to set up and use the OData Connector - video
Video summary
This video walks through setting up and using the OData Connector to pull raw R365 data into a third-party reporting tool for analysis. It covers three main steps: granting a user the Accounting Clerk or Full Access role with access to all locations, finding the list of available OData endpoints, and connecting from a reporting tool such as Excel. The Excel step includes entering the OData feed URL, authenticating with your database name and username, and loading the queried data.
Best practices
Apply the following practices when retrieving data through the R365 OData endpoints:
Structure queries to pull smaller datasets and make more calls
Some datasets can produce gigabytes of data. For example, retrieving all transaction data at once creates a very large dataset, and transmitting that much data alone can take a long time.
R365 throttles (limits) some endpoints to prevent pulling too much data at one time
When pulling details, get a list of header IDs (Transaction or SalesEmployee), and use those IDs to query the details
Pull data daily to keep data in sync
Use the rowVersion property to identify records that have changed since the last data pull
When pulling historical data for the first time, pull it month by month
For accounts with many locations or large data volumes, pull by location or by week instead.
Authorized users - R365 application
Users with the following default R365 user roles can use the R365 OData Connector:
Accounting Clerk
Full Access
Click here for more information about R365 User Roles.
R365 OData Connector users - provider application
Depending on the size of your team and the needs of your organization, choose one of two approaches for which users access the R365 OData Connector:
Have each user authenticate using their R365 user profile:
Accessible data is limited to the user's R365 Location Access
A user can be deactivated without affecting other users' access
You must make password changes on both R365 and provider platforms
Create a dedicated R365 OData Connector user:
Accessible data includes all locations
You cannot deactivate the user without removing access for all users
You must make password changes on both R365 and provider platforms
With each solution, your users must update their password on each platform. Choose the solution that works best for your organization.
Authentication
Enter OData Connector credentials using the following format: Domain\Username
For example, if your Restaurant365 URL is https://*yourCompany*.restaurant365.com and your username is *r365user**,*then enter:
Username: *yourCompany\r365user*
Password: *Your R365 password*
Connecting the OData Connector via Excel
Users commonly use the OData Connector with Excel. Learn about connecting to the OData Connector via Excel.
Available endpoints
The following Reports are provided by the R365 OData Connector:
Company | List all vendors. |
|---|---|
Employee | List all employees with basic information. |
EntityDeleted | Retrieve a list of records deleted from the system. |
GLAccount | List all GL accounts with details. |
Item | List all Items with categorization. |
JobTitle | List all Job titles with details. |
LaborDetail | Retrieve employee punch times details (clock in/out). |
Location | List all locations. |
PayrollSummary | Retrieve a list of labor records. |
POSEmployee | Retrieve data mapping between R365 Employee records and POS Employee records. |
Transaction | Retrieve a list of financial transactions. |
TransactionDetail | Retrieve a list of financial transaction details at item level. |
SalesEmployee | Retrieve a list of Sales Ticket (header) data, including the employee associated with the ticket.
|
SalesDetail | Retrieve sales ticket details (items on ticket).
|
SalesPayment | Retrieve sales payment associated with sales ticket data.
|
Service metadata (EDMX) document
You can download the metadata by requesting $metadata. This XML-based service document contains the schema of the entity models associated with each available endpoint within the service.
https://odata.restaurant365.net/api/v2/views/$metadata
OData endpoints
Transactions
https://odata.restaurant365.net/api/v2/views/Transaction
Properties | Description |
|---|---|
transactionId | A unique guid identifier for a transaction record. |
locationId | A unique guid identifier of the location where the associating transaction was created. |
locationName | The name of the referencing location. |
date | The imported date and time when the transaction was created in ISO 8601 format. |
transactionNumber | A custom reference associated with the transaction |
name | Name of the transaction. |
type | Type of transaction, for example journal entry or AP Invoice. |
isApproved | 1 is approved, 0 is unapproved. |
companyId | A unique guid identifier for the associating company, if any. |
createdBy | The R365 User Name for the User who created the transaction. |
createdOn | The date and time when the transaction was created in ISO 8601 format. |
modifiedBy | The R365 User Name for the User who modified the transaction last. |
modifiedOn | The date and time when the transaction was last modified in ISO 8601 format. |
TransactionDetails
https://odata.restaurant365.net/api/v2/views/TransactionDetail
Transaction Details can be joined to the Transaction report using the *transactionId*
Properties | Description |
|---|---|
transactionDetailAutoId | A item-level unique guid identifier for a transaction details record. |
transactionDetailId | A unique guid identifier linked a collection of transaction detail records. |
transactionId | A unique guid identifier linked to a transaction record. |
locationId | A unique guid identifier of the Location where the associating transaction was created. |
glAccountId | A unique guid identifier of the GL account mapped to the line item. |
item | A unique guid identifier of the item in this transaction. |
credit | The credit amount in the transaction. |
debit | The debit amount in the transaction. |
amount | The total balance in the transaction. |
quantity | The quantity of item in the transaction. |
adjustment | The adjustment amount in the transaction. |
unitOfMeasureName | Describe the unit of measure for the item. |
comment | Description or comment of the item. |
createdBy | A unique guid identifier for the User who created the transaction. |
createdOn | The date and time when the transaction was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the transaction last. |
modifiedOn | The date and time when the transaction was last modified in ISO 8601 format. |
Companies
https://odata.restaurant365.net/api/v2/views/Company
Companies can be joined to the Transaction report using *companyId*
Properties | Description |
|---|---|
companyId | A unique guid identifier for a Vendor's company. |
name | The name of the company. |
companyNumber | The company number for optional identification purposes. |
comment | Notes or comments in the company record. |
createdBy | A unique guid identifier for the User who created the company. |
createdOn | The date and time when the company was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the company last. |
modifiedOn | The date and time when the company was last modified in ISO 8601 format. |
Items
https://odata.restaurant365.net/api/v2/views/Item
Items can be joined to the Transaction Detail report on the *itemId*column to view more information regarding the item on the transaction detail
Properties | Description |
|---|---|
itemId | A unique guid identifier for the item. |
itemNumber | The name or number of the business for optional identification purposes. |
category1 | Item category name 1. |
category2 | Item category name 2. |
category3 | Item category name 3. |
createdBy | A unique guid identifier for the User who created the item. |
createdOn | The date and time when the item was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the item last. |
modifiedOn | The date and time when the item was last modified in ISO 8601 format. |
Locations
https://odata.restaurant365.net/api/v2/views/Location
Locationscan be joined to the Transactionor Transaction Detailreport using *locationId*
Properties | Description |
|---|---|
locationId | A unique guid identifier for a location. |
name | The name of the location. |
locationNumber | The name or number of the location as an optional identification reference. |
legalEntityId | A unique guid identifier for the legal entity associated with this location. |
legalEntityNumber | The number of the legal entity. |
createdBy | A unique guid identifier for the User who created the location. |
createdOn | The date and time when the Location was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the location last. |
modifiedOn | The date and time when the location was last modified in ISO 8601 format. |
GLAccounts
https://odata.restaurant365.net/api/v2/views/GlAccount
GL Accountdata can be joined with the Transaction Detail report on *glAccountAutoId*to see the GL Account associated with a transaction detail record
Properties | Description |
|---|---|
glAccountAutoId | A unique numeric identifier for a GL account. |
glAccountId | A unique guid identifier for a GL account. |
locationId | A reference identifier to a Location associated with the GL account. |
locationNumber | The Location number associated with the GL account. |
locationName | The Location name associated with the GL account. |
legalEntityId | A guid identifier of the legal entity associated with this GL account. |
legalEntityNumber | The number of the legal entity. |
legalEntityName | The name of the legal entity. |
name | The name of the GL account. |
glAccountNumber | The GL account number. |
glTypeClass | A number class type for this GL account. |
glType | The GL account type. |
operationalCategory | The Operational category for this GL account. |
createdBy | A unique guid identifier for the User who created the GL account. |
createdOn | The date and time when the GL account was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the GL account last. |
modifiedOn | The date and time when the GL account was last modified in ISO 8601 format. |
Employee
https://odata.restaurant365.net/api/v2/views/Employee
Using the *employeeId*field, Employees can be joined to Labor Detail through the *employee_ID*field
Using the *employeeId*field, Employeescan be joined to POS Employeedata through *employee_ID*field
Properties | Description |
|---|---|
employeeId | A unique guid identifier for an Employee. |
fullName | Full name of the Employee. |
address1 | The Employee's address line 1. |
address2 | The Employee's address line 2. |
allowTextMessaging | Indicates whether the Employee allows text messaging. |
birthdayDay | The day of the Employee's birthday. |
birthdayMonth | The month of the Employee's birthday. |
city | The Employee's city of residence. |
firstName | The Employee's first name. |
hireDate | The Employee's hire date. |
lastName | The Employee's last name. |
middleName | The Employee's middle name. |
mobilePhone | The Employee's mobile phone number. |
multipleLocations | Indicates whether the employee works at multiple Locations. |
payrollID | The Employee's payroll ID. |
phoneNumber | The Employee's phone number. |
posid | The Employee's POS ID. |
state | The Employee's state of residence. |
zipCode | The Employee's zip code. |
primaryLocation_id | The Employee's primary work Location. |
inactive | The Employee's status. |
The Employee's email address. |
|
birthday | The Employee's birthday. |
createdBy | A unique guid identifier for the User who created the employee record. |
createdOn | The date and time when the Employee record was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the Employee record last. |
modifiedOn | The date and time when the Employee record was last modified in ISO 8601 format. |
JobTitle
https://odata.restaurant365.net/api/v2/views/JobTitle
Using the *JobTitleID*field, Job Titles can be joined to Labor Detailthrough *JobTitle_ID*
Using the *glAccount_ID*field, Job Titles can be joined to GL Accountsthrough *glAccountID*
Properties | Description |
|---|---|
jobTitleId | A unique guid identifier for a Job title record. |
name | The title of the Job. |
description | The description of the Job. |
jobCode | The Job code associated with the Job. |
payRate | The pay rate associated with the Job. |
payRate_Base | The base pay rate associated with the Job. |
posid | The Job title's POS ID. |
glAccount_Id | The GL Account associated with the Job. |
location_Id | The Location associated with the Job. |
excludeFromSchedule | Indicates whether to exclude Job from scheduling. |
excludeFromPOSImport | Indicates whether to exclude Job from POS import. |
createdBy | A unique guid identifier for the User who created the Job title. |
createdOn | The date and time when the Job was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the Job title last. |
modifiedOn | The date and time when the Job title was last modified in ISO 8601 format. |
LaborDetail
https://odata.restaurant365.net/api/v2/views/LaborDetail
Using the *employee_ID*field, Labor Detailcan be joined to Employeethrough the *employeeID*field
Using the *JobTitle_ID*field, Labor Detail can be joined to Job Titlethrough the *JobTitleID*field
Using the *location_Id*field, Labor Detailcan be joined to Location through *locationID*field
Properties | Description |
|---|---|
laborId | A unique guid identifier for a labor detail record. |
labor | The name of the labor detail record. |
dateWorked | The date and time of the work day. |
dailysalessummaryid | A reference to the Daily Sales Summary this data is associated with. If a Daily Sales Summary is deleted in R365, use this reference to find related records that need to be resynced and repolled for updated information. |
endTime | The date and time when the shift ends. |
hours | The total hours worked. |
payRate | The Employee's pay rate. |
payrollStatus | The Employee's payroll status. |
startTime | The date and time when the shift starts. |
total | The total amount earned based on pay rate and hours. |
employee_ID | Identifier of the Employee associated with this labor detail. |
employeeJobTitle_ID | Identifier of the mapping between Employee and Job title. |
jobTitle_ID | Identifier of the Job title associated with this labor detail. |
location_ID | Identifier of the Location associated with this labor detail. |
cateringEvent | Indicates whether the labor is associated with a Catering event. |
employee | The Employee's full name. |
payrollID | The Payroll ID associated with this labor detail. |
jobTitle | The Job title associated with this labor detail. |
dateWorkedDateText | The date and time of the work day as string. |
location | The Location associated with this labor detail. |
createdBy | A unique guid identifier for the User who created the labor detail. |
createdOn | The date and time when the labor detail was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the labor detail last. |
modifiedOn | The date and time when the labor detail was last modified in ISO 8601 format. |
POS Employee
https://odata.restaurant365.net/api/v2/views/POSEmployee
Using the *employee_id*field, POS Employees can be joined to Employeedata through *employeeId*field
Properties | Description |
|---|---|
posEmployeeId | A unique guid identifier for this mapping record. |
fullName | The Employee's full name. |
posid | The Employee's POS ID. |
location_id | Identifier of the Location associated with this record. |
employee_id | Identifier of the Employee associated with this record. |
createdBy | A unique guid identifier for the User who created the record. |
createdOn | The date and time when the record was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the record last. |
modifiedOn | The date and time when the record was last modified in ISO 8601 format. |
SalesEmployee
https://odata.restaurant365.net/api/v2/views/SalesEmployee
Sales data endpoints handle a high volume of data. To manage this, R365 limits the amount of data you can pull in a single call. You can retrieve up to 31 days (one month) of sales data per request. This limit does not affect daily pulls, but for historical data pulls, plan your requests accordingly. If your request exceeds the limit, the system returns this error: 'The filter exceeds the date limit of 31 days, please limit your date range and try again.' Adjust your request parameters and try again.
This end point does not support the Odata parameters '$select' or '$count'.
Using the *location*field, SalesEmployee data can be linked to Location data through the *locationId*field.
Using the *server*field, SalesEmployeedata can be linked to Employeedata through the *employeeID*field.
Properties | Description |
|---|---|
salesId | A unique guid identifier for a salesEmployee (sales ticket) record. |
receiptNumber | Receipt number text from the POS. |
checkNumber | Ticket identifying value from the POS. |
comment | Comment text on the ticket. |
date | The date and time when the order was taken in ISO 8601 format. |
dayOfWeek | Day of the week on which the order was taken. |
dayPart | Part of the day (as defined on the related location) that the order was taken. |
netSales | Total sales less discounts. |
numberOfGuests | Number of Guests notated on the ticket. |
orderHour | Hour of the day that the order was taken. |
salesAmount | Total sales amount, not including tax or tip. |
taxAmount | Amount of tax on the ticket. |
tipAmount | Amount tipped on the ticket. |
totalAmount | Total of all items sold. |
totalPayment | Total payment amount applied to the ticket. |
void | Used if the entire ticket was voided. |
server | Name of the employee/server/cashier that processed (or was responsible for) the ticket. |
location | A unique guid identifier for the Location where the ticket was generated and fulfilled. |
grossSales | Total sales, without gift cards redeemed included. |
dailysalessummaryid | A reference to the Daily Sales Summary this data is associated with. If a Daily Sales Summary is deleted in R365, use this reference to find related records that need to be resynced and repolled for updated information. |
createdBy | A unique guid identifier for the User who created the record. |
createdOn | The date and time when the record was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the record last. |
modifiedOn | The date and time when the record was last modified in ISO 8601 format. |
serviceType | Service Type/Order Mode. Option of how to receive an order: Dine In, Take Out, Delivery, etc. |
SalesDetail
Sales data endpoints handle a high volume of data. To manage this, R365 limits the amount of data you can pull in a single call. You can retrieve up to 31 days (one month) of sales data per request. This limit does not affect daily pulls, but for historical data pulls, plan your requests accordingly. If your request exceeds the limit, the system returns this error: "The filter exceeds the date limit of 31 days, please limit your date range and try again." Adjust your request parameters and try again.
https://odata.restaurant365.net/api/v2/views/SalesDetail
This end point does not support the Odata parameters '$select' or '$count'.
Using the *location*field, SalesEmployee data can be linked to Location data through the *locationId*field.
Using the *salesID*field, SalesDetaildata can be linked to SalesEmployeedata through the *salesID*field.
Properties | Description |
|---|---|
salesdetailID | A unique guid identifier for the sales ticket (SalesEmployee) record. |
menuitem | Name of the menu item ordered. |
amount | Extended amount charged for the menu item. |
customerPOSText | Comment text from the customer's POS (if provided by the POS). |
date | The date and time when the item was added in ISO 8601 format. |
quantity | Quantity of the given menu item ordered. |
void | Boolean indicating whether the menu item was voided or not. |
company | Currently only provides an empty guid '00000000-0000-0000-0000-000000000000', is under considerations for future implementation. |
location | A unique guid identifier for the Location where the ticket was generated and fulfilled. |
salesID | A unique guid identifier for a salesEmployee (sales ticket) record. |
salesAccount | GL Account Name that the item is associated with. |
category | Name of sales category the menu item is associated with. |
houseAccountTransaction | Currently is empty but is under consideration for future implementation. |
dailysalessummaryid | A reference to the Daily Sales Summary this data is associated with. If a Daily Sales Summary is deleted in R365, use this reference to find related records that need to be resynced and repolled for updated information. |
transactionDetailID | Currently is empty but is under consideration for future implementation. |
cateringEvent | Currently is empty but is under consideration for future implementation. |
createdBy | A unique guid identifier for the User who created the record. |
createdOn | The date and time when the record was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the record last. |
modifiedOn | The date and time when the record was last modified in ISO 8601 format. |
SalesPayment
Sales data endpoints handle a high volume of data. To manage this, R365 limits the amount of data you can pull in a single call. You can retrieve up to 31 days (one month) of sales data per request. This limit does not affect daily pulls, but for historical data pulls, plan your requests accordingly. If your request exceeds the limit, the system returns this error: "The filter exceeds the date limit of 31 days, please limit your date range and try again." Adjust your request parameters and try again.
https://odata.restaurant365.net/api/v2/views/SalesPayment
This end point does not support the Odata parameters '$select' or '$count'.
Using the *location*field, SalesEmployee data can be linked to Location data through the *locationId*field.
Using the *salesID*field, SalesDetaildata can be linked to SalesEmployeedata through the *employeeID*field.
Properties | Description |
|---|---|
salespaymentId | A unique guid identifier for a salespayment record. |
name | Name of payment as provided by the POS. |
amount | Payment Amount. |
comment | Comment provided on the payment from the POS. |
customerPOSText | Text from the POS. |
date | The date and time the payment was recorded, in ISO 8601 format. |
dailysalessummaryid | A reference to the Daily Sales Summary this data is associated with. If a Daily Sales Summary is deleted in R365, use this reference to find related records that need to be resynced and repolled for updated information. |
isException | Boolean indicating whether the payment is an exception or not. |
missingreceipt | Boolean indicating whether the receipt is missing or not. |
company | Currently on provides an empty guid '00000000-0000-0000-0000-000000000000', is under consideration for future implementation. |
location | A unique guid identifier for the Location where the ticket was generated and fulfilled. |
paymenttype | Name of the type of payment. |
salesID | A unique guid identifier for a salesEmployee (sales ticket) record. |
houseAccountTransaction | Currently is empty but is under consideration for future implementation. |
transactionDetailID | Currently is empty but is under consideration for future implementation. |
cateringEvent | Currently is empty but is under consideration for future implementation. |
exclude | Boolean indicating whether or not the payment was excluded. |
createdBy | A unique guid identifier for the User who created the record. |
createdOn | The date and time when the record was created in ISO 8601 format. |
modifiedBy | A unique guid identifier for the User who modified the record last. |
modifiedOn | The date and time when the record was last modified in ISO 8601 format. |
Entity Deleted
https://odata.restaurant365.net/api/v2/views/EntityDeleted
Using the *entityId*field, EntityDeleted can be joined to TransactionDetaildata through *entityId*field where *entityName*is TransactionDetail
Properties | Description |
|---|---|
entityId | A unique guid identifier for this record. |
entityName | The name of the entity type. |
deletedOn | The date and time when the record was deleted from the system. |
rowVersion | A unique guid identifier to represent the version of the rec. |
Data filtering & querying
R365 uses standard OData calls to perform Data Filtering and Querying. The following OData query options are supported:
Option | Description |
|---|---|
$filter | Filters the results, based on the Boolean condition. |
$orderby | Sorts the results, ascending by default, use desc for descending order. |
$select | Selects which properties to include in the response. |
$skip | Skips the first n results. |
$top | Returns only the first n results. |
Examples
Transaction
Retrieve transactions created on or after the specified date
```
https://odata.restaurant365.net/api/v2/views/Transaction?$filter=date ge 2019-09-01T00:00:00Z
```
Retrieve transactions created before the specified date
```
https://odata.restaurant365.net/api/v2/views/Transaction?$filter=date lt 2019-12-15T00:00:00Z
```
Retrieve transactions created on the specified date
```
https://odata.restaurant365.net/api/v2/views/Transaction?$filter=date eq 2019-08-28T00:00:00Z
```
Retrieve transactions between a date range
```
https://odata.restaurant365.net/api/v2/views/Transaction?$filter=date ge 2019-03-26T00:00:00Z and date lt 2019-04-01T00:00:00Z
```
Retrieve a Location and name of a transaction by transaction ID
```
https://odata.restaurant365.net/api/v2/views/Transaction?$select=locationId,locationName,name&$filter=transactionId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
Retrieve transaction details by transaction ID
```
https://odata.restaurant365.net/api/v2/views/TransactionDetail?$filter=transactionId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
Retrieve transaction details with zero balance
```
https://odata.restaurant365.net/api/v2/views/TransactionDetail?$filter=amount eq 0
```
Retrieve transaction details with adjustments and sort results by descending
```
https://odata.restaurant365.net/api/v2/views/TransactionDetail?$filter=adjustment ne 0&$orderby=adjustment desc
```
Retrieve transactions by Location ID, sort result by type and date
```
https://odata.restaurant365.net/api/v2/views/Transaction?$filter=locationId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&$orderby=type, date
```
Retrieve the last 5 transactions on the specified date
```
https://odata.restaurant365.net/api/v2/views/Transaction?$filter=date eq 2019-03-26T00:00:00Z&$orderby=createdOn desc&$top=5
```
Company
Retrieve a list of companies with the names that begin with 'C'
```
https://odata.restaurant365.net/api/v2/views/Company?$filter=startswith(name,'C')
```
Retrieve a list of companies with the names that end with 'Inc'
```
https://odata.restaurant365.net/api/v2/views/Company?$filter=endswith(name,'Inc')
```
Retrieve a list of companies with the names that contain the word 'Food'
```
https://odata.restaurant365.net/api/v2/views/Company?$filter=contains(name,'food')
```
Get the last company created in the system
```
https://odata.restaurant365.net/api/v2/views/Company?$orderby=createdOn desc&$top=1
```
Item
Retrieve a list of items in the 'Food & Beverage' category
```
https://odata.restaurant365.net/api/v2/views/Item?$filter=category1 eq 'Food %26 Beverage'
```
Retrieve item(s) by item number 'ABC123'
```
https://odata.restaurant365.net/api/v2/views/Item?$filter=itemNumber eq 'ABC123'
```
Retrieve an item by a specified item ID
```
https://odata.restaurant365.net/api/v2/views/Item?$filter=itemId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
Location
Get a Location by a specified Location ID
```
https://odata.restaurant365.net/api/v2/views/Location?$filter=locationId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
Get Location(s) by Location number
```
https://odata.restaurant365.net/api/v2/views/Location?$filter=locationNumber eq '1234'
```
Get a list of Locations by a specified Legal Entity number
```
https://odata.restaurant365.net/api/v2/views/Location?$filter=legalEntityNumber eq 'A999'
```
Generic
Get a list of Locations with the names that contain the word 'Food'
```
https://odata.restaurant365.net/api/v2/views/Location?$filter=contains(name, 'Food')
```
Generic
GL Account
Get GL Account(s) by GL Account number
```
https://odata.restaurant365.net/api/v2/views/GLAccount?$filter=glAccountNumber eq '1234'
```
Generic
Get GL Account(s) by Location ID
```
https://odata.restaurant365.net/api/v2/views/GLAccount?$filter=locationId eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
Generic
Get GL Account(s) by GL Type and Location
```
https://odata.restaurant365.net/api/v2/views/GLAccount?$filter=glType eq 'Current Asset' and locationName eq 'My Cafe'
```
Get Legal Entity names and numbers by a specified GL Account numeric ID
```
https://odata.restaurant365.net/api/v2/views/GLAccount?$filter=glAccountAutoId eq 134&$select=legalentityname,legalentitynumber,legalentityid
```
Employee
Get Employees by full name
```
https://odata.restaurant365.net/api/v2/views/Employee?$filter=fullName eq 'John Smith'
```
Get Employees who allow text messaging
```
https://odata.restaurant365.net/api/v2/views/Employee?$filter=allowTextMessaging eq true
```
Get Employees having a specified Location as their primary work Location
```
https://odata.restaurant365.net/api/v2/views/Employee?$filter=primaryLocation_id eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
Get active Employees who live in Chicago
```
https://odata.restaurant365.net/api/v2/views/Employee?$filter=city eq 'Chicago' and inactive eq false
```
Labor
Get labor details for a specified Employee by ID on a specified work day
```
https://odata.restaurant365.net/api/v2/views/LaborDetail?$filter=dateWorked eq 2019-01-08T00:00:00Z and employee_Id eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx
```
Get an Employee's total hours worked on a specified work day
```
https://odata.restaurant365.net/api/v2/views/LaborDetail?$filter=dateWorked eq 2019-01-08T00:00:00Z and employee_Id eq xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx&$select=hours
```
Get all punches within a specified time range on a specified work day
```
https://odata.restaurant365.net/api/v2/views/LaborDetail?$filter=dateWorked eq 2019-01-08T00:00:00Z and startTime ge 2019-01-08T06:00:00Z and startTime lt 2019-01-08T12:00:00Z
```
Get all labor details from a specified date where Employees made less than a specified amount
```
https://odata.restaurant365.net/api/v2/views/LaborDetail?$filter=total le 50.00 and dateWorked eq 2019-04-23T00:00:00Z
```
SalesEmployee
Please note that queries to sales endpoints require date parameters that retrieve data up to a total range of 31 days.
Get IDs for all sale tickets on a specified date range
```
https://odata.restaurant365.net/api/v2/views/SalesEmployee?$filter=date ge 2020-06-23T00:00:00Z and date lt 2020-06-24T00:00:00Z
```
Get all sale tickets from the previous day (where the previous day was 2020-06-23)
```
https://odata.restaurant365.net/api/v2/views/SalesEmployee?$filter=modifiedOn ge 2020-06-23T00:00:00Z
```
SalesDetail
Get sales details for all records from a specified location in a specified date range, with record count
```
https://odata.restaurant365.net/api/v2/views/SalesDetail?$filter=location eq(a46e44dc-5c80-481a-8151-0d76bc3fefe6) and date ge 2020-06-21T00:00:00Z and date le 2020-06-28T00:00:00Z&$count=true
```
Get sales details from a specified sales tickets (SalesEmployee), with record count
```
https://odata.restaurant365.net/api/v2/views/SalesDetail?$count=true&$filter=salesID eq(321349be-9b04-eb11-a82c-000d3a92ad2e)
```
SalesPayment
Get sales payment data for the previous day (where the previous day was 2020-09-22)
```
https://odata.restaurant365.net/api/v2/views/SalesPayment?$filter=modifiedon ge 2020-09-22T00:00:00Z
```
Get sales payments from a specified sales ticket (SalesEmployee), with record count
```
https://odata.restaurant365.net/api/v2/views/SalesPayment?$count=true&$filter=salesID eq(321349be-9b04-eb11-a82c-000d3a92ad2e)
```
EntityDeleted
Get IDs for all Transaction Details deleted on a specified deletion date
```
https://odata.restaurant365.net/api/v2/views/EntityDeleted?$filter=deletedOn eq 2019-01-08T00:00:00Z and entityName eq 'TransactionDetail'
```
Postman Examples
You can download the Postman Examples from the attachment below.
:::attachment
::file R365 OData v2 - Postman Examples_collection
::url https://cdn.us.document360.io/5c9d1111-0c69-4e96-8910-d7f2750fdc9d/Images/Documentation/R365 OData v2 - Postman Examples_collection.json
:::
FAQ
Why am I getting an authentication error when connecting to OData?
Enter OData credentials in `Domain\Username` format — for example, if your R365 URL is `https://yourcompany.restaurant365.com` and your username is `r365user`, enter `yourcompany\r365user` as the username.
Entering the username alone without the domain prefix is the most common cause of authentication errors. If the correct format does not resolve the issue, contact R365 Support to troubleshoot the connection.
Why isn't my sales data showing up in real time?
OData transaction data is near real-time (within seconds). Sales and labor data becomes available via OData after each Daily Sales Summary poll completes.
I am getting a "filter exceeds the date limit of 31 days" error — how do I fix it?
R365 caps the SalesEmployee, SalesDetail, and SalesPayment endpoints at 31 days per request. Break your query into month-by-month requests to stay within the limit. For initial historical data loads with many locations, pulling by week or by location may be necessary to keep response times manageable.
Should I use individual user credentials or a dedicated OData connector user?
It depends on your team's security needs. Individual credentials limit each user to their assigned Location Access. Deactivating one user does not affect other users' access, but you must update your password in both R365 and the reporting provider. A dedicated connector user provides access to all locations. However, deactivating it removes access for everyone using that credential. Choose the approach that best fits your organization's access control requirements.