Set up a webhook
- In the web app, open Settings → Transaction webhooks.
- Choose Add webhook, enter a name, and enter your public HTTPS destination.
- Add any Custom headers required by the destination.
- Save the webhook and copy its signing secret. This secret is shown only once.
- Choose Send test, then Refresh status to check the response.
2xx response from the destination. Test events contain a synthetic example purchase and do not create a transaction.
Each webhook belongs to its creator in the selected personal or joint Set Aside Money account. Other joint-account members cannot manage it. Delivery requires the creator to remain an account member and the account’s subscription to remain active. Web settings are available on all active plans.
Custom authentication headers
Enter the header name and its complete value in separate fields. For example:
Use the authentication format required by your destination. Set Aside Money sends the value you enter; it does not add
Bearer or another authentication prefix.
Header values are encrypted and hidden after saving. The webhook list displays names only, such as
authorization. Lowercase names are normal because HTTP header names are case-insensitive. A blank value field when you reopen Headers does not mean the saved value was deleted.Host, Content-Type, Content-Length, Connection, webhook-*, X-Set-Aside-*, and X-MCP-Subscription-Id.
For developer requests, limits, payloads, and signature verification, see the webhook API reference.
Create through MCP
Thecreate_webhook tool accepts name, url, optional headers, and confirm. It requires an MCP connection with mcp.write permission.
Preview first:
"confirm": true. Save the signing secret returned once on creation.
The current MCP tool creates webhooks. To change headers on an existing webhook, use Headers in web settings or the REST
PATCH endpoint in the API reference. MCP tools for listing, updating, and testing existing transaction webhooks are not currently implemented.When events arrive
Webhooks send newly observed pending or booked transactions. Initial bank history, updates, and pending-to-posted replacements do not produce additional events. Bank timing depends on provider availability and the next sync.Retries and troubleshooting
Delivery is at least once, with no ordering guarantee. Timeouts, network failures, HTTP408, 429, and 5xx retry up to eight total attempts. Backoff begins at 30 seconds and doubles, capped at one hour. Other non-2xx responses are terminal for that event. HTTP 410 also pauses the webhook.
Redirects are not followed. Destinations must resolve to public addresses; private, loopback, and link-local addresses are refused.
HTTP 401 or 403
The destination rejected the request. A displayed header name confirms that a header is configured, but does not prove that its value is valid for the destination. Check that the header value uses the destination’s required authentication scheme, token, and permissions. For bearer authentication, enterBearer YOUR_DESTINATION_TOKEN as the value, without repeating Authorization:. Replace the headers if necessary, then send a new test and refresh status. A previous failed event is not automatically retried after a 401 or 403.