Importing Transactions

Import bank and payment data from CSV files, Open Banking, PayPal, Amazon, and more.

Supported Import Methods

MethodSourceAuto-sync
CSV UploadNatWest, Starling, Monzo, any UK bankManual
Open BankingPlaid (300+ UK banks)Automatic
PayPalPayPal REST APIManual import
Amazon SellerAmazon Seller Central (SP-API)Manual import
Amazon BuyerAmazon Order HistoryManual import
WiseWise multi-currency Coming soon
RevolutRevolut multi-currency Coming soon

CSV Import

Navigate to Import and upload your bank statement CSV. TaxMTD auto-detects:

  • NatWest - Date, Type, Description, Value, Balance
  • Starling - Date, Counter Party, Reference, Type, Amount, Balance
  • Monzo - Full Monzo export with merchant data
  • Generic - Any CSV with date, description, and amount columns

Source Labels

Every imported transaction is tagged with its source:

SourceBadgeImport Method
NatWestNatWestCSV
StarlingStarlingCSV
MonzoMonzoCSV
PayPalPayPalAPI
Amazon SellerAmazon SellerSP-API
Amazon BuyerAmazon BuyerOrder History
PlaidPlaidOpen Banking

Smart Transfer Detection

When you import a NatWest CSV containing PAYPAL PAYMENT entries, TaxMTD automatically:

  1. Tags them as bank transfers (not real expenses)
  2. Marks them as excluded from tax calculations
  3. Shows a Transfer ↔ indicator

This prevents double-counting when you also import PayPal transactions.

Amazon Seller Integration

Connect your Amazon Seller Central account to import orders, fees, refunds, and FBA settlements.

What Gets Imported

  • Completed orders with line items
  • Amazon fees (referral, FBA, advertising)
  • Refunds and returns
  • FBA settlement reports
  • Profit/loss per product
TaxMTD calculates profit per product after deducting Amazon fees, shipping, and refunds.

Amazon Buyer Integration

Import your Amazon purchase history to automatically categorise business expenses.

What Gets Imported

  • Full order history with item details
  • Auto-matching to bank transactions
  • Business vs personal split per item
  • HMRC-ready expense categorisation
This is unique to TaxMTD - no other UK accounting platform imports Amazon purchase history or auto-splits business vs personal items.

API Example

JavaScript
const res = await fetch('https://www.taxmtd.uk/api/upload', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    csv: csvContent,
    periodStart: '2026-01-30',
    periodEnd: '2026-02-27',
    periodLabel: 'Jan 2026'
  })
})
const { data } = await res.json()
console.log(`Imported ${data.stats.total} transactions from ${data.bankLabel}`)
Python
res = requests.post(
    "https://www.taxmtd.uk/api/upload",
    json={
        "csv": csv_content,
        "periodStart": "2026-01-30",
        "periodEnd": "2026-02-27",
        "periodLabel": "Jan 2026",
    },
    cookies=session_cookies,
)
data = res.json()["data"]
print(f"Imported {data['stats']['total']} transactions from {data['bankLabel']}")
PHP
$response = Http::withCookies($session)
    ->post('https://www.taxmtd.uk/api/upload', [
        'csv' => $csvContent,
        'periodStart' => '2026-01-30',
        'periodEnd' => '2026-02-27',
        'periodLabel' => 'Jan 2026',
    ]);

$data = $response->json()['data'];
echo "Imported {$data['stats']['total']} transactions from {$data['bankLabel']}";
Rust
let res = client
    .post("https://www.taxmtd.uk/api/upload")
    .json(&serde_json::json!({
        "csv": csv_content,
        "periodStart": "2026-01-30",
        "periodEnd": "2026-02-27",
        "periodLabel": "Jan 2026"
    }))
    .send().await?
    .json::<serde_json::Value>().await?;
let data = &res["data"];
println!("Imported {} transactions", data["stats"]["total"]);
cURL
curl -X POST https://www.taxmtd.uk/api/upload \
  -H "Content-Type: application/json" \
  -d '{"csv":"Date,Type,Description,Value,Balance\n01/02/2026,DEB,AMAZON,-29.99,1470.01","periodStart":"2026-01-30","periodEnd":"2026-02-27"}'