--- title: "Set up bank reconciliation" slug: "connect-a-bank-account-for-reconciliation" description: "Automate bank reconciliation with Frisbii, matching offline payments to invoices effortlessly while ensuring secure access to your transaction data." updated: 2026-09-04T11:30:47Z published: 2026-09-04T11:30:47Z canonical: "help.frisbii.com/connect-a-bank-account-for-reconciliation" --- > ## Documentation Index > Fetch the complete documentation index at: https://help.frisbii.com/llms.txt > Use this file to discover all available pages before exploring further. # Set up bank reconciliation BETA > [!TIP] > Please be aware that each bank connection you set up comes with a cost. ## Overview Bank reconciliation automatically matches the payments that arrive in your business bank account against your open offline payments in Frisbii, so you don't have to check your bank statement against unpaid invoices by hand. It's built for merchants who use offline payment methods, such as bank transfer. You give each invoice a unique reference (for example, the invoice number). The customer writes that reference in their bank transfer, and Frisbii connects the two the moment the money lands in your bank account — no manual tick-off required. **Note** Connecting your bank account only grants Frisbii read access to transaction data, through a secure bank consent flow. Frisbii cannot move money in or out of your account. --- ## Setup at a glance Before any matching can happen, you set up three building blocks. The [**reconciliation configuration**](/frisbii/docs/connect-a-bank-account-for-reconciliation#manage-a-reconciliation-configuration) is the piece that ties them together. | Building block | Where | What it provides | | --- | --- | --- | | **Bank connection** | Configurations → Finance and accounting → Bank Connections | Access to your real bank account and its statement lines | | **Offline payment agreement** | Checkout management → Payment methods → Offline Payments | The reference tag customers quote on their transfer | | **Reconciliation configuration** | Configurations → Finance and accounting → Bank connections → Reconciliation Configurations | Links one agreement to one bank account, plus the matching rules | **Order matters** Create the bank connection and the offline agreement first — the reconciliation configuration needs to point at both. Each agreement can only have one configuration. ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-DWAYIYDP.png) --- ## Before you begin - You have permission to manage bank reconciliation on your Frisbii account. - You have online banking access for the business bank account you want to connect. - You have an [offline payment agreement](/frisbii/docs/offline-payment-methods) (such as bank transfer) already configured, and it's active. --- ## Connect a bank account 1. Navigate to **Configurations → Finance and accounting → Bank Connections**. 2. **Connect bank account**: Click on Add Connection. 3. Select your bank's country, and how long the connection should be valid. The validity period is required for security reasons — it's your consent for Frisbii to read the account's transactions, not a one-time permission. For real banks, a typical validity period is **180 days**, and you can request anywhere from **1 to 365 days** — but the bank's own maximum consent period always wins if it's lower than what you request. ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/2026-08-18_17h08_16.png) 4. **Log in with your bank** — You're redirected to your bank's own login page. Authenticate with your bank and grant consent to share account and transaction data. 5. **Return to Frisbii** — You're redirected back automatically. A confirmation page appears, and you're returned to the bank connections overview. When the connection is complete, your bank account appears in the connections table with the status **Active**. ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/2026-08-18_17h19_20(1).png) **Testing in a sandbox environment?** The demo/sandbox provider caps connection validity at **7 days**. Requesting a longer period returns a validity error — just request 7 days or fewer. See [Test bank reconciliation with the Demo provider](/frisbii/docs/connect-a-bank-account-for-reconciliation#test-with-demo-provider) below. --- ### Manage your bank connections - View all active and revoked bank connections on the same page. - Select **Renew** to extend a connection before it expires. - Select **Revoke** to disconnect a bank account, or revoke all connections at once. Revoking stops Frisbii from reading further transactions from that account. - Select **Delete** on a revoked connection to remove it. Deleting is a soft delete — the connection history is retained. ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-3QGU0L6N.png) ### Connection status: active, expired, or revoked A bank connection is a time-limited consent you gave your bank. It doesn't last forever, and matching only works while the connection is **Active**. ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-X71XFMAA.png) | Status | What it means | Effect on reconciliation | | --- | --- | --- | | **Active** | Your consent is valid. | Matching runs normally. | | **Expired** | The validity period you set (e.g. 180 days) has passed. | Any reconciliation configuration using this connection is automatically **suspended** until you renew. | | **Revoked** | Consent was withdrawn — by you, or by your bank. | The configuration is automatically **suspended**. A revoked connection **cannot be renewed**. | To get matching running again: - **Expired connection** — Open the connection and select **Renew**. The linked configuration resumes automatically. - **Revoked connection** — You can't renew it. Create a **new** bank connection instead, then edit your reconciliation configuration to point at the new connection. **Tip** Because consent expires on a fixed schedule, renew the connection before the validity window runs out so matching never has a gap. --- ## Add a reference tag to your offline payment agreement Before you can enroll an agreement for reconciliation, its payment instructions need a **reference tag**. This is what your customer copies into their bank transfer, and what Frisbii searches for on the bank statement line. 1. Navigate to **Checkout management → Payment methods → Offline Payments**. 2. Open the offline bank transfer agreement you want to use for reconciliation, and make sure it's **active**. 3. In the **payment instructions**, click the tag icon and insert one of the following reference tags. If more than one is available on an invoice, Frisbii uses them in this priority order: | Priority | Tag | Meaning | | --- | --- | --- | | 1 (preferred) | `{{accounting_invoice.accounting_number}}` | Accounting number | | 2 | `{{invoice.handle}}` | Invoice handle | | 3 | `{{invoice.number}}` | Invoice number | **Example instruction:** "Please transfer to bank account 1234-5678, use invoice no.: `{{invoice.handle}}`" **Renders as:** "Please transfer to bank account 1234-5678, use invoice no.: `inv-123456`" **Tip** Put the reference tag front and center in your payment instructions so customers actually copy it into the transfer. A reference that's easy to miss is a common cause of transactions staying unmatched. --- ## Enroll an offline agreement for reconciliation Once your bank account is connected and your agreement has a reference tag, link them together so Frisbii knows which invoices to match against. 1. **Reconciliation configurations** — Open the configuration list. Navigate to **Configurations → Finance and accounting → Bank connections → Reconciliation Configurations**. 2. **Add configuration** — Choose the offline agreement and the bank account to link it to. If you don't have any offline payment agreement set up yet, you can click the link and get directed to the payment methods setup page. ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-L9C1SKN2.png) 3. Set the matching options for this configuration: | Setting | Description | Default | Allowed range | | --- | --- | --- | --- | | **Lookback days** | How many days of past bank statement history to check when the configuration starts. | 90 | 1–365 | | **Overlap days** | How many days of overlap to re-check on each scheduled run, to catch late-arriving statement lines. | 1 | 0–365, and must not exceed the lookback value | | **Match strategy** | **Strict** requires the invoice reference to appear exactly as configured. **Flexible** tolerates differences in spacing and punctuation, and can match a long standalone number even without exact formatting. | Strict | Strict / Flexible | | **Numeric minimum length** | The minimum number of digits a numeric reference must have to be considered for matching. Guards against short numbers matching by coincidence — for example, with a minimum of 6, the year *2026* (4 digits) can never accidentally match. | 6 | 1–32 | ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-OTDL8D5I.png) When the configuration is saved, it starts running on the regular reconciliation schedule. ### Strict vs. Flexible matching, explained Both modes are case-insensitive, and both only match the reference as a whole, standalone token — a reference is never matched inside a longer number (for example, `inv-001` never matches `inv-0012`). ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-F9CGK2SI.png) | If the reference on the invoice is `inv-123`, and the statement text contains | Strict | Flexible | | --- | --- | --- | | `inv-123` | Matches | Matches | | `INV-123` (different case) | Matches | Matches | | `inv123` / `inv 123` / `inv.123` | No match | Matches | | `123` alone, if at or above the minimum digit length | No match | Matches | | `inv-1234` (extra digit) | No match | No match | | `faktura 123` (different prefix word) | No match | No match | **Good to know** Ambiguity is never auto-matched. If two bank lines could both match one invoice, or two invoices could both match one bank line, at the same amount, Frisbii doesn't guess — the transaction is left **Unmatched** for you to review manually. Use **Strict** if your customers reliably copy the full reference. Use **Flexible** if they tend to drop dashes and spaces, or paste just the number. --- ### Manage a reconciliation configuration - **Enable** or **disable** a configuration to pause or resume automatic matching without deleting it. - Select **Synchronize** to run matching immediately, outside the regular schedule. Only **active** configurations can be synchronized. - Select **Delete** to remove a configuration. **Good to know** Each offline agreement can only have **one** reconciliation configuration. To change the bank account or matching options it uses, edit the existing configuration rather than creating a new one. If a synchronization is already running when you click **Synchronize**, you'll get a busy response — just wait a moment and try again. ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-9VT9XIN0.png) --- ## How bank reconciliation works ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-HSGYKH9P.png) 1. Frisbii periodically fetches new bank statement lines from your connected account. 2. For each configuration, Frisbii checks your open (unpaid) offline invoices and tries to match them against the new statement lines by amount, currency, and reference. 3. When a match is found, the outcome is recorded and the invoice's transaction is updated from **Open** to **Matched** (or, if no match ever arrives, to **Closed**). 4. The reconciliation outcome also appears directly on the transaction's detail view. **Three things must line up for an automatic match:** 1. The **reference** on the invoice appears in the bank statement text. 2. The **amount** matches exactly. 3. The **currency** matches exactly. Amount and currency are always a hard requirement — the match strategy (Strict or Flexible, set on the reconciliation configuration) only controls how forgiving the *reference* text matching is. ### Reconciliation states on a transaction ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-DRG6K6PP.png) | State | Meaning | | --- | --- | | **Open** | The offline transfer has started processing. Frisbii is waiting for a matching bank transaction. | | **Matched** | A bank line matched on reference, amount, and currency. The payment is reconciled. | | **Closed** | No match arrived in time. Frisbii stops looking automatically once the invoice's payment due date plus a grace period has passed. | The grace period comes from the offline agreement; if none is set, it defaults to **1 day** after the due date. --- ## View reconciliation outcomes Navigate to **Payments → Bank Reconciliation** to see a read-only overview of reconciliation outcomes. This page lists individual matching results, not your bank connections — to manage connections or configurations, use **Configurations → Finance and accounting → Bank connections** instead. | Column | Description | | --- | --- | | **UUID** | The reconciliation record's unique ID. | | **State** | **Matched**, **Unmatched**, or **Sync failed**. | | **Transaction** | The related transaction. Selecting a row opens **Payments → Transactions** filtered to that transaction. | | **Configuration** | The reconciliation configuration the outcome belongs to. | | **Rule** | The match strategy used: **Strict** or **Flexible**. | | **Provider** | The bank connection provider used. | | **Entry reference** | The bank statement line reference used for matching. | | **Created / Updated** | Timestamps for the reconciliation record. | Use the filters above the table to narrow results by date range, state, rule, transaction ID, or configuration ID. In the [Transaction list](/frisbii/docs/transactions), you can filter transactions by bank reconciliation status (None, Open, Matched, Closed). ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-LVJE4IT8.png) --- ## Constraints and limits (quick reference) | Setting | Default | Allowed range | | --- | --- | --- | | Bank connection validity (requested) | 180 days (real banks) · 7 days (sandbox) | 1–365 days — the bank's own maximum may be lower | | Lookback days | 90 | 1–365 | | Overlap days | 1 | 0–365, and must not exceed lookback | | Numeric minimum length | 6 | 1–32 | | Match strategy | Strict | Strict / Flexible | | Grace period before Closed | 1 day | Set on the offline agreement | --- ## Common errors and how to resolve them | When this happens | What to do | | --- | --- | | You request a connection validity longer than your bank allows. | Request fewer days — at or below the bank's own maximum consent period. | | You request more than 7 days of validity in a sandbox/demo environment. | Use a shorter validity period for testing. | | You try to renew a revoked connection. | Revoked connections can't be renewed. Create a new bank connection instead, then point your configuration at it. | | You try to create a second reconciliation configuration for an agreement that already has one. | Edit or delete the existing configuration rather than creating a new one. | | Your configuration points at a bank connection that isn't active. | Reconnect or renew the bank connection, then check the configuration again. | | You set overlap days higher than lookback days. | Lower the overlap, or raise the lookback so overlap no longer exceeds it. | | You try to synchronize a disabled configuration. | Only active configurations can be synchronized — enable it first. | | You synchronize while a run is already in progress. | Wait a few seconds and try again. | | The agreement you select isn't eligible (wrong payment type, or not found). | Choose an active offline bank transfer agreement. | --- ## Test bank reconciliation with the Demo provider You don't need a real bank to try reconciliation end to end. In a sandbox environment, the **Demo provider** simulates a bank so you can see matching happen without moving real money. There's no "send a transfer" button for the demo bank. Instead, it automatically generates a matching bank line based on a special token you put in the **invoice handle** when you create a test invoice. ### The magic token Add this to the invoice handle when you create the test invoice: `reconcile-demo-<scenario>-<amountMinor>-<currency>` - `<amountMinor>` is the amount in minor units — `25000` means 250.00. - `<currency>` is 3 letters and must match the demo bank's own currency (for example, `dkk` for the Danish demo bank). - You can add extra text around the token so the handle stays unique — for example, `inv-2026-001-reconcile-demo-auto-25000-dkk` creates a 250.00 DKK invoice that will auto-match. ### Scenarios you can test | Scenario token | What the demo bank does | Expected result | | --- | --- | --- | | `auto` | Creates one exact-amount credit line. | Transaction becomes **Matched**. | | `review` | Creates two identical lines (ambiguous). | Sent to manual review — stays **Unmatched**. | | `wrongamt` | Creates a line off by 1 minor unit. | No match, because the amount doesn't line up exactly. | | `abandon` | Creates no line at all. | Stays **Open**, then becomes **Closed** after the due date and grace period pass. | ### Demo banks | Bank | Country | Currency | | --- | --- | --- | | `frisbii-test-dk` | DK | DKK | | `frisbii-test-no` | NO | NOK | | `frisbii-test-se` | SE | SEK | | `frisbii-test-fi` | FI | EUR | **Good to know** Keep the invoice currency the same as the demo bank's currency. The synthesized bank line always uses the bank account's currency, and currency always has to match exactly. ### Testing scenario: open to matched ![](https://cdn.document360.io/b84e1b5d-2ba6-4465-8c62-fb45a2f31314/Images/Documentation/image-2M1Z83H7.png) 1. Create a test invoice as a pending offline bank transfer, with the token in its handle and the amount and currency matching both the token and the demo bank — for example, `inv-2026-001-reconcile-demo-auto-25000-dkk` for 250.00 DKK. 2. Add the demo bank connection: choose the demo provider, bank `frisbii-test-dk` / country `DK`, then open the consent page and select **Allow access**. You click through once — there's no silent auto-approval. 3. Create the reconciliation configuration, pointing it at the agreement and the demo bank account, and make sure it's **active**. 4. Select **Synchronize**, or wait for the scheduled run. The demo bank generates the matching line and the pipeline matches it. 5. Check **Payments → Transactions** — the transaction is now **Matched**. Swap the scenario token (`review`, `wrongamt`, `abandon`) to try the other outcomes. --- ## Tips for reliable matching - Keep references unique, and at or above your configured minimum digit length. - Put the reference tag front and center in your payment instructions so customers actually copy it into the transfer. - Use **Strict** matching if customers reliably copy the full reference; use **Flexible** if they tend to drop dashes, spaces, or paste just the number. - Remember that amount and currency always have to match exactly — partial payments won't auto-match. - If a transaction should have matched but didn't, select **Synchronize** and check the transaction filter for **Open** vs. **Matched**. --- ## Related - [Offline Payment Methods](/offline-payment-methods.md)