Webhook event
member.removed
A member was removed or an invitation revoked.
- Type
member.removed- The object it carries
- the
memberobject - Subscribe with
member.removed,member.*or*
Example payload
The body of the request your endpoint receives, shown here over several lines. On the wire it is compact JSON; check its signature over the bytes exactly as they arrive.
Example payload
{
"id": "evt_tk4hkyepvd0vqadxg0hf7ap6",
"object": "event",
"livemode": true,
"created": "2026-09-02T09:15:44.020Z",
"type": "member.removed",
"api_version": "2026-10-11",
"data": {
"object": {
"id": "mem_re2bmvrnbzsbefcwx64ftp5w",
"object": "member",
"livemode": true,
"created": "2026-09-02T09:15:44.020Z",
"user": "usr_vhpdrdebjrkc46bb09vn6nbm",
"email": "till@acme.example",
"name": "Ana Lopez",
"role": "cashier",
"status": "removed",
"holds_wallet_key": false,
"passkey_count": 1,
"invited_by": null,
"invitation_expires_at": null,
"last_active_at": "2026-10-12T09:00:00.000Z"
},
"previous_attributes": {
"status": "active"
}
},
"request": {
"id": null,
"idempotency_key": null
},
"pending_webhooks": 1
}Fields of data.object
| Field | In this example |
|---|---|
id | "mem_ |
object | "member" |
livemode | true |
created | "2026-09-02T09: |
user | "usr_ |
email | "till@acme.example" |
name | "Ana Lopez" |
role | "cashier" |
status | "removed" |
holds_wallet_key | false |
passkey_count | 1 |
invited_by | null |
invitation_expires_at | null |
last_active_at | "2026-10-12T09: |
What each field means is on the page of the member object. data.previous_attributes holds the old values of exactly the fields that changed: here status.
Endpoints behind it
Calls that change merchant, team and keys. An event is also sent when a payer, the network, a timer or a person in the dashboard causes the change; the sentence above says which.