Mileage & Receipts

Track business mileage and capture receipts with OCR for automatic matching.

Mileage Tracker

Log business trips with HMRC-approved mileage rates:

MilesRateExample
First 10,00045p/mile8,000 miles = £3,600
Over 10,00025p/mile12,000 miles = £5,000
Motorcycle24p/mileAll miles
Bicycle20p/mileAll miles

Recording a Trip

Each mileage entry includes:

  • Date of the journey
  • From / To locations
  • Distance in miles
  • Purpose - e.g. "Client meeting", "Supplier visit"

Receipt Capture

Photograph and upload receipts for automatic processing:

  1. Snap - take a photo or upload an image
  2. OCR - TaxMTD extracts merchant, amount, and date
  3. Match - automatically links to your bank transaction
  4. Store - digital copy kept for HMRC compliance
HMRC requires you to keep records for 5 years. TaxMTD stores digital receipts indefinitely with your account.

API

JavaScript
// Log mileage
await $fetch('https://dev.taxmtd.uk/api/mileage', {
  method: 'POST',
  body: {
    date: '2026-03-01',
    from: 'London',
    to: 'Manchester',
    miles: 200,
    purpose: 'Client meeting'
  }
})

// Upload receipt
await $fetch('https://dev.taxmtd.uk/api/receipts', {
  method: 'POST',
  body: { image: base64Image, merchant: 'Staples', amount: 45.99 }
})
Python
# Log mileage
requests.post(
    "https://dev.taxmtd.uk/api/mileage",
    json={
        "date": "2026-03-01",
        "from": "London",
        "to": "Manchester",
        "miles": 200,
        "purpose": "Client meeting",
    },
    cookies=session_cookies,
)

# Upload receipt
requests.post(
    "https://dev.taxmtd.uk/api/receipts",
    json={"image": base64_image, "merchant": "Staples", "amount": 45.99},
    cookies=session_cookies,
)
PHP
// Log mileage
Http::withCookies($session)
    ->post('https://dev.taxmtd.uk/api/mileage', [
        'date' => '2026-03-01',
        'from' => 'London',
        'to' => 'Manchester',
        'miles' => 200,
        'purpose' => 'Client meeting',
    ]);

// Upload receipt
Http::withCookies($session)
    ->post('https://dev.taxmtd.uk/api/receipts', [
        'image' => $base64Image,
        'merchant' => 'Staples',
        'amount' => 45.99,
    ]);
Rust
// Log mileage
client.post("https://dev.taxmtd.uk/api/mileage")
    .json(&serde_json::json!({
        "date": "2026-03-01",
        "from": "London",
        "to": "Manchester",
        "miles": 200,
        "purpose": "Client meeting"
    }))
    .send().await?;

// Upload receipt
client.post("https://dev.taxmtd.uk/api/receipts")
    .json(&serde_json::json!({
        "image": base64_image,
        "merchant": "Staples",
        "amount": 45.99
    }))
    .send().await?;
cURL
# Log mileage
curl -X POST https://dev.taxmtd.uk/api/mileage \
  -H "Content-Type: application/json" \
  -d '{"date":"2026-03-01","from":"London","to":"Manchester","miles":200,"purpose":"Client meeting"}'

# List mileage entries
curl https://dev.taxmtd.uk/api/mileage