Skip to main content
POST
/
v1
/
generate-wtn
Generate WTN
curl --request POST \
  --url https://api.example.com/v1/generate-wtn \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: <content-type>' \
  --data '
{
  "producer": {},
  "producer.name": "<string>",
  "producer.address": "<string>",
  "producer.sic_code": "<string>",
  "producer.contact_name": "<string>",
  "carrier": {},
  "carrier.registration_number": "<string>",
  "carrier.auto_verify": true,
  "waste": {},
  "waste.description": "<string>",
  "waste.auto_classify": true,
  "waste.ewc_code": "<string>",
  "waste.quantity_kg": 123,
  "waste.container_type": "<string>",
  "destination": {},
  "destination.name": "<string>",
  "destination.address": "<string>",
  "destination.permit_number": "<string>",
  "transfer_date": "<string>"
}
'
{
  "reference": "<string>",
  "duty_of_care": {},
  "duty_of_care.all_checks_passed": true
}

Documentation Index

Fetch the complete documentation index at: https://docs.wastecheck.co.uk/llms.txt

Use this file to discover all available pages before exploring further.

Generate WTN

Generates a fully structured, compliance-checked digital Waste Transfer Note. This is a composite endpoint that runs carrier verification and waste classification in parallel internally, then combines the results into a single WTN document. Each WTN is persisted with a unique reference and can be retrieved later via GET /v1/wtn/.
Requires authentication via Authorization header. See Authentication.

Request

Method: POST Path: /v1/generate-wtn

Headers

Authorization
string
required
Bearer token with your API key, e.g. Bearer wc_live_your_key
Content-Type
string
required
Must be application/json

Body Parameters

producer
object
required
The business producing the waste
producer.name
string
required
Business name
producer.address
string
required
Business address
producer.sic_code
string
SIC code for the producer’s industry
producer.contact_name
string
Contact person’s name
carrier
object
required
The waste carrier
carrier.registration_number
string
required
CBDU/CBDL registration number
carrier.auto_verify
boolean
Verify against EA register (default: true)
waste
object
required
Details of the waste being transferred
waste.description
string
required
Plain-English waste description
waste.auto_classify
boolean
Classify into EWC codes (default: true)
waste.ewc_code
string
Provide directly if auto_classify is false
waste.quantity_kg
number
Weight in kilograms
waste.container_type
string
Container type (e.g. skip, wheelie_bin, drum)
destination
object
required
The receiving waste facility
destination.name
string
required
Facility name
destination.address
string
required
Facility address
destination.permit_number
string
Environmental permit number (e.g. EPR/AB1234CD)
transfer_date
string
required
Date of waste transfer (YYYY-MM-DD format)

Response

Success Response (201)

{
  "reference": "WTN-2026-0325-A7X9",
  "status": "complete",
  "producer": {
    "name": "ABC Office Fit-out Ltd",
    "address": "45 High Street, Bournemouth, BH1 2AA",
    "sic_code": "43320"
  },
  "carrier": {
    "registration_number": "CBDU217016",
    "business_name": "ACME WASTE SERVICES LTD",
    "tier": "upper",
    "verified": true,
    "expiry_date": "2027-01-15"
  },
  "waste": {
    "description": "Broken plasterboard from office refurbishment",
    "ewc_code": "17 08 02",
    "ewc_description": "Gypsum-based construction materials",
    "is_hazardous": false,
    "quantity_kg": 2500,
    "container_type": "skip"
  },
  "destination": {
    "name": "South Coast Recycling Ltd",
    "address": "Industrial Estate, Poole, BH15 1NF",
    "permit_number": "EPR/AB1234CD"
  },
  "duty_of_care": {
    "producer_identified": true,
    "carrier_verified": true,
    "waste_classified": true,
    "destination_provided": true,
    "all_checks_passed": true
  },
  "compliance": {
    "is_compliant": true,
    "flags": [],
    "warnings": []
  },
  "transfer_date": "2026-03-25",
  "created_at": "2026-03-25T14:32:00Z"
}
reference
string
Unique WTN reference (e.g. WTN-2026-0325-A7X9). Use this to retrieve the WTN later.
duty_of_care
object
Confirms whether each legal requirement for waste transfer is met
duty_of_care.all_checks_passed
boolean
True only when all duty of care checks pass

Duty of Care Checklist

FieldDescription
producer_identifiedProducer name and address are provided
carrier_verifiedCarrier registration verified against the EA register
waste_classifiedWaste has been classified with a valid EWC code
destination_providedDestination facility name and address are provided
all_checks_passedTrue only when all above checks pass

Performance Notes

Total latency is typically 2-3 seconds, driven by the classification step. If you provide an ewc_code directly and set auto_classify to false, latency drops to ~500ms. WTNs are not cached. Each request creates a new document. The internal calls to /v1/verify-carrier and /v1/classify-waste use their own caches, so repeated WTNs for the same carrier or waste type are faster.

Error Responses

CodeHTTPWhen
INVALID_REQUEST400Missing required fields
CARRIER_NOT_FOUND404Carrier registration not found (when auto_verify is true)
CLASSIFICATION_FAILED500Waste classification could not be completed

Example

curl -X POST https://api.wastecheck.co.uk/v1/generate-wtn \
  -H "Authorization: Bearer wc_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "producer": {
      "name": "ABC Office Fit-out Ltd",
      "address": "45 High Street, Bournemouth, BH1 2AA",
      "sic_code": "43320"
    },
    "carrier": {
      "registration_number": "CBDU217016",
      "auto_verify": true
    },
    "waste": {
      "description": "Broken plasterboard from office refurbishment",
      "auto_classify": true,
      "quantity_kg": 2500,
      "container_type": "skip"
    },
    "destination": {
      "name": "South Coast Recycling Ltd",
      "address": "Industrial Estate, Poole, BH15 1NF",
      "permit_number": "EPR/AB1234CD"
    },
    "transfer_date": "2026-03-25"
  }'