1. Configure your environment
/v1. Do not store the key in source control, browser storage, or a mobile application. This flow needs identity:write, documents:write, consent:write, connections:write, connections:read, and banking:read as appropriate.
2. Create the business
data.id, illustrated below as biz_example. A created profile is client-asserted; it does not establish registry verification. Request and response schema.
3. Capture real authorization
Obtain the subject’s authorization through your institution’s approved process. Upload the supporting evidence using document upload, then record consent:POST /v1/consents with a new idempotency key for this action. Save data.id as con_example. Recording consent is not a substitute for obtaining it. Consent endpoint.
4. Connect an enabled provider
Use provider capability discovery to select a provider enabled for your institution, country, and resource needs. Then send this body toPOST /v1/connections:
state of at least 32 characters in this request, bound to the initiating browser session. Save data.id as cnn_example. Direct the authorized user through the short-lived action.url. The registered redirect_uri is a browser return location, not a webhook destination. Retrieve the connection or consume connection.updated before attempting a sync. Connection endpoint.
5. Synchronize and wait for completion
Send this body toPOST /v1/connections/cnn_example/sync:
202 Accepted with a sync-job ID. Poll GET /v1/sync-jobs/{id} with bounded backoff, or process sync.completed / sync.failed. Treat partial as incomplete coverage and inspect errors and actual date coverage. Sync endpoint.
6. Read the transactions
page.next_cursor until page.has_more is false. Keep the same filters for subsequent pages. Amounts are exact decimal strings; for bank transactions, direction carries the movement direction.
Continue with the complete product journeys and connection recovery. Next, implement pagination, safe retries, and webhook verification.