Migrate from Cash Flow Updates
Move an existing Cash Flow Updates integration to Servicing
The Cash Flow Updates endpoints (/cra/monitoring_insights/subscribe, /cra/monitoring_insights/get, and /cra/monitoring_insights/unsubscribe) are deprecated and will stop functioning on August 20, 2027. To continue receiving update functionality, existing customers must migrate to the Servicing suite. Both integrations can run in parallel during the migration.
Servicing delivers refreshed data through the same /cra/check_report/base_report/get and /cra/check_report/income_insights/get endpoints you already use at origination, rather than through a separate endpoint and report schema. For a full walkthrough, see Servicing.
What's different
Cash Flow Updates uses an income_categories field to limit a subscription to specific income categories. In Servicing, set income_insights_filter (included_categories, and optionally excluded_categories) in the cra_income_insights product's options when creating the subscription; the filter is applied to every refreshed Income Insights report.
Servicing does not currently support event-driven alerts equivalent to the CASH_FLOW_UPDATES webhooks (LOW_BALANCE_DETECTED, LARGE_DEPOSIT_DETECTED, NSF_OVERDRAFT_DETECTED, NEW_LOAN_PAYMENT_DETECTED).
The Cash Flow Updates report exposes deltas computed by Plaid. Servicing delivers full Base Report and Income Insights documents on each generation instead.
Only Base Report and Income Insights can be retrieved for a subscription-generated report. Other Consumer Report endpoints, including /cra/check_report/pdf/get, are not supported for these reports.
Reports generated by a subscription can be retrieved only for servicing purposes. If you need a report you can use for a credit decision, call /cra/check_report/create with a decisioning permissible purpose to generate a fresh one.
Update API subscription creation calls
Replace /cra/monitoring_insights/subscribe and /cra/monitoring_insights/unsubscribe with /cra/servicing/subscription/create and /cra/servicing/subscription/delete. Subscriptions in the new model are per-user rather than per-Item.
curl -X POST https://sandbox.plaid.com/cra/servicing/subscription/create \
-H 'Content-Type: application/json' \
-d '{
"client_id": "${PLAID_CLIENT_ID}",
"secret": "${PLAID_SECRET}",
"user_id": "usr_9nSp2KuZ2x4JDw",
"scope": "CLIENT_USER",
"cadence": "DAILY",
"products": [
{ "product": "cra_base_report", "version": "V1" },
{ "product": "cra_income_insights", "version": "V2" }
]
}'/cra/servicing/subscription/create returns a subscription_id in the format cra-sub-<env>-<uuid>, which you will need to store.
Update webhooks
Register a webhook destination for the CRA Report Updated event in the Dashboard instead of setting a URL on each subscription. You can still override the destination for an individual subscription.
Replace your listeners for
CASH_FLOW_INSIGHTS_UPDATEDandINSIGHTS_UPDATEDwith a single listener forCRA_REPORT_UPDATED. When receiving this webhook, check the value oferror_code: if it is absent ornull, at least one product generated successfully.
CRA_REPORT_UPDATED fires once per user per day rather than once per updated Item, so a single event can reflect changes across several Items.
Update report fetch API calls
Replace
/cra/monitoring_insights/getwith the/getendpoint for each product in the webhook'ssuccessful_productsfield:/cra/check_report/base_report/getforcra_base_report, and/cra/check_report/income_insights/getforcra_income_insights. Pass thereport_idfrom theCRA_REPORT_UPDATEDwebhook, as described in Fetch the updated report.Update any code that reads the Cash Flow Updates schema to read the Base Report and Income Insights schemas instead.
Delete Cash Flow Updates subscriptions
- Once a user is subscribed on the new endpoints, call
/cra/monitoring_insights/unsubscribeso the Cash Flow Updates webhooks stop arriving for that user.
