OAuth 2.0 client credentials token management.
Tote Online Ordering API (1.0.0)- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
REST API for 3rd party developers building online ordering integrations with Tote POS convenience stores and fuel stations.
The Tote Online Ordering API enables partners to:
- Authenticate via OAuth 2.0 client credentials
- Browse store locations and business hours
- Retrieve full menus with nested modifier groups
- Create and manage shopping carts
- Submit orders with split payment support
- Track order fulfillment status
- Subscribe to webhook events for real-time updates
- Check item availability and inventory
The server URLs below are placeholders. Your actual API base URL, client ID, and client secret are provided during partner onboarding. Contact developer@totepos.com to get started.
Path parameters use snake_case. JSON response fields use snake_case. Schema names use PascalCase. Enum values use SCREAMING_SNAKE_CASE.
Authentication- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Locations- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Store locations, hours, and capabilities.
Menus- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Menu categories, items, modifier groups, and pricing.
Get the full menu for a location
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Request
Returns the complete menu for a location, including all categories, items, and nested modifier groups.
Menu structure:
- A menu contains categories (e.g., "Deli & Sandwiches", "Beverages")
- Each category contains items (e.g., "Build Your Own Sub Sandwich")
- Each item may have modifier groups (e.g., "Bread Choice", "Protein")
- Each modifier group contains modifiers (e.g., "White", "Wheat")
- Modifiers can have nested modifier groups (up to 3 levels deep)
Caching: Use the version_hash field to detect menu changes. For lightweight change detection without downloading the full menu, use the GET /locations/{location_id}/menu/metadata endpoint.
Response size: Menu responses can be large (100KB+). Cache aggressively and use the metadata endpoint for polling.
- Mock serverhttps://developers.tote.ai/_mock/online-ordering/spec/openapi/locations/{location_id}/menu
- Production (placeholder -- use your assigned base URL)https://api.tote.ai/v1/online-ordering/locations/{location_id}/menu
- Sandbox (placeholder -- use your assigned base URL)https://sandbox.api.tote.ai/v1/online-ordering/locations/{location_id}/menu
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developers.tote.ai/_mock/online-ordering/spec/openapi/locations/{location_id}/menu' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'The complete menu for the location.
ISO 8601 timestamp of the last menu modification (UTC). Use this with the version_hash for cache invalidation.
Opaque hash representing the current menu version. Compare against your cached hash to detect changes without fetching the full menu. Use the GET /locations/{location_id}/menu/metadata endpoint for lightweight change detection.
Menu categories with their items and modifier groups.
Optional description of the category.
Display order for this category. Lower values appear first. Use this to render categories in the intended order.
Menu items in this category.
Display name of the item.
Optional description of the item.
Base price before any modifier adjustments. The final item price is base_price + sum of selected modifier price_adjustments.
URL to an image of the item. Null if no image is available. Images are served via CDN and are suitable for display in apps.
Whether this item is currently available for ordering. Items may become unavailable due to stock levels or time restrictions.
Modifier groups available for customizing this item. Groups define selection rules (min/max) and contain the available modifiers.
Whether this item is excluded from all discount calculations. When true, promo codes, automatic discounts, and loyalty rewards will not apply to this item. Display "Not eligible for discounts" in your UI for these items. The server enforces this during price calculation.
Whether this item requires age verification before purchase. Applies to tobacco, alcohol, and other age-restricted products.
Minimum age required to purchase this item (e.g., 21 for alcohol, 21 for tobacco in most US states). Null if no age restriction.
Earliest time this item can be sold, in HH:MM format (24-hour, location local time). Null if no time restriction. Example: breakfast items available starting at "06:00".
Latest time this item can be sold, in HH:MM format (24-hour, location local time). Null if no time restriction. Example: breakfast items stop selling at "10:30".
Maximum quantity of this item allowed per transaction. Null if no limit. Used for regulatory compliance (e.g., tobacco purchase limits, pseudoephedrine quantity restrictions).
Whether this item has payment method restrictions. When RESTRICTED, check the allowed_tenders field for accepted payment methods.
Tolerant Reader: New restriction level values may be added in future versions. Treat unknown values as RESTRICTED (check allowed_tenders) rather than assuming unrestricted.
Payment methods accepted for this item. Null means all payment methods are accepted. When populated, only the listed tenders can be used to pay for this item. Example: tobacco items may exclude EBT per SNAP regulations.
Tolerant Reader: New tender values may be added in future versions. Treat unknown values as unrestricted (allow payment) rather than restricted.
{ "location_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "last_modified": "2026-01-15T14:30:00Z", "version_hash": "sha256:a1b2c3d4e5f6", "categories": [ { … }, { … }, { … } ] }
Get menu metadata for change detection
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Request
Returns lightweight metadata about a location's menu, including the last modification timestamp and a version hash.
Use case: Poll this endpoint to detect menu changes without downloading the full menu payload. Compare the version_hash with your cached version -- if they differ, re-fetch the full menu.
Recommended polling interval: Every 5 minutes during business hours, every 30 minutes outside business hours.
- Mock serverhttps://developers.tote.ai/_mock/online-ordering/spec/openapi/locations/{location_id}/menu/metadata
- Production (placeholder -- use your assigned base URL)https://api.tote.ai/v1/online-ordering/locations/{location_id}/menu/metadata
- Sandbox (placeholder -- use your assigned base URL)https://sandbox.api.tote.ai/v1/online-ordering/locations/{location_id}/menu/metadata
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://developers.tote.ai/_mock/online-ordering/spec/openapi/locations/{location_id}/menu/metadata' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'{ "location_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "last_modified": "2026-01-15T14:30:00Z", "version_hash": "sha256:a1b2c3d4e5f6" }
Carts- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Shopping cart creation, item management, pricing, and checkout.
Orders- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Order retrieval, fulfillment tracking, and cancellation.
Payments- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Payment submission, split payments, and refunds.
Webhook Subscriptions- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Webhook subscription management and event delivery.
Inventory- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Item availability and stock status.
Events- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
- Copy for LLMCopy page as Markdown for LLMs
- View as MarkdownOpen this page as Markdown
- Open in ChatGPTGet insights from ChatGPT
- Open in ClaudeGet insights from Claude
- Connect to CursorInstall MCP server on Cursor
- Connect to VS CodeInstall MCP server on VS Code
Webhook event payloads delivered to your subscription URLs.