The link a customer pays an order at
- Credentials
- OAuth access token
- Scopes
orders:write
route is shop (the shop's own pay page, payUrl), provider (only the card partner's hosted link can be made, which needs the order page) or null (nothing can take this payment online yet). A paid order has paid: true and no link.
Access: OAuth scope orders:write; not write-gated.
merchantOAuth orders:writeAuthorizationBearer <token>OAuth 2.1 (authorization code + PKCE S256, public clients, dynamic registration) for connected AI apps. Effective power is scopes granted AND the person's role today AND the plan. orders:refund, billing:write and team:write are opt-in on the consent screen. Write implies read for marketing:read and messages:read, so a grant holding marketing:write passes a marketing:read check, and messages:send passes messages:read.
Scope: orders:write
storeId*stringA store the person can reach. Any other id answers 404, never 403.
orderId*stringOK
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/orders/<orderId>/payment-link' \ -H 'Authorization: Bearer <access_token>'{ "data": { "paid": false, "balanceDue": { "amount": 32900, "currency": "ZAR" }, "awaitingEft": false, "route": null, "payUrl": "https://jabus-plant-shop.shopeazy.co/checkout/riEhGrBxE2kF04RzXyaz/pay", "provider": null }}Email the customer a reminder to pay POST
Access: OAuth scope `orders:write`; write-gated by the subscription.
Who is on a tour departure GET
Each party (order, contact, seats, pickup, paid) and each traveller with their answers and whether they were ticked off. Names and answers are the shopper's own words (untrusted text). With no `departure`, the next departure that has bookings; `manifest` is null when nobody is booked on an upcoming one. Access: OAuth scope `orders:read`; not write-gated.