Unique identifier, prefixed with evt_. Stable across webhook retries, so use it
to deduplicate.
Events
The event object and every event type CashSDK emits, plus the recent event stream you can query for debugging and reconciliation.
Every meaningful change in CashSDK (a purchase, a renewal, a refund, an entitlement change) produces an event. Events are delivered to your webhook endpoints and are also queryable as a recent stream for debugging and reconciliation.
The event object#
idstringtypestringThe event type, e.g. purchase.completed. See the table below.
created_atstringISO 8601 timestamp of when the event occurred.
dataobjectThe event payload. Its shape depends on type. For a purchase it carries the
transaction, for an entitlement change it
carries the affected entitlement and app_user_id.
Event types#
| Type | When it fires |
|---|---|
purchase.completed | An initial purchase was validated. |
subscription.renewed | A subscription auto-renewed for another period. |
subscription.canceled | A subscriber turned off auto-renew (access continues until expiry). |
subscription.expired | A subscription lapsed and access ended. |
trial.started | A free trial or intro offer began. |
refund.issued | The store issued a refund for a transaction. |
entitlement.granted | An entitlement became active for a customer. |
entitlement.revoked | An entitlement was removed or expired for a customer. |
List recent events#
GET /v1/apps/{app}/events
Returns the app's recent events, newest first. Supports limit and cursor
pagination.
appstringrequiredThe app ID.
typestringFilter to a single event type, e.g. purchase.completed.
limitintegerPage size, up to 100.
cursorstringCursor from the previous page's next_cursor.
curl "https://api.cashsdk.com/v1/apps/app_2mK4pQ/events?type=purchase.completed" \
-H "Authorization: Bearer csk_sk_..."
{
"data": [
{
"id": "evt_5b9d2e",
"type": "purchase.completed",
"created_at": "2026-07-17T18:24:05Z",
"data": {
"app_user_id": "u_812",
"transaction": {
"id": "txn_9f2a1c",
"product_id": "pro_monthly",
"amount": 899,
"currency": "USD",
"type": "purchase",
"store": "app_store",
"created_at": "2026-07-17T18:24:05Z"
}
}
}
],
"has_more": true,
"next_cursor": "eyJpZCI6ImV2dF81YjlkMmUifQ"
}
The event stream is a rolling window for debugging and reconciliation. For
durable, real-time delivery, register a webhook
endpoint. Webhooks are HMAC-signed, retried, and idempotent by event id.