Create and update Wallet passes when data changes in your CRM, and read data from
Passquare. Send app_key, a private key from the API keys tab in
Integration. An account can have several keys. master is the main key.
A lite key and other extra keys call the same methods, and each key has
its own limits. The public key on the Public key tab belongs in incoming webhook
URLs, not in app_key. Test with
Postman.
1.1 status
Check the private key, the account status, and this key’s limits. The call counts toward the key’s limits.
POST https://core.passquare.com/api/v2/status
Request
{
"app_key": "private_key"
}
Response
{
"app": "account_name",
"balance": 980.00,
"key": {
"type": "master",
"sent_hour": 12,
"limit_hour": 60,
"limit_sec": 1,
"blocked": false,
"total": 1400,
"last": "2026-10-08 12:05:00"
}
}
1.2 user_create_or_update
Create or update a customer in Passquare. The phone number is the key and uses
E.164. You can also pass custom variables in the payload.
template_uuid is in the address bar of the template.
POST
https://core.passquare.com/api/v2/crm/user_create_or_update
Request
{
"app_key": "private_key",
"name": "name",
"phone": "customer mobile phone",
"email": "email address",
"surname": "surname",
"middlename": "patronymic",
"birthday": "date of birth dd.mm.yyyy",
"discount": "discount percent",
"bonus": "bonus percent",
"balance": "bonus amount",
"card_track": "...",
"template_uuid": "...",
"customerId": "customer id in your CRM",
"link": "link to the pass issue form",
"sms": "Your card: %link%"
}
To send a personalized install link, pass the form URL in link. In
the SMS text, %link% is replaced with that URL.
Response
{
"success": true,
"sms_send": true,
"card": true,
"card_number": "created card number",
"card_track": "created card track",
"card_url": "personalized Apple Wallet link",
"card_gpay_url": "personalized Google Wallet link",
"form_url": "personalized form link",
"user_hash": "hash for form personalization"
}
Create a customer and send SMS
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "+420000000001",
"email": "",
"name": "Joe",
"surname": "Master",
"middlename": "Remaster",
"birthday": "11.11.1980",
"discount": 0,
"bonus": 3.50,
"balance": 100,
"link": "https://form.passquare.com/00000000-0000-0000-0000-000000000000",
"sms": "Your card: %link%"
}
SMS example
Your card: https://form.passquare.com/00000000-0000-0000-0000/?hash=2f10171a33f66f3bc425335690ec880c
Update balance
If the template has a push bound to balance change, the customer also sees a
lock-screen message. To add or deduct an amount, use
balance/add and
balance/deduct.
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "+420000000001",
"balance": 120
}
Personalized Wallet push
When sending a push, do not change variables that notifications are bound to in
the template. If you send a push and change such a variable at the same time,
the system will send a “pass updated” message instead.
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "420000000001",
"push": "Your order is ready for pickup!"
}
Web push
Requires a connected web push app from the Marketplace.
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "+420000000001",
"send_webpush": "Your order is ready for pickup!"
}
1.3 read_customer
Get customer data by phone or card number. Phone numbers use E.164.
POST
https://core.passquare.com/api/v2/crm/read_customer
Request: use phone or card
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "",
"card": "",
"invites": true,
"installs": true
}
Response
{
"customer": {
"phone": "+420000000001",
"email": "",
"name": "Joe",
"surname": "Master",
"middlename": "Remaster",
"birthday": "11.11.1980",
"cardNumbers": ["120"],
"cardTracks": [{"card": "120", "track": "78374598987"}],
"cardInstalls": [{"card": "120", "install": true}],
"discount": 4.5,
"bonus": 0,
"balance": 0,
"template_uuid": "...",
"remoteId": "6326",
"invitedBy": "+420000000000",
"invites": ["+420000000011", "+420000000012"]
}
}
1.4 read_customers
List customers by registration date.
POST
https://core.passquare.com/api/v2/crm/read_customers
Request
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"start_date": "01.01.2020",
"end_date": "31.12.2020 23:59:59",
"installed": true,
"offset": 0
}
- If
installed is omitted, the method returns all customers.
- If
true: customers with an installed pass.
- If
false: customers without an installed pass.
-
Returns the first 100 customers. Use
offset for the next page.
Response
{
"customers": ["+420000000011", "+420000000012"]
}
1.5 push/create
Create a push campaign for the whole base or a segment. Type can be
push or webpush. Web push needs a Marketplace app.
After creating the campaign, send it with push/send.
For a single customer push, use
user_create_or_update.
segment_uuid is in the address bar of the segment.
POST
https://core.passquare.com/api/v2/crm/push/create
Request
{
"app_key": "",
"message": "",
"type": "",
"name": "",
"segment_uuid": ""
}
Response
{
"result": {
"name": "Push#0000",
"uuid": "00000000-0000-0000-0000-000000000000",
"message": "Test push!"
}
}
1.7 event/send
Send an event for a customer. app_key, event and one customer
identifier are required: phone, card or remoteId.
The event key is created in the Events section of the account.
value is an optional string of up to 100 characters. Phone is in E.164 format.
POST
https://core.passquare.com/api/v2/crm/event/send
Request with phone
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "+420000000001",
"event": "site_visit",
"value": "promo"
}
Request with card
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"card": "1000123456",
"event": "site_visit",
"value": "promo"
}
Request with remoteId
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"remoteId": "crm-42",
"event": "site_visit",
"value": "promo"
}
Response
1.8 balance/add
Add to a customer's bonus balance. Same operation as Add on the client card.
app_key, sum and one customer identifier are required:
phone, card or remoteId.
sum is a positive amount added to the current balance.
On the built-in customer base, Passquare changes the balance itself. If an
external CRM is connected, Passquare sends it the
addBalance hook, the same way the Add button does,
and then updates the pass from the CRM.
Phone is in E.164 format. If the template has a push bound to balance change,
the customer also sees a lock-screen message.
POST
https://core.passquare.com/api/v2/crm/balance/add
Request with phone
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "+420000000001",
"sum": 50.00
}
Request with card
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"card": "100099",
"sum": 50.00
}
Request with remoteId
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"remoteId": "crm-42",
"sum": 50.00
}
Response
{
"success": true,
"balance": 150.00
}
1.9 balance/deduct
Deduct a customer's bonus balance. Same operation as Deduct on the client
card. app_key, sum and one customer identifier are
required: phone, card or remoteId.
sum is a positive amount subtracted from the current balance.
On the built-in customer base, Passquare changes the balance itself. If an
external CRM is connected, Passquare sends it the
addBalance hook, the same way the Deduct button does,
and then updates the pass from the CRM.
Phone is in E.164 format. If the template has a push bound to balance change,
the customer also sees a lock-screen message.
POST
https://core.passquare.com/api/v2/crm/balance/deduct
Request with phone
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "+420000000001",
"sum": 50.00
}
Request with card
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"card": "100099",
"sum": 50.00
}
Request with remoteId
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"remoteId": "crm-42",
"sum": 50.00
}
Response
{
"success": true,
"balance": 50.00
}