Google Sheet Extension
PDF to Pass
Image to Pass
The Update User API modifies an existing customer record in a Manage Users group and queues the corresponding wallet pass for re-rendering. This is the same endpoint the Manage Users dashboard uses when you edit a user from the UI, so the behavior is identical across API and dashboard. To update multiple users, call this endpoint once per user.
Scanning a non-loyalty pass opens this same update flow — there is no counter, you just edit the member's fields here. Loyalty passes have a stamp / points counter instead, updated via Loyalty Progress Update.
customerId returned by Add User and listed by List Users.All API requests must include your API key in the request headers:
"apikey": "your-api-key-here"
Send a single JSON object containing only the dynamic fields you want to change — the same field keys you used when adding the user. This is a partial update: omitted fields keep their existing values, so you never need to resend the whole record.
| Name | Type | Required | Description |
|---|---|---|---|
| ...dynamicFields | object | No | Key/value pairs of dynamic fields to change. Keys are case-sensitive and must match the dynamic fields declared on the template. Only the keys you include are modified; everything else is left untouched. |
The example below promotes John Smith (the customer added on the Add User page): it changes only position, department and phone, leaving companyName, email, employeeId and websiteUrl as they were.
Only the fields you include in the request body are updated. To clear a field, set its value to an empty string or null. The customer's pass is automatically queued for re-rendering with the new values.
This endpoint is the same one used by the Manage Users dashboard:
batchId you can use to track the pass updatecurl -X PUT 'https://app.addtowallet.co/api/manage-users/customers/686d10e7c2f0bc5cdf25c84b' \
-H 'apikey: your-api-key-here' \
-H 'Content-Type: application/json' \
-d '{
"position": "Senior Software Engineer",
"department": "Platform Engineering",
"phone": "+1-555-0125"
}'On success the API returns a JSON object indicating the customer was updated and whether the linked pass was queued for re-rendering:
"User updated, pass updation queued" when a pass re-render was queued, or "User updated" when the customer had no linked pass.{
"message": "User updated, pass updation queued",
"batchId": "686d111dab9ab557fe3e5644"
}The customer record is updated synchronously, but the wallet pass is re-rendered asynchronously. When a batchId is returned, poll the Batch Status endpoint to check the pass update:
GET /api/v2/batch/status/{batchId}| Error Code | Description |
|---|---|
| 400 | Bad Request - Invalid data format or invalid field values. |
| 401 | Unauthorized - Missing or invalid API key. |
| 403 | Forbidden - Insufficient permissions for the requested customer. |
| 404 | Not Found - Customer with the specified ID does not exist. |
| 429 | Too Many Requests - API rate limit exceeded. Please wait before making additional requests. |
| 500 | Internal Server Error - Unexpected error during customer or pass update. Please contact support. |