Manual reconciliations

Complete a manual reconciliation

Closes the period, but only when the included entries exactly match the declared statement totals. Requires the reconciliations:write permission.

POST
https://services.magicdoor.com/accounting/company-portal/bank-accounts/{bankAccountId}/manual-reconciliations/{manualReconciliationId}/complete

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

bankAccountIdstringrequired

The bank account being reconciled.

example: 1830472847398404096
manualReconciliationIdstringrequired

Snowflake id of the reconciliation.

example: 1830472847398409100

Body

application/json

The body is required, but every field in it is optional — {} is valid.

memostring

Note to store on the completed period. Replaces the existing memo.

Response

200 · The reconciliation, now `completed`.

idstring

Snowflake id of the reconciliation.

bankAccountIdstring

The bank account being reconciled.

startDatestring · date

The first day of the period, which is the day after the previous completed period ended. Absent on the company's very first reconciliation for this account, which has no lower bound.

endDatestring · date

The statement date the period is being reconciled to.

openingnumber

The balance the account started the period with, as a decimal. On any reconciliation after the first this is copied from the previous completed period's closing and cannot be overridden.

additionsnumber

The total money in that the bank statement shows, as a positive decimal. This is what you declare, not what MagicDoor computed.

subtractionsnumber

The total money out that the bank statement shows, as a positive decimal. Declared, not computed.

closingnumber

opening plus additions minus subtractions. MagicDoor keeps it in step with those three; you never send it.

statusenum<string>

inProgress while it is being worked on, then completed or cancelled.

inProgresscompletedcancelled
creatorobject

Who started the reconciliation. Deprecated mirrors of id — propertyManagerId, tenantId, vendorId, ownerId — are also present, whichever matches type.

memostring

Free-text note. Absent when none was set.

createdstring · date-time

When the reconciliation was started, in the company's timezone.

updatedstring · date-time

When it last changed, in the company's timezone.

entriesEntry[]

Every transaction pulled into the reconciliation, included or excluded.

actualAdditionsnumber

The sum of the included entries whose direction is in. Compare against additions.

actualSubtractionsnumber

The sum of the included entries whose direction is out. Compare against subtractions.

actualClosingnumber

opening plus actualAdditions minus actualSubtractions — the balance the ledger says the account should have.

additionsDifferencenumber

actualAdditions minus additions. Positive means the ledger has more money in than the statement declares.

subtractionsDifferencenumber

actualSubtractions minus subtractions. Positive means the ledger has more money out than the statement declares.

closingDifferencenumber

actualClosing minus closing. It must be exactly zero before the reconciliation can be completed.

depositSlipsDepositSlip[]

The deposit slips the entries belong to, so you can group by slip instead of by transaction.

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

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

404 · The bank account or reconciliation is not the caller's, or a transaction one of the entries points at no longer exists.

422 · The reconciliation is not `inProgress`; or it has no entries; or the included entries do not match the declared totals; or a transaction an entry points at has moved to another bank account. The `detail` says which.

Everything must agree to the cent

There is no tolerance. actualAdditions must equal additions, actualSubtractions must equal subtractions, and closing must equal opening + additions - subtractions. A reconciliation with no entries at all cannot be completed either. Read the reconciliation first and check closingDifference is 0.

Once completed, the period's closing becomes the opening of the next reconciliation on this bank account, and that value can no longer be overridden.