Migrate from Cash Flow Updates
Move an existing Cash Flow Updates integration to CRA 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 CRA Servicing suite. Both integrations can run in parallel during the migration.
CRA 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 CRA Servicing.
What's different
Cash Flow Updates uses an income_categories field to limit a subscription to specific income categories. CRA Servicing has no equivalent: a CRA Servicing subscription always covers every category.
CRA 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. CRA 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": "V1" }
]
}'/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.
