Plan, subscription, card on file, credits and usage
- Credentials
- OAuth access token
- Scopes
store:read- Role
- Owners and admins only. Staff get
403 forbidden.
Access: OAuth scope store:read; owner/admin only; not write-gated.
merchantOAuth store:readAuthorizationBearer <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: store:read
storeId*stringA store the person can reach. Any other id answers 404, never 403.
OK
application/json- response
data*curl -X GET 'https://api.shopeazy.co/v1/merchant/stores/<storeId>/billing' \ -H 'Authorization: Bearer <access_token>'{ "data": { "plans": [ { "id": "starter", "name": "Starter", "tagline": "Everything to open shop and start selling.", "priceMonthly": { "amount": 19900, "currency": "ZAR" }, "priceMonthlyLabel": "R199,00", "priceAnnual": { "amount": 190800, "currency": "ZAR" }, "priceAnnualLabel": "R1 908,00", "platformRateLabel": "3.5% per transaction", "maxProducts": 30, "maxStores": 1, "maxUsers": 1, "current": false }, { "id": "growth", "name": "Growth", "tagline": "More seats and stores as your hustle takes off.", "priceMonthly": { "amount": 49900, "currency": "ZAR" }, "priceMonthlyLabel": "R499,00", "priceAnnual": { "amount": 478800, "currency": "ZAR" }, "priceAnnualLabel": "R4 788,00", "platformRateLabel": "2.8% per transaction", "maxProducts": 150, "maxStores": 3, "maxUsers": 5, "current": true }, { "id": "scale", "name": "Scale", "tagline": "Room to run a serious operation, with our lowest rate.", "priceMonthly": { "amount": 129900, "currency": "ZAR" }, "priceMonthlyLabel": "R1 299,00", "priceAnnual": { "amount": 1198800, "currency": "ZAR" }, "priceAnnualLabel": "R11 988,00", "platformRateLabel": "2.1% per transaction", "maxProducts": 1000, "maxStores": 10, "maxUsers": 50, "current": false } ], "interval": "monthly", "plan": { "id": "growth", "name": "Growth", "tagline": "More seats and stores as your hustle takes off.", "priceMonthly": { "amount": 49900, "currency": "ZAR" }, "priceMonthlyLabel": "R499,00", "platformRateLabel": "2.8% per transaction" }, "status": "trialing", "active": true, "trialEndsAt": 1793529173168, "currentPeriodEnd": null, "cancelAtPeriodEnd": false, "pendingPlanId": null, "lastPaymentAt": null, "pastDueSince": null, "card": null, "credits": 50, "usage": { "products": 6, "maxProducts": 150, "maxStores": 3, "maxUsers": 5 }, "manageUrl": "https://app.shopeazy.co/business/plan" }}Mark a conversation read POST
Needs `messages:read`. Write-gated, unlike notifications/read. Access: OAuth scope `messages:read` (a grant with `messages:send` passes too); write-gated by the subscription.
Change plan, cancel or resume PATCH
Charges the saved card on an upgrade, and a cancel or resume changes what the shop is billed. `billing:write` is opt-in on the OAuth consent screen. Access: OAuth scope `billing:write`; owner/admin only; write-gated by the subscription.