The objects
Your integration. Maple creates it during onboarding and issues its credentials. An app operates in test or live, never both at once — the credential you use selects which.
A single restaurant — the unit the Developer API works with (ID
str_…). A merchant grants your app access to a location; that grant lets you read it. Locations have a status (active, inactive, paused) you should respect. Locations sit under merchants and organizations — see Organizations, merchants, and locations.Connecting to a granted location makes your app its order receiver. Orders route to you only after a connection exists. A location can be connected to exactly one app per environment.
A customer’s order at a connected location, with line items, totals (computed by Maple), and a payment object. You drive it through its lifecycle with decision calls.
The catalog for a location — categories, items, variations, modifiers, and tax and fee definitions — published as one JSON document keyed by your own external IDs.
An HTTPS endpoint plus the event types you want. Maple signs and delivers events to it, and keeps a ledger you can replay from.
How they connect
A merchant grants you a location → you connect to it → orders from that location are pushed to your webhook → you decide each order. In parallel, you publish the menu those orders are built from.Who owns what
This is the most important thing to understand, and the part most restaurant integrations get wrong. Maple owns the parts that carry risk:| Maple owns | You own |
|---|---|
| The customer payment lifecycle (Stripe-backed payment links) | Receiving orders and deciding them |
| Every customer-facing total, tax, and fee calculation | Reflecting order state back (accept, ready, complete) |
| Card data and PCI scope | Publishing an accurate menu |
| Delivering, retrying, and signing webhooks | Verifying signatures and deduping events |
totals already final and a payment object you can read but don’t manage.
Treat Maple’s totals as authoritative. Your job at order time is to decide whether you can fulfill the order — not to
re-price it.
The order loop, end to end
- A customer orders at a connected location.
- (Optional) Maple sends
order.validation_requestedand waits for you to confirm the order is fulfillable. See validating orders. - Maple sends
order.notificationwith the full order. - You accept or deny it.
- You report progress — ready, then complete — or cancel if you must after accepting.
- You receive
order.cancelledif the customer or store cancels.
Environments
Maple runs two isolated environments, each with its own base URL:- Sandbox —
https://api.staging.maple.inc/v1, with yourmpk_test_…key. For development and testing. - Production —
https://api.maple.inc/v1, with yourmpk_live_…key. Live traffic.
Next
Quickstart
Make the first calls yourself.
Authentication
API keys, environments, and scopes in detail.