The short answer
The Monzo file has 20 columns, dates written as DD/MM/YYYY and one signed amount column. YNAB wants a CSV with the columns Date,Payee,Memo,Outflow,Inflow. So the date is rewritten as YYYY-MM-DD, the amount is split into Outflow and Inflow, and the text columns are moved as in the table below.
Free. The Monzo profile is one of the 5 free profiles of the converter. The free version writes the first 25 converted rows of a file; a licence removes that limit.
The converter runs in your browser. Your file is not uploaded.
What the Monzo CSV looks like
- Country: United Kingdom.
- Account type: current account.
- Header row: yes, one row before the first transaction.
- Columns: 20, separated by commas.
- Date format: DD/MM/YYYY, for example 04/03/2024 (the source writes it as %d/%m/%Y).
- Amounts: one signed amount column. Evidence for the direction: a sample row in the source shows it.
- Header text: the source prints it, so the columns below carry their real names.
Note kept with this layout in the profile data: Twenty columns. The signed Amount column is used; Money Out and Money In repeat it as two columns. Older exports differ: the Firefly III config lists 18 columns ending in separate money-out and money-in columns, and bank2ynab lists a 12-column export with ISO timestamps. If the header does not match, fall back to manual mapping.
What YNAB accepts
- File type: CSV (the vendor calls it the recommended and preferred format); QFX, OFX and QIF are also accepted.
- Header row: optional; the import preview has a "No header row" option.
- Required columns: Date, Outflow, Inflow.
- Optional columns: Payee, Memo.
- Amounts: Two positive columns: money out in Outflow, money in in Inflow. A single signed amount column is also accepted: the user selects the same column for both Inflow and Outflow in the import preview, and YNAB reads positive and negative values from it. The preview has a "Swap Inflow and Outflow" option.
- Dates: not stated on the page; the columns and their reading are confirmed in the import preview.
| YNAB column | Required by YNAB | Filled from the Monzo file |
|---|---|---|
| Date | required | column 2 "Date" |
| Payee | optional | column 5 "Name" |
| Memo | optional | column 15 "Description" and column 12 "Notes and #tags" |
| Outflow | required | column 8 "Amount", rows that are money out |
| Inflow | required | column 8 "Amount", rows that are money in |
From the vendor's help page: "Select that same Amount column for both the Inflow and Outflow fields in the import dropdowns. You don't need to reformat your file or split it into two columns first—YNAB reads positive and negative values from a single column."
Column-by-column mapping
Every column of the Monzo file, left to right, and where it ends up in the YNAB file.
| Column | Header text | What it holds | Where it goes in the YNAB file |
|---|---|---|---|
| 1 | Transaction ID | Reference or check number | Not copied |
| 2 | Date | Transaction date | Date, rewritten as YYYY-MM-DD |
| 3 | Time | Not used | Not copied |
| 4 | Type | Not used | Not copied |
| 5 | Name | Payee or counterparty | Payee |
| 6 | Emoji | Not used | Not copied |
| 7 | Category | Category | Not copied |
| 8 | Amount | Amount, signed (negative is money out) | Outflow when the row is money out, Inflow when it is money in; always a positive number |
| 9 | Currency | Currency | Not copied |
| 10 | Local amount | Not used | Not copied |
| 11 | Local currency | Not used | Not copied |
| 12 | Notes and #tags | Memo or note | Memo |
| 13 | Address | Not used | Not copied |
| 14 | Receipt | Not used | Not copied |
| 15 | Description | Description | Memo (used as Payee on a row whose payee cell is empty) |
| 16 | Category split | Not used | Not copied |
| 17 | Money Out | Not used | Not copied |
| 18 | Money In | Not used | Not copied |
| 19 | Balance | Running balance | Not copied |
| 20 | Balance currency | Not used | Not copied |
Pitfalls for Monzo to YNAB
Dates
- The date must be reordered. The bank file is written day first, then month, then year (DD/MM/YYYY, for example 04/03/2024). The YNAB file is written year first, then month, then day (YYYY-MM-DD, for example 2024-03-04).
- YNAB on dates: not stated on the page; the columns and their reading are confirmed in the import preview. The converter writes year-month-day because it cannot be misread as day/month or month/day. The vendor page does not list accepted date formats, so the user must check the dates in YNAB's preview before importing.
Amounts and their direction
- The bank file has one signed amount column (negative is money out) and the YNAB layout used here has two positive columns. Each amount goes to Outflow or Inflow by its sign, and the minus sign is removed.
- YNAB's own rule: Two positive columns: money out in Outflow, money in in Inflow. A single signed amount column is also accepted: the user selects the same column for both Inflow and Outflow in the import preview, and YNAB reads positive and negative values from it. The preview has a "Swap Inflow and Outflow" option.
- How sure the direction is: a sample row in the source shows it.
Shape of the file
- Quoting: not stated by source (the sample row in the source is unquoted).
Other YNAB import rules
- The vendor states it is no longer necessary to format a CSV file before uploading it; columns are matched to fields with dropdown menus after upload.
Before and after: an invented example
Invented sample data. These four rows were made up for this page. They are not from a real Monzo export and hold no real account, name or balance.
The column headings are the header text the source prints. The 11 unused columns of the file are left out of the table.
| 1: Transaction ID | 2: Date | 5: Name | 7: Category | 8: Amount | 9: Currency | 12: Notes and #tags | 15: Description | 19: Balance |
|---|---|---|---|---|---|---|---|---|
| S0001 | 04/03/2024 | Coffee Corner | Eating out | -4.50 | GBP | Card purchase | COFFEE CORNER MAIN ST | 995.50 |
| S0002 | 05/03/2024 | Example Co | Income | 2500.00 | GBP | Salary March | PAYROLL EXAMPLE CO | 3495.50 |
| S0003 | 07/03/2024 | Sample Landlord | Housing | -1234.56 | GBP | Standing order | RENT MARCH | 2260.94 |
| S0004 | 11/03/2024 | Example Shop | Shopping | 15.25 | GBP | Refund | REFUND EXAMPLE SHOP | 2276.19 |
| Date | Payee | Memo | Outflow | Inflow |
|---|---|---|---|---|
| 2024-03-04 | Coffee Corner | COFFEE CORNER MAIN ST - Card purchase | 4.50 | |
| 2024-03-05 | Example Co | PAYROLL EXAMPLE CO - Salary March | 2500.00 | |
| 2024-03-07 | Sample Landlord | RENT MARCH - Standing order | 1234.56 | |
| 2024-03-11 | Example Shop | REFUND EXAMPLE SHOP - Refund | 15.25 |
Do it by hand in a spreadsheet, free
These steps need no tool from this site. The cell references follow the column positions of the profile above; if your spreadsheet uses semicolons between formula arguments, replace the commas.
- Open the Monzo CSV in a spreadsheet program through its import dialog. Set the date column (column 2 "Date") to Text so the program does not reinterpret it, and leave the amount columns as numbers.
- Row 1 is the header and the transactions start in row 2.
- Date: rewrite column B from DD/MM/YYYY to YYYY-MM-DD (04/03/2024 becomes 2024-03-04). In a new column, for the first transaction:
=MID(B2,7,4)&"-"&MID(B2,4,2)&"-"&MID(B2,1,2)This formula reads the date by character position, so it only works while the dates are text and every date has a two-digit day and month. Fill it down. - Amounts: split the signed column into two positive columns. Outflow:
=IF(H2<0,-H2,"")Inflow:=IF(H2<0,"",H2)YNAB's help page also says a single signed column can be selected for both Inflow and Outflow in its import preview, so this step can be skipped there. - Text columns: fill Payee (from column 5 "Name"); Memo (from column 15 "Description" and column 12 "Notes and #tags"). Where several bank columns feed one column, join them with a separator such as " - ".
- Apply YNAB's own rules from its help page: The vendor states it is no longer necessary to format a CSV file before uploading it; columns are matched to fields with dropdown menus after upload.
- Keep only the new columns, put the header row Date,Payee,Memo,Outflow,Inflow on top, save the sheet as a comma-separated CSV, and compare the dates, the direction of the amounts and the number of rows with your statement in YNAB's import preview.
Or use the converter
Load the file, choose the Monzo profile in the bank list and the target YNAB, read the preview, then download. The conversion runs locally in your browser: the file is not uploaded, and only the licence key is sent for unlocking.
Free. The Monzo profile is one of the 5 free profiles of the converter. The free version writes the first 25 converted rows of a file; a licence removes that limit.
Where this layout comes from
No bank supplied or approved this layout. It was copied on 5 October 2026 from a public open-source importer file kept by volunteers: simonmichael/hledger, file examples/csv/banking/monzo.csv.rules
Also read: firefly-iii/import-configurations, file gb/monzo/default.json
The lines used from the source: header in a comment: Transaction ID,Date,Time,Type,Name,Emoji,Category,Amount,Currency,Local amount,Local currency,Notes and #tags,Address,Receipt,Description,Category split,Money Out,Money In,Balance,Balance currency ; sample row amount -13.75 for a card payment
The YNAB rules come from the vendor's own help pages: support.ynab.com/en_us/file-based-import-a-guide-Bkj4Sszyo (named as text, not linked), support.ynab.com/en_us/formatting-a-csv-file-an-overview-BJvczkuRq (named as text, not linked). The official page was fetched and read on the checked date.
Bank formats change. Banks alter their CSV exports without notice and vendors change their import rules, so this mapping can be out of date. If the preview looks wrong, use the manual column mapper.