Bank ledger transfers

Adjust a bank ledger transfer

Rewrites a bank ledger transfer and the transactions behind it. Every field you can send replaces what was there. Requires the bank_ledger_transfers:write permission and a company with the company ledger enabled.

PATCH
https://services.magicdoor.com/accounting/company-portal/bank-ledger-transfers/{bankLedgerTransferId}

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

bankLedgerTransferIdstringrequired

Snowflake id of the bank ledger transfer.

example: 1830472847398405100

Body

application/json

Despite the PATCH verb this is a full replacement: send the transfer as it should end up. A field you leave out is cleared, not kept — so re-send memo, reference, propertyId and metadata if you still want them. transferType cannot be changed, and the legs you send must match the type the transfer already has.

transferDatestring · date-timerequired

The date the money moved, read in the company's timezone.

amountnumberrequired

How much moves, as a positive decimal between 0.01 and 999999999.99.

outgoingobject

The bank side money leaves. Required for bankToBank and bankWithdrawal; must be omitted for bankDeposit.

incomingobject

The bank side money arrives in. Required for bankToBank and bankDeposit; must be omitted for bankWithdrawal.

offsetAccountobject

The non-bank side of the entry. Required for bankDeposit and bankWithdrawal; must be omitted for bankToBank.

propertyIdstring

Attribute the movement to a property. Its portfolio is resolved server-side and stamped on the transactions.

paymentMethodenum<string>

How the money moved. Defaults to other.

achdebitCardwalletcreditCardcheckcashiersCheckmoneyOrdercashzelleothercredittransfer
externalTransactionTypeenum<string>

Where the movement was seen outside MagicDoor. Defaults to offline.

plaidstripezelleofflinemagicDoor
externalTransactionIdstring

The identifier the external system uses, up to 200 characters.

memostring

Free-text note, up to 1000 characters.

referencestring

Your own reference, up to 200 characters.

metadataobject

Arbitrary string-to-string map stored with the transfer.

Response

200 · The transfer after the adjustment.

idstring

Snowflake id of the transfer.

createdstring · date-time

When the transfer was recorded, in the company's timezone.

updatedstring · date-time

When the transfer was last adjusted, in the company's timezone.

transferDatestring · date-time

The date the money moved, in the company's timezone. This is the transaction date on the underlying entries.

transferTypeenum<string>

What kind of movement this is: bankToBank between two of the company's bank accounts, bankDeposit into one bank account from a non-bank account, bankWithdrawal out of one bank account to a non-bank account. Fixed at creation — an adjustment cannot change it.

bankToBankbankDepositbankWithdrawal
amountnumber

How much moved, as a positive decimal. The direction is carried by transferType, never by the sign.

propertyIdstring

The property the movement is attributed to. Absent when it is not attributed to one.

paymentMethodenum<string>

How the money moved, read back from the underlying transactions. Absent when the transfer has no linked transactions.

achdebitCardwalletcreditCardcheckcashiersCheckmoneyOrdercashzelleothercredittransfer
outTransactionIdstring

The out transaction that credits the outgoing bank account's cash. Absent on a bankDeposit.

inTransactionIdstring

The in transaction that debits the incoming bank account's cash. Absent on a bankWithdrawal.

outgoingobject

Where the money left from, read back from the out transaction. Absent on a bankDeposit.

incomingobject

Where the money landed, read back from the in transaction. Absent on a bankWithdrawal.

offsetAccountobject

The non-bank side of a one-legged transfer: what the deposit came from, or what the withdrawal was spent on. Absent on a bankToBank.

memostring

Free-text note. Absent when none was set.

referencestring

Your own reference, for example a wire confirmation number. Absent when none was set.

metadataobject

Arbitrary string-to-string map stored with the transfer. An empty object when nothing was stored.

creatorobject

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

deletedstring · date-time

When the transfer was soft-deleted. These endpoints never return deleted transfers, so it is always absent.

400 · `amount` is not positive or out of range, the legs do not match the transfer's `transferType`, or `memo`, `reference` or `externalTransactionId` is too long.

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

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

404 · The transfer is not in this company, or one of its linked transactions has gone missing.

422 · The company does not have the company ledger enabled, the transfer has no linked transactions to keep in sync, or a linked transaction is not a bank ledger transfer entry.

transferTypeSendWhat is posted
bankToBankoutgoing and incoming, no offsetAccountTwo linked transactions: an out on the outgoing bank account's cash account and an in on the incoming one. Cash falls on the outgoing side and rises on the incoming side by amount.
bankDepositincoming and offsetAccount, no outgoingOne in transaction that raises the incoming bank account's cash by amount. offsetAccount carries the other half of the entry.
bankWithdrawaloutgoing and offsetAccount, no incomingOne out transaction that lowers the outgoing bank account's cash by amount. offsetAccount carries the other half of the entry.
Omitting a field clears it

This endpoint mirrors the create body, not a patch document. Read the transfer first and send back everything you want to keep.