The merchant agreement, fee schedule and prohibited uses
- Credentials
- None. This operation is public.
Public: the route never reads the token today, and the terms are published on shopeazy.co anyway.
Access: public, no token; not write-gated.
OK
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/merchant/legal' \ -H 'Authorization: Bearer <access_token>'{ "data": { "version": "2026-09-17", "effective": "17 September 2026", "intro": "This agreement sets out the terms on which Shopeazy Commerce (Pty) Ltd provides the ShopEazy platform to you, and what each of us is responsible for. Please read it before you accept it.", "sections": [ { "id": "parties", "heading": "1. Who this agreement is between", "body": [ "This agreement is between Shopeazy Commerce (Pty) Ltd, a company registered in South Africa (\"we\", \"us\"), and the business that opens a ShopEazy account (\"you\", \"your business\", \"the merchant\").", "The ShopEazy platform is wholly owned and operated by Shopeazy Commerce (Pty) Ltd. Where this agreement says \"ShopEazy\" it means that company.", "If you accept these terms on behalf of a business, you confirm that you are authorised to bind that business. You must be at least 18 years old." ], "bullets": [] }, { "id": "account", "heading": "2. Your account", "body": [ "You are responsible for everything that happens under your account, including anything done by your staff or anyone you give access to. Keep your login details private and tell us promptly if you think someone else has access.", "The information you give us — your business details, contact details and store category — must be accurate and kept up to date. We rely on it for billing, for compliance checks, and for the legal pages published on your storefront.", "We may need to verify your identity or your business before or after you start trading, and we may pause an account while we do." ], "bullets": [] }, { "id": "what-you-sell", "heading": "3. What you may sell", "body": [ "You may sell lawful goods and services that match the store category you selected. You are responsible for holding any licence, permit or registration your trade requires, and for meeting the law that applies to what you sell — including the Consumer Protection Act.", "The following may not be sold or promoted through ShopEazy:" ], "bullets": [ "Adult or pornographic content or services", "Illegal drugs, or drug paraphernalia", "Weapons, ammunition, or explosives" ] } ], "fees": { "schedule": [ { "plan": "Starter", "rate": "3.5% per transaction" }, { "plan": "Growth", "rate": "2.8% per transaction" }, { "plan": "Scale", "rate": "2.1% per transaction" } ], "terms": [ "ShopEazy charges a platform fee on each sale you make through your store, at the rate for your plan above.", "The fee is a percentage of the order total. There is no fixed per-transaction charge.", "The fee is a percentage of the order total your customer paid, including any VAT you charged them." ] }, "prohibited": [ "Adult or pornographic content or services", "Illegal drugs, or drug paraphernalia", "Weapons, ammunition, or explosives" ] }}The businesses the person belongs to, with their stores GET
Each business with the person's role in it, its plan, how many stores it has and may have, and its stores (the same summaries as `getSession`). A client picks the store to work on from here and puts its id in the path of every call: switching is client state, so there is nothing to call for it. A connected AI app sees only the business, and the stores, it was granted; `storeCount` is still the business's real count, which is what the plan's cap counts. A person with no business yet gets an empty list. Access: OAuth scope `store:read`; not write-gated. Paged: `{ items, nextCursor }`, `limit` (default 50, at most 100) and an opaque `cursor`.
Address autocomplete (Google Places, South Africa) GET
Access: OAuth scope `store:read`; not write-gated.