Finance Dashboard

Sign in with your email and password. Sessions end at the end of the day.

Finance Dashboard

Import bank statements

Manual bank selection (rarely needed)
Drag & drop statements here - PDFs and CSV exports alike are auto-detected, converted and verified in your browser. Drop a whole month (or year) at once; the dropdown is only a fallback.

Accepted file formats

Reference for anyone preparing files: these are the exact formats the importer recognizes. Sample values are made up.

Airwallex — Balance Activity Report CSV

Export from Airwallex as-is. Key columns (others may exist and are ignored):

Time,Description,Wallet Currency,Debit Net Amount,Credit Net Amount,Account Balance
2026-06-11T14:40:32+0100,Pay Example Vendor,USD,104.28,,7562.86

Time is ISO date-time; either Debit or Credit Net Amount is filled per row; Account Balance is the running balance.

Wio Bank — statement CSV (both accounts in one file)
Date,Description,Account number,Account currency,Account IBAN,Account type,Amount,Balance
2026-06-04,From Example Sender,1234567890,AED,AE000000000001234567890,Current,1000.00,5000.00

Date is YYYY-MM-DD; Amount is signed (+in/−out); Balance is the running balance. Rows are split into accounts automatically by Account number.

RAK Bank — Account Transactions CSV (AED / EUR / GBP / USD)

Export from RAK online banking as-is. The file starts with a preamble; the account number decides the currency automatically.

Account Statement,,,,,,,,,,,
Account Id,,[CURRENT ACCOUNT No.XXXXXXXXX1234],,,,,,,,,
From Date,,01/01/2026,,,,,,,,,
,Date,,Value date,Transaction ID,Cheque number,Description,Details,Additional details,Withdrawal,Deposit,Balance
,04/06/2026,,04/06/2026,S12345678,,EXAMPLE TRANSFER,,,"1,000.00",,"4,000.00"
,,,,,,Total,,,"1,000.00",0.00,

Dates are DD/MM/YYYY; Withdrawal/Deposit are separate columns; Balance is the running balance.

Currenxie — CSV + monthly statement PDF together

The CSV carries transactions, the statement PDF carries the balances - drop both in one batch. Either CSV flavor works:

"*Date (MM/DD/YYYY)","Time (UTC+0)","Type","Currency","*Amount","Beneficiary","Description","Transaction ID","Reference"
"5/26/2026","12:49:57","Debit","USD","-100.00","Example Bene","Transfer to Example","AB12CD34","Self transfer"
"*Date","Type","Currency","*Amount","Beneficiary","Description","Transaction ID","Reference"
"11/12/2026","Debit","USD","-100.00","Example Bene","Transfer to Example","AB12CD34","Self transfer"

Dates are MM/DD/YYYY; Amount is signed.

Mercury — transactions CSV (card numbers only)

Mercury's transactions export is used ONLY to attach each charge's card number (Last Four Digits) to the transactions already imported from the statement PDFs - it never adds transactions itself. The card number is what splits Google Ads between the COGS card (••7171) and the Imperium card (••3073); after this file is dropped those charges categorize automatically. Any date range works; wider is better.

Date (UTC),Description,Amount,Status,Source Account,Bank Description,...,Last Four Digits,...
06-28-2026,Google,-572.94,Sent,Mercury Credit,GOOGLE *ADSxxxxxxx,,,7171,...
Chase — account activity CSV (chase.com download)

The transaction-activity export from chase.com for the checking account. Safe to drop alongside the monthly statement PDFs: rows already imported from a statement are recognized by their ACH trace number and skipped, in both directions - nothing ever counts twice. The "TRN" transaction id at the end of each description is also stored separately for transfer cross-checking.

Details,Posting Date,Description,Amount,Type,Balance,Check or Slip #
DEBIT,06/29/2026,"ORIG CO NAME:EXAMPLE  ... TRACE#:091000011234567 ... TRN: 1801234567TC",-104.57,ACH_DEBIT,1234.56,,

Posting Date is MM/DD/YYYY; Amount is signed (+in/−out); Balance is the running balance.

Shopify — "Finance Dashboard" CSV export (sales by order)

From Shopify Analytics, export the "Finance Dashboard" report as-is - one month or many months per file, overlapping files are safe (each order is stored once; reversal rows update the original order's refund columns). Goes to the Shopify sales tab, not to any bank account.

"Order name","Billing country","Day","Order or sales reversal","Return reason","Discounts","Sales reversals","Gross sales","Total sales"
"#12345","Germany","2026-06-30","order",,-4.5,0,45,40.5
"#12345","Germany","2026-07-04","reversal","Item damaged",0,-40.5,0,-40.5

Day is YYYY-MM-DD; amounts are USD; the fourth column says whether the row is the order itself or a sales reversal (refund); Return reason may be empty.

Shopify — payment transactions CSV export

From Shopify Payments (or generated from the API by Claude). Fills the payout columns on the Shopify sales tab for orders already imported there - drop it after (or together with) the sales CSV.

Transaction Date,Type,Order,Card Brand,Card Source,Payout Status,Payout Date,Payout ID,Available On,Amount,Fee,Net,Checkout,Payment Method Name,Presentment Amount,Presentment Currency,Currency
2026-06-30 20:18:08 +0200,charge,#12345,visa,online,paid,2026-07-02,142900000000,2026-07-02,224.25,8.60,215.65,#4152...,card,224.25,USD,USD
Shopify — payouts CSV export

From Shopify Payments payouts (or generated from the API by Claude). One row per payout; goes to the Shopify Payouts tab. Re-exports safely update a payout's status (e.g. in transit → paid).

Payout Date,Status,Charges,Refunds,Adjustments,Marketplace Sales Tax,Advances,Reserved Funds,Fees,Retried Amount,Total,Currency,Bank Reference
2026-06-30,paid,6092.00,0.00,0.00,0.00,0.00,0.00,224.78,0.00,5867.22,USD,043305134960494
Shopify — daily balance CSV (generated by Claude)

Not a Shopify export - Claude computes it from the Payments API (verified against Shopify's own reconciliation report). Powers the starting/ending balance summary on the Shopify Payouts tab.

Date,End of Day Balance,Currency
2026-06-30,1149.56,USD
Stripe — "Itemized payout reconciliation" CSV

From Stripe: Reports → Payout reconciliation → Download → Itemized payouts (not "Summary"). ALWAYS export from 2026-01-01 to today - the file only contains paid-out transactions, and the daily balances are recomputed from the whole file on every import. One file feeds both the Stripe payouts tab and its starting/ending balance summary.

"automatic_payout_id","automatic_payout_effective_at","balance_transaction_id","created","available_on","currency","gross","fee","net","reporting_category","description"
"po_1AbC...","2026-01-02 01:16:54","txn_3Xy...","2025-12-30 01:36:34","2026-01-02 01:00:00","usd","79.00","3.78","75.22","charge","..."
PayPal — activity CSV export (balance affecting)

From PayPal: Activity → All transactions → Download → CSV, "Balance affecting", from 2026-01-01 to today. Dates are DD/MM/YYYY; the Balance column is the running balance (verified row-by-row on import data). Feeds the PayPal tab and its starting/ending balance summary. Names/emails in the file are NOT stored in the dashboard.

"Date","Time","TimeZone","Name","Type","Status","Currency","Gross","Fee","Net",...,"Transaction ID",...,"Balance",...,"Balance Impact"
"01/01/2026","02:49:48","PST","...","Express Checkout Payment","Completed","USD","38.25","-1.98","36.27",...,"3J6470...",...,"1,521.60",...,"Credit"
Costs table CSV (COGS tab)

The cost-items export (e.g. custom_spends_table from Triple Whale). One row per cost; "No end date" means still active. Re-uploads update items in place by their Id.

Id,Category,Title,Start Date,End Date,Cost,Recurring,Recurring Interval Length,Is Ad Spend
abc123,Apps,Shopify,"Apr 27, 2025",No end date,69,true,every 1 day,false

Costs are USD; percentage costs (e.g. "1% of sales") are shown as written.

PDF statements (auto-detected)

Drop the original PDF downloaded from the bank - do not scan, print or re-save it (the importer needs the selectable text inside). Accepted statements:

  • Amex (Middle East) Platinum — monthly Statement of Account
  • Chase / JPMorgan — Business Complete Checking monthly statement
  • Mercury — monthly statement (checking) and IO credit card statement
  • Currenxie — USD account statement (together with its CSV, see above)

Every PDF is verified against its own printed totals and balances before anything is imported; statements that don't reconcile are refused with the exact mismatch.

Import history

Files already brought in - check here before uploading. Re-importing a file is always safe (duplicates are skipped), this is just the quick look.

FileBankWhenResult

Imported accounts

AccountBankTransactions

Monthly balance anchors

For accounts whose CSV includes a running balance column, opening/closing balances are auto-detected from the first and last transaction of each month. You can override any value manually - manual values always win. Enter every anchor in the account's native currency (shown in the Currency column) - reconciliation never converts.

Account Currency Month Opening balance Closing balance Source

Dashboard

Balance over time

Monthly income vs. expense

Bank transactions

Every imported transaction for the selected period, oldest first. Amounts are converted to USD at the fixed rates (positive = received, negative = sent); hover an amount to see the native-currency figure. Categories are saved per transaction and are manual for now - auto-detection comes later.

Date Account Amount (USD) Description Category

Expense categorization

Every unique expense across ALL months (card payments and internal transfers excluded), grouped by merchant. Set or confirm a category for each merchant - choices are saved as rules immediately - then press Apply to stamp the category on every matching transaction above (tagged "auto"; a category you picked by hand on a single transaction is never overwritten). New imports apply the rules automatically.

Merchant / expense Transactions Total (USD) Category Tagged

Shopify sales

Day Order Billing country Discounts Gross sales Total sales Refund date Refund Reason Payout status Payout date Payout ID Available on Amount Fees Net

Shopify Payouts

Payout date Status Charges Refunds Adjustments Tax Advances Reserved Fees Retried Total Ccy Bank reference

Crypto investments

Holdings

AssetQuantityPurchase rateCurrent value Unrealized P/LAllocation (of portfolio value)

Stripe payouts

Historic processor: Stripe carried the store's payments until 2026-05-18, when Shopify Payments took over (trailing refund and dispute payouts continue after that date).

Payout date Status Txns Charges Refunds Disputes Other Fees Total Payout ID

PayPal

Balance-affecting PayPal activity from the account's CSV export. The summary aggregates sales; the table lists everything else - withdrawals to bank (PayPal's payouts, highlighted), refunds, dispute holds, fees, conversions. Balances come straight from PayPal's own running-balance column.

Date Type Status Gross Fee Net Balance after Ccy

COGS

Cost items from the costs-table CSV, in USD. A period shows every cost active in it - running costs with no end date always show; ended costs appear only in periods they overlap.

Category Title Cost (USD) Billing Start End Imported from

Add an expense

Profit & Loss

Two views of the same period, both built ONLY from Shopify sales data, categorized bank transactions, and the payment processors' exports. Expected: sales by order date (gross, minus discounts and refunds). Actual: what the processors really captured in the period (gross, before fees). Both share the same expense lines: processor fees and disputes from the processor data, everything else from the bank-transaction categories. Amex is excluded from the accounting entirely.

Expected P&L (accrual - by sale/cost date)

Actual P&L (cash - by bank movement)

Reconciliation

✅ computed closing balance matches the entered/auto-read anchor. ⚠️ shows the difference when it doesn't. Seam issues flag when one month's closing balance doesn't line up with the next month's opening.