Bank feeds

Refresh a bank feed connection

Asks the provider to pull fresh transactions from the bank now instead of waiting for the schedule. Requires the reconciliations:write permission.

POST
https://services.magicdoor.com/accounting/company-portal/bank-feeds/connections/{connectionId}/refresh

Authorization

Authorizationstringrequired
Bearer token — Send your API token in the Authorization header as Bearer <token>. Requests without a valid token are rejected with 401 Unauthorized.

Path parameters

connectionIdstringrequired

Snowflake id of the bank feed connection.

example: 1830472847398408100

Response

200 · The refresh attempt. A repeat call within the same five-minute window returns the existing attempt unchanged.

bankFeedConnectionIdstring

The connection that was refreshed.

refreshAttemptIdstring

Snowflake id of the attempt. Use it to correlate with the sync that follows.

statusstring

Requested while it is in flight, then Succeeded or Failed. The value is written exactly as it appears here, in PascalCase — these particular status fields are plain strings rather than the camelCase enums used elsewhere in the API.

RequestedSucceededFailed
bankFeedSyncIdstring

The sync the attempt kicked off. Absent until one is started.

chargeReferencestring

The billing record for this refresh. Absent when it was not charged for.

chargeAmountnumber

What the refresh cost, as a decimal. Absent when it was not charged for.

chargeCurrencystring

The currency of chargeAmount. Absent when it was not charged for.

failureCodestring

Always bank_feed_refresh_failed when the attempt failed, and absent otherwise.

failureMessagestring

A fixed, safe message when the attempt failed, and absent otherwise.

401 · The access token is missing, expired, or not for this company.

403 · The caller does not hold the `reconciliations:write` permission.

404 · No bank feed connection with this id belongs to the caller's company.

422 · A refresh cannot be asked for right now. The problem detail carries `errorCode: "bank_feed_refresh_blocked"`, a `blockers` array with the same values as `refreshCapability.blockers`, and `nextRequestAllowed` when the block is the five-minute window.

One refresh per five-minute window, and it may be billed

Attempts are bucketed into five-minute windows. A second call inside the same window returns the attempt that already exists rather than starting another, so the call is safe to retry. A manual refresh can carry a charge; when it does, chargeAmount, chargeCurrency and chargeReference are filled in.

Read refreshCapability on Get a bank feed connection first — it tells you whether a refresh will be accepted and, if not, why.