Statement Summary Subscriptions
Overview
Spinwheel’s Statement Subscription Service enables your platform to receive near real-time notifications when key financial information—such as statement balances or payment due dates—updates for your users. This ensures your users stay informed and your app remains proactive and responsive.
Key Benefits
✅ Real-Time Notifications for updated statement information
📅 Due Date & Statement Balance Awareness to power reminders or triggers
🔄 Easy Subscription Management via standardized APIs
Getting Started
Step 1: Subscribe to a Statement Update
Use the following endpoint to subscribe a user to statement update events:
POST /v1/users/{userId}/liabilities/subscriptions
Example Request Body:
{
"creditCards": [
{
"id": "fb444634-40a8-4a62-849d-4e2db7b8a9ad",
"subscriptions": [
{ "capability": "STATEMENT_SUMMARY" }
]
}
]
}
Note: Each user/card pair can have only one active subscription per capability.
If a subscription already exists, a 409 conflict will be returned.
Step 2 (Optional): List Active Subscriptions
To verify existing subscriptions or confirm that one has been successfully created, use:
GET /v1/users/{userId}/liabilities/subscriptions
This returns a list of active subscriptions, including the type and associated credit card or liabilityId.
Step 3: Handle Real-Time Webhook Notifications
Once a user is subscribed, Spinwheel will send webhook notifications whenever statement data points are updated.
Sample Payload – STATEMENT_SUMMARY_NOTIFICATION
{
"webhookId": "1714461341615-0",
"subscriptionId": "28ddf73b-bd93-4c06-afa5-fd4e3994d23f",
"eventType": "STATEMENT_SUMMARY_NOTIFICATION",
"userId": "abc123",
"data": {
"creditCards": [
{
"creditCardId": "7025c075-e92d-46fa-85e5-ac31ca667079",
"statementSummary": {
"statementBalance": 3194,
"minimumPaymentAmount": 101,
"dueDate": "2021-09-08T00:00:00.000Z",
"lastPaymentAmount": 400,
"lastPaymentDateWithFormat": {
"value": "2021-08-21",
"format": "YYYY-MM-DD"
},
"statementDateWithFormat": {
"value": "2021-08-08",
"format": "YYYY-MM-DD"
},
"overduePeriod": "NOT_OVERDUE",
"amountPastDue": 700,
"dueDateWithFormat": {
"value": "2021-09-08",
"format": "YYYY-MM-DD"
},
"updatedOn": 1719584284061
}
}
]
}
}
The payload only includes fields that have recently changed
Step 4: Optionally Trigger On-Demand Refreshes (Link to Full Guide)
You can request a real-time update for a user's statement data outside of the scheduled subscription logic. This is helpful for user-driven interactions, such as when someone opens your app and wants the most current data.
This does not require a subscription to be in place and allows you to fetch fresh data on demand.
Step 5: Unsubscribe Liabilities From Statement Summary Subscriptions
You can delete existing subscriptions as needed—either to stop webhook notifications or to allow recreation of a new one (since only one subscription per type is allowed per liability).
Delete Subscription Endpoint
DELETE /v1/users/{userId}/liabilities/subscriptions
Example Request Body:
{
"subscriptionIds": ["your-subscription-id"]
}
Updated 1 day ago