Connect Holded POS
What this does
Connect your Holded account and your loyalty program earns right from your Holded counter. When your staff ring up a paid sale with a customer attached, Passtastic picks it up automatically — no separate device for earning. To give a reward, your staff still confirm it with a quick scan in the Passtastic Scanner app, the same as with any other checkout.
Which cards can earn from Holded sales
- Points and level cards earn according to your points rules — the points rule attached to the card decides how much a sale is worth. If a card has no points rule attached yet, it won't earn until you set one up.
- Stamp cards earn 1 stamp per paid sale — no rule needed.
- Coupons, bundles (prepaid stamp / prepaid points) and memberships can't earn from Holded sales. These types don't have a way to accrue from a POS transaction, so they won't show up in the list of cards you can turn on.
Before you start
- Access to your Holded account with permission to create API credentials.
- At least one published loyalty card in Passtastic that can earn (a points, level, or stamp card). If you don't have one yet, create it first from Programs → Create New Program.
- The free Passtastic Scanner app on a phone or tablet — you'll still need it to redeem rewards.
Step 1 — Get your Holded API key
1. In Holded, open Settings.
2. Go to Developers.
3. Open Credentials.
4. Click New API Token.
5. Select exactly these scopes:
- Sales: Read
- Contacts: Read + Write
- Developers: Full
Holded shows this key only once — copy it before you leave that screen. If you lose it, you'll need to create a new one.
Step 2 — Connect Holded to Passtastic
1. In your Passtastic dashboard, open Settings, then Integrations (under Business).
2. Find Holded POS.
3. Paste the API key you copied and click Connect Holded.
Step 3 — Choose which cards earn
Once connected, you'll see Your loyalty cards — every points, level, and stamp card in your account. Turn a card on to start earning from Holded sales.
- For points and level cards, make sure a points rule is attached — cards only earn once a points rule is set up for them. If none is attached yet, use Set up your points rules on the same page.
- Stamp cards don't need a rule — turning one on is enough; it earns 1 stamp per paid sale.
The connection page shows N of M cards earning so you can see at a glance how many of your earn-capable cards are turned on.
Step 4 — Members appear in your Holded contacts automatically
Your members appear in Holded on their own. When someone joins, Passtastic adds them to your Holded contacts (name, email, phone), so at the counter your team searches once and puts them on the ticket. Members who joined before you connected are filled in over the following days, up to 200 a day, so a large program doesn't use your Holded API allowance in one go. If Holded already has someone with the same email or phone, we link to that contact rather than creating a second one.
You can switch this off at any time with Add members to my Holded contacts automatically on the Holded page in Passtastic. Contacts already created stay in Holded, and deleting a member in Passtastic never deletes their Holded contact.
*Details:* contacts are saved as clients, tagged passtastic and carry the reference code PT-…; the sync uses about two calls per member from your Holded plan's monthly API allowance.
The one habit that matters: attach the customer to the sale
Points and stamps only land when your staff assign the customer to the ticket in Holded — the same way as adding a customer to any sale. If a sale is rung up with no customer attached, nothing is credited automatically.
That's not necessarily lost, though: a sale made without a customer can still be attributed to them later the same day, if the ticket is updated with the customer before the day closes. Past that window, the sale can no longer be matched.
How your staff redeem a reward
Holded doesn't show a customer's reward status at the counter, so redeeming still uses a quick scan, the same as any Passtastic loyalty program:
1. When a customer says their reward is ready, your staff open the Passtastic Scanner app and scan the customer's wallet pass. This confirms the reward is real and ready.
2. Your staff apply the reward at checkout as they normally would (discount, free item, etc.).
That's the one place you still use the scanner — earning is automatic from Holded sales.
Refunds
When you refund from the Holded POS, Holded creates a corrective ticket with a negative amount, linked to the original sale. Passtastic runs your points rule on the refunded amount and takes that many points back, so a partial refund only removes part of the points. A card never goes below zero: if the customer has already used the points, it stops at 0. Cancelling or deleting a ticket also takes its points back. Stamp cards only lose a stamp when a ticket is cancelled or deleted, not on a refund. You can switch this off with Take points back on refunds on the Holded page in Passtastic.
Troubleshooting
My API key wasn't accepted. Make sure you created a genuine Holded API Token (not a login password or a different kind of key), and that you copied the whole string. Create a fresh token in Holded → Settings → Developers → Credentials and paste it again.
"Add the Sales: Read / Developers: Full scope" error. The token is missing one of the three required scopes. Go back to Holded, create a new API Token, and select all three: Sales: Read, Contacts: Read + Write, Developers: Full — then paste that one in.
"Couldn't register the sales webhook in Holded." Holded allows only one sales webhook per account. If another tool is already registered to receive your Holded sales notifications, Holded will reject a second one. Disconnect or reconfigure the other tool's webhook in Holded, then try connecting Passtastic again.
My connection needs a new key after I regenerated one in Holded. Regenerating or revoking a key in Holded invalidates the one Passtastic is using, so the connection stops working until you reconnect. Create a fresh API Token in Holded (same scopes as above) and paste it in on the Holded integration page to reconnect — your card settings are kept.
"Your Holded key can't create contacts." Your API token doesn't have the Contacts: Write scope, so Passtastic can link existing contacts but can't create new ones. Create a new API Token in Holded with Sales: Read, Contacts: Read + Write and Developers: Full, click Paste a new key on the banner and paste it in. Earning keeps working in the meantime through email and phone matching.
A sale isn't matching to the right customer. Check that the Contacts: Read scope is still enabled on your API key — without it, Passtastic can't match sales to your customers. If it's missing, add it to your existing token or create a new one with all three scopes.
For running loyalty without a POS, or connecting other tools, see POS Systems & Integrations.