Skip to main content
A Bank Transfer records the movement of funds between two of a company’s own bank or credit card accounts, such as funding a payroll account from an operating account. It isn’t a payment to a vendor or a receipt from a customer, and both accounts must belong to the same company: DualEntry doesn’t support transfers between accounts in two different companies. This guide covers creating a bank transfer, choosing how DualEntry handles a cross-currency conversion, and reading the resulting GL impact.

Before you start

  • Both accounts already exist in DualEntry as Bank or Credit Card accounts on the same company. System-managed accounts can’t be used. Add a new account through the chart of accounts, or connect its live feed first through Bank Connections.
  • If the two accounts use different currencies, decide whether you want DualEntry to value each leg independently at its system exchange rate (the default), or to enter the actual amount your bank credited and skip the resulting gain or loss.
  • A role that can post to the accounts involved. Where an approval workflow covers bank transfers, the transfer is held in Draft and routed instead of posting on save.

Create a bank transfer

  1. Navigate to Accounting → Transactions → Bank Transfers and choose New Bank Transfer.
  2. Set Company, then Sending Account and Receiving Account. Each list only shows Bank or Credit Card accounts that belong to the selected company, and excludes whatever account is already selected on the other side.
  3. Enter Sending amount. If the two accounts share a currency, Receiving amount stays in sync automatically; if they don’t, DualEntry auto-populates it from the exchange rate (see the next section).
  4. Set Posting Date and, if your organization has it enabled, Transaction Date. Add a Memo if it’s useful for reference.
  5. Choose Save as Draft to hold the transfer with no GL impact, or Send for Approval to route it through your approval workflow. With no matching workflow, saving posts the transfer immediately.
An inactive Sending or Receiving Account still appears in its dropdown, but shows a warning prompting you to reactivate it or choose a different account.

Same-currency vs. different-currency transfers

A same-currency transfer is straightforward: the amount debited to the Receiving Account always equals the amount credited from the Sending Account, with no exchange rate and no gain or loss. A different-currency transfer needs an exchange rate. DualEntry auto-populates Exchange Rate based on the Posting Date and calculates Receiving amount from Sending amount and that rate. You can edit the rate directly, or type into Receiving amount to back-calculate it instead. Because the two legs are in different currencies, DualEntry also needs to decide how to value each one in the company’s base currency for the GL, which is what Calculate Gain/Loss and Bank Currency Anchor control.

Decide whether to calculate a realized gain or loss

By default, DualEntry values each leg of a cross-currency transfer independently at its own system exchange rate. For a same-day conversion between your own accounts, the residual between those two independent valuations is really just a mismatch between DualEntry’s system rate and the rate your bank actually used, not a real economic gain or loss, since nothing was held in a foreign-currency position across periods. Calculate Gain/Loss controls whether DualEntry posts that residual.

Turn Calculate Gain/Loss off for a same-day conversion

  1. Enter Sending Account and Sending amount as usual, and select Receiving Account.
  2. Turn Calculate Gain/Loss off.
  3. If neither account is in your company’s base currency, set Bank Currency Anchor to choose which account’s exchange rate to trust; DualEntry derives the other leg’s rate so both sides value to the same base-currency amount. It defaults to the Sending Account. If either account is already the base currency, DualEntry anchors to it automatically and doesn’t show this choice.
  4. Enter the actual amount your bank credited to the Receiving account, from your bank statement or transfer confirmation.
  5. Save. The transfer posts using that actual amount on both legs, with no Realized Gain/Loss line.

Leave Calculate Gain/Loss on

This is the default, and it matches how every cross-currency bank transfer worked before this control existed: each leg is valued independently at DualEntry’s system rate, and any residual posts to Realized Gain/Loss automatically. Leave it on unless you have a specific reason, such as a same-day conversion, to anchor the transfer to one side instead.
If you manually enter an exchange rate that differs from DualEntry’s system rate, a callout flags the estimated FX difference before you save. This applies whether Calculate Gain/Loss is on or off, so treat it as your cue to double-check the rate against your bank statement before posting.
Once a transfer is saved, reopening it shows Calculate Gain/Loss and Bank Currency Anchor as read-only, reflecting the values it posted with. Editing a transfer doesn’t let you retroactively change how its gain or loss was calculated.

Field reference

Understand the GL impact

A same-currency transfer debits the Receiving Account and credits the Sending Account for the same amount, with no gain or loss line. A different-currency transfer with Calculate Gain/Loss on values each leg independently. For example, with a USD base currency, a EUR sending account, a CAD receiving account, an EUR:USD rate of 1.1, and a CAD:USD rate of 0.72: sending €1,000 debits the CAD receiving account for CAD 1,500 (base 1,080)andcreditstheEURsendingaccountfor1,000(base1,080) and credits the EUR sending account for €1,000 (base 1,100). DualEntry debits Realized Gain/Loss for the $20 residual so the entry balances. A different-currency transfer with Calculate Gain/Loss off anchors both legs to the same base-currency amount instead of two independent system-rate lookups, so no gain or loss line is created. For example, sending 730,000fromaUSDaccounttoanAUDaccountthatactuallyreceivesA730,000 from a USD account to an AUD account that actually receives A1,038,433.53, with Bank Currency Anchor set to the Receiving Account, debits the AUD account and credits the USD account for $730,000 (base) each, with no residual line.

Verify

Open the transfer from the list; its detail view has its own Overview, GL Impact, and Activity tabs. A bank transfer is complete once it shows a status of Posted, its GL Impact tab shows the expected debit to the Receiving Account and credit to the Sending Account, and, on a cross-currency transfer, whether a Realized Gain/Loss line appears matches what you chose under Calculate Gain/Loss. Its Activity tab records the save and any approval events against the person who took them.

Good to know

  • Finding a transfer: the list splits into Overview, Draft, Archived, and For Approval tabs by status. A transfer you saved as a draft or sent for approval won’t appear on Overview until it posts.
  • Wire fees: if your bank deducts a fee from the amount received, still enter the full amount sent and received in the transfer, and record the fee as a separate transaction, such as a Direct Expense. This keeps the transfer reconcilable against your bank statement.
  • Multi-day transfers: when Posting Date differs from Transaction Date, the funds sat in a currency position across a rate change, so confirm the entered rate matches what your bank actually used before turning Calculate Gain/Loss off. That control is meant for atomic, same-day conversions.
  • Matched transfers: once a transfer has been matched to an imported bank-feed transaction in Bank Match, its company and its Sending or Receiving Account can no longer be changed.
  • Approval routing: an approval policy for bank transfers can be configured to trigger based on the transfer’s amount, currency, memo, or date, the same condition types available on other approval-routed records.
  • Period locks: bank transfers are governed by the company’s Other GL period lock. Saving or editing one is blocked once the posting date falls on or before that lock date, except for archiving a transfer that’s still in Draft.

Troubleshooting

Last modified on September 17, 2026