1. Create a dedicated key
Create one API key per POS connection. Grant:MARKETPLACEfor ping, accrue, enrol, and reverse;LOCATIONS_READwhen transactions must be attributed to a store; and- read scopes only when the adapter genuinely needs separate reconciliation.
2. Confirm the business and cards
default_card_id is null, the business has more than one active card. Ask
the operator to map each POS location or loyalty programme to a specific
card_id; never guess the first card.
3. Identify the customer
Send at least one identifier. Perkstar checks them in this order:card_serial- provider identity for first-party integrations
external_ref- phone
card_serial. Current
opaque POS identifiers and older numeric or serial formats are both resolved by
the API. Do not parse, reformat, truncate, or assume a fixed length.
For customer records coming from the POS, prefer a namespaced stable ID:
4. Add loyalty
type: "POINTS" with amount_pence. Perkstar
uses the card’s points rule. Send an explicit delta only when the upstream
system is authoritative for the points amount.
5. Handle refunds
Production rules
- A sale callback must acknowledge only after Perkstar has accepted or durably queued the operation.
- Retry timeouts and
5xxresponses with the same IDs. - Respect
Retry-Afteron429. - Queue offline work locally and retain the original transaction time and ID.
- Show terminal failures to staff; do not drop them silently.
- Keep location mapping explicit when the business has several stores.
A test marketplace call cannot create a live customer or enrolment. Prepare an
existing test customer/card enrolment before testing accrual.

