Retrieve migration progress using the original account ID, including after completion or failure.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
GET /bank_account/{account_id}/migration
Authorization: Bearer <api_key>
Use the original account's organisation and environment API key. Follow the authentication requirements, including request signing where required. This read does not initiate or retry migration.
{
"status": "success",
"message": "Bank account migration retrieved successfully",
"data": {
"target_account_id": "replacement-account-id",
"status": "pending",
"status_reason": "action_required",
"status_description": "Complete the outstanding verification requests to continue.",
"inquiry_request_ids": ["inquiry-id"],
"initiated_at": "2026-10-30T12:00:00Z"
},
"meta": null
}
All six fields in data are required:
| Field | Meaning |
|---|---|
target_account_id | String ID of the replacement. Fetch this account for its bank details. |
status | pending, completed, or failed. Use this field for the migration outcome; the envelope's status describes the API request. |
status_reason | Nullable reason code, described below. |
status_description | Customer-facing explanation. Branch on codes, not this text. |
inquiry_request_ids | Array of outstanding inquiry IDs associated with this migration, sorted by ID. Always empty for completed or failed migrations. |
initiated_at | UTC date-time of initiation; unchanged by retries. |
| Migration status | Reason | Next step |
|---|---|---|
pending | action_required | Fetch outstanding inquiries and complete available actions; refresh expired links. |
pending | verification_pending | Verification is being reviewed. Continue checking progress. |
pending | account_creation_pending | The replacement is being created. Continue checking progress. |
pending | activation_pending | Final checks and activation are pending. Continue checking progress. |
pending | processing | Processing is ongoing without a customer action currently available. Reconcile prolonged delays with Graph. |
completed | null | Fetch the replacement and update your stored account references and displayed bank details. |
failed | migration_failed | Contact Graph. Repeating initiation does not create another attempt. |
Outstanding inquiries can be awaiting review; a non-empty array does not itself mean customer action is required. Retrieve instructions and links with Fetch Inquiry Request, or list inquiries with account_id={target_account_id}. See Handling RFIs for hosted actions and expired-link refresh.
A timeout or technical delay is not a final failure. Completed and failed outcomes remain terminal even if the replacement account or person later changes. Use this endpoint to reconcile delayed or missed webhooks.
| HTTP status | Meaning |
|---|---|
| 200 | Migration returned; data is non-null. |
| 400 | Original account not found or outside the key's organisation/environment. |
| 401 | Authentication failed or the organisation is not permitted to access accounts. |
| 404 | No migration found for this original account. The response message is No migration found for this bank account, with data: null. |
| 500 | Unexpected error; retry the read or contact Graph if it persists. |
See the migration guide for the complete integration flow.

