Mileage & Receipts
Track business mileage and capture receipts with OCR for automatic matching.
Mileage Tracker
Log business trips with HMRC-approved mileage rates:
| Miles | Rate | Example |
|---|---|---|
| First 10,000 | 45p/mile | 8,000 miles = £3,600 |
| Over 10,000 | 25p/mile | 12,000 miles = £5,000 |
| Motorcycle | 24p/mile | All miles |
| Bicycle | 20p/mile | All 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:
- Snap - take a photo or upload an image
- OCR - TaxMTD extracts merchant, amount, and date
- Match - automatically links to your bank transaction
- 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://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://taxmtd.uk/api/receipts', {
method: 'POST',
body: { image: base64Image, merchant: 'Staples', amount: 45.99 }
})
Python
# Log mileage
requests.post(
"https://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://taxmtd.uk/api/receipts",
json={"image": base64_image, "merchant": "Staples", "amount": 45.99},
cookies=session_cookies,
)
PHP
// Log mileage
Http::withCookies($session)
->post('https://taxmtd.uk/api/mileage', [
'date' => '2026-03-01',
'from' => 'London',
'to' => 'Manchester',
'miles' => 200,
'purpose' => 'Client meeting',
]);
// Upload receipt
Http::withCookies($session)
->post('https://taxmtd.uk/api/receipts', [
'image' => $base64Image,
'merchant' => 'Staples',
'amount' => 45.99,
]);
Rust
// Log mileage
client.post("https://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://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://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://taxmtd.uk/api/mileage