Across every carrier, every site, every job.
Waste leaves your sites with a dozen different hauliers. Each runs their own paperwork — or their own software. You're the responsible party, yet your chain-of-custody data ends up scattered across other people's systems, created after the waste has already gone.
Paper tickets, carrier dockets, a different login for every provider. No single source of truth for your own waste.
If a load is ever questioned, can you show — quickly — where it went, who carried it, and that the site was permitted to receive it?
Under the new regime the receiving site creates the official record — at the end of the journey. You get visibility last, if at all.
Each ticket carries three identical copies of one code, on a base that sticks to the load. Each party peels a copy onto their own paperwork — every scan signs the same record, so custody is captured as it actually happens.
Every stamp creates data. Aggregated across your sites, carriers, and jobs — including route distance and carbon on every load — it gives you visibility you have never had. Accessible from the portal or via API.
Across all sites this quarter. Broken down by EWC code, carrier, and destination.
Full chain of custody on every load. Exceptions surfaced immediately, not at audit.
Volumes by site, cost by job, carrier performance, rejected loads — all in one place.
Every load's driven distance and estimated carbon, calculated from origin to destination — ready for sustainability reporting.
Point your phone camera at the code — no app, nothing to install. You'll see exactly what every party in the chain sees when they scan a stamp.
or open the live ticket →Waste records are legal documents — they have to be private, tamper‑proof and there when you need them. Wastestamp is built that way from the database up.
Every organisation's records are isolated by PostgreSQL row‑level security — enforced in the database, not just the app, and it fails closed. No company can ever see another's data.
Sign‑offs are written once and the audit log is append‑only, enforced by database triggers. A completed transfer note can't be altered, deleted or back‑dated.
Encrypted in transit and at rest on Microsoft Azure (UK South). Automated daily backups with point‑in‑time recovery, auto‑scaling, and offline‑tolerant capture so a lost signal never loses a sign‑off.
Export your records whenever you like, or pull them into your own reporting and BI over the API. You own the data — we just keep it safe.
Built to align with ISO/IEC 27001 information‑security principles and UK GDPR. Formal certification is on our roadmap.
Every Wastestamp QR is a public, machine‑readable reference. Weighbridges, transport software, ERP and waste platforms can scan a stamp during transit and pull the transfer note straight into their own system — no account, no SDK, no login. During transit, possession of the stamp is the key — and each code is cryptographically random (60‑bit), so it can't be guessed or enumerated.
All four panels on a stamp encode the same link. A phone camera or barcode scanner reads it as a plain URL.
The code is the last path segment — the letters WS followed by 12 base‑32 characters. Re‑insert dashes for the printed form.
One GET returns the waste description, EWC codes, weights, carrier and destination in a DEFRA‑aligned schema.
https://t.wastestamp.co.uk/WSK7X3P2M9R4TN
// scanned = the QR payload (a URL) const code = new URL(scanned).pathname .split('/').filter(Boolean).pop(); // -> "WSK7X3P2M9R4TN" // printed form: WS-K7X3-P2M9-R4TN // validate: /^WS[A-Z2-7]{12}$/
GET https://api.wastestamp.co.uk/t/WSK7X3P2M9R4TN/dtn Accept: application/json
{
"format": "DEFRA_DWT_RECEIPT_V1",
"ticketRef": "WS-K7X3-P2M9-R4TN",
"status": "accepted",
"sealed": false,
"dwtTrackingId": null,
"dateTimeReceived": "2026-06-18T11:48:00.000Z",
"wasteItems": [{
"ewcCodes": ["170503"],
"wasteDescription": "Hydrocarbon-impacted soil",
"physicalForm": "Solid",
"numberOfContainers": 2,
"typeOfContainers": "LOO",
"weight": { "metric": "Tonnes", "amount": 21.6, "isEstimate": false },
"containsPops": false,
"containsHazardous": true,
"hazardous": {
"sourceOfComponents": "PROVIDED_WITH_WASTE",
"hazCodes": ["HP7", "HP14"],
"components": [
{ "name": "Total petroleum hydrocarbons", "concentration": 0.8 },
{ "name": "Benzo(a)pyrene", "concentration": 0.02 }
]
},
"disposalOrRecoveryCodes": [
{ "code": "R5", "weight": { "metric": "Tonnes", "amount": 21.6, "isEstimate": false } }
]
}],
"carrier": {
"registrationNumber": "CBDU248173",
"organisationName": "Hargreaves Haulage Ltd",
"meansOfTransport": "Road",
"vehicleRegistration": "HX19 TYR",
"address": { "fullAddress": "Tilbury Depot, Essex RM18 7JR", "postcode": "RM18 7JR" }
},
"receiver": {
"siteName": "Brookfield Soil Treatment Centre",
"authorisationNumber": "EPR/BX1234CD"
},
"receipt": {
"address": { "fullAddress": "Brookfield Lane, Dartford, Kent DA1 5PQ", "postcode": "DA1 5PQ" }
},
"yourUniqueReference": "WS-K7X3-P2M9-R4TN",
"hazardousWasteConsignmentCode": "WSTMP/A1B2C3",
"otherReferencesForMovement": [
{ "label": "Consignment Note", "reference": "WSTMP/A1B2C3" }
]
}
The full record stays readable in transit and for a grace window after delivery — long enough for the receiving system to scan it in. After that it seals (sealed: true, stub only) and parties sign in to keep the record.
We're working quietly with a small number of producers ahead of the rollout. Leave a contact and we'll be in touch.