A route called without the scope it needs answers
403 insufficient_scope.
orders:read returns personal data
You don’t need orders:read to learn whether a payment succeeded:
- Webhooks tell you, and never include buyer details.
- Checkout session reads (
checkout_sessions:write) tell you the linked order’s status for hosted and embedded checkout.
orders:read is what you need to poll an order over the API.
Requesting fewer scopes
A token can ask for less than its client holds, with the space-separatedscope parameter on the token endpoint.
Omit it to get everything the client holds. Asking for a scope the client
doesn’t hold is 400 invalid_scope.
The publishable key is capped
Whatever the client holds, a publishable key can only ever useevents:read and checkout_sessions:write, and only to create a session.
It can never create or pay orders or read them. That is what makes it safe to
put in page source. Calling an order route with it is
403 credential_not_permitted.