Documentation Index

Fetch the complete documentation index at: https://docs.restaurant365.com/llms.txt

Use this file to discover all available pages before exploring further.

Restaurant365 OData Connector

Prev Next
   

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:

       
  • Domo

  •    
  • Prophix

  •    
  • Microsoft Excel

  •    
  • PowerBI

  •    
  • Any reporting provider that accepts OData

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:

       
  1. 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

       
  1. 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.

   

This end point does not support the Odata parameters '$select' or '$count'.

SalesDetail

Retrieve sales ticket details (items on ticket).

   

This end point does not support the Odata parameters '$select' or '$count'.

SalesPayment

Retrieve sales payment associated with sales ticket data.

   

This end point does not support the Odata parameters '$select' or '$count'.


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.

email

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.