A delivery receipt template for the person at the door

Updated 2026-10-30

A driver hands over a box and leaves. Later the shelf count is short, and nobody can say what arrived or in what state. A receipt written at the door settles that.

How it works

  1. The receiver gives their name, the date and the reference on the delivery note.
  2. They list what arrived and how many packages there were.
  3. They pick the condition and describe any damage or shortage.
  4. They tick a confirmation box and type their name.

A sample chat

The receiver's AI might ask: "What is the reference on the delivery note?" Then "What arrived?" Then "Is anything damaged or missing?" It shows all the answers and sends them only after a yes. Read more about agent-fillable forms.

Good to know

People also search for a proof of delivery form. This one has no handwritten signature and no photo upload. The tick box and typed name stand in for a signature, and a link field takes photos taken elsewhere.

I ask the receiver to fill it in before the driver leaves, because a shortage is hard to argue about later. Count what arrived against your inventory template. Meet a new supplier first with a supplier application. More tools are in IT and operations forms and forms for ecommerce and Shopify stores.

Questions

Who should fill it in, the driver or the receiver?

The person who counts the goods. The driver is only named in a field. That person knows what actually arrived and in what state.

Can I use it for goods I send out?

Yes. Ask your customer or driver to fill it in on arrival, and use the reference field for your own order number. The form works the same for incoming and outgoing goods.

How do I match receipts to invoices?

Download the CSV and match `delivery_reference` to the reference on the supplier invoice. Rows with a condition other than all good are the ones to raise with the supplier.

Try the form

Live demo ยท nothing is saved

Confirm your delivery

Fill this in when the delivery arrives. Note anything damaged or missing before the driver leaves.

What condition was it in? (required)
I confirm the goods arrived as described above (required)

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "Confirm your delivery",
  "description": "Fill this in when the delivery arrives. Note anything damaged or missing before the driver leaves.",
  "fields": [
    {
      "id": "receiver_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "delivery_date",
      "label": "Date of delivery",
      "type": "date",
      "required": true
    },
    {
      "id": "delivery_reference",
      "label": "Order or delivery note reference",
      "type": "short_text",
      "required": true,
      "max_length": 100
    },
    {
      "id": "supplier_name",
      "label": "Supplier or sender",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "driver_name",
      "label": "Driver or courier name",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "items_received",
      "label": "What arrived?",
      "type": "long_text",
      "required": true,
      "max_length": 1500
    },
    {
      "id": "packages_counted",
      "label": "Number of packages",
      "type": "number",
      "min": 0,
      "max": 999
    },
    {
      "id": "delivery_condition",
      "label": "What condition was it in?",
      "type": "single_choice",
      "required": true,
      "options": [
        "All good",
        "Outer packaging damaged, goods fine",
        "Some goods damaged",
        "Items missing",
        "Wrong items"
      ]
    },
    {
      "id": "problem_details",
      "label": "Details of any damage or shortage",
      "type": "long_text",
      "max_length": 1000
    },
    {
      "id": "left_at",
      "label": "Where was it left?",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "photo_link",
      "label": "Link to a photo",
      "type": "url"
    },
    {
      "id": "confirm_receipt",
      "label": "I confirm the goods arrived as described above",
      "type": "checkbox",
      "required": true
    },
    {
      "id": "typed_name",
      "label": "Type your full name to confirm",
      "type": "short_text",
      "required": true,
      "max_length": 150
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Confirm your delivery","description":"Fill this in when the delivery arrives. Note anything damaged or missing before the driver leaves.","fields":[{"id":"receiver_name","label":"Your name","type":"short_text","required":true,"max_length":150},{"id":"delivery_date","label":"Date of delivery","type":"date","required":true},{"id":"delivery_reference","label":"Order or delivery note reference","type":"short_text","required":true,"max_length":100},{"id":"supplier_name","label":"Supplier or sender","type":"short_text","max_length":150},{"id":"driver_name","label":"Driver or courier name","type":"short_text","max_length":150},{"id":"items_received","label":"What arrived?","type":"long_text","required":true,"max_length":1500},{"id":"packages_counted","label":"Number of packages","type":"number","min":0,"max":999},{"id":"delivery_condition","label":"What condition was it in?","type":"single_choice","required":true,"options":["All good","Outer packaging damaged, goods fine","Some goods damaged","Items missing","Wrong items"]},{"id":"problem_details","label":"Details of any damage or shortage","type":"long_text","max_length":1000},{"id":"left_at","label":"Where was it left?","type":"short_text","max_length":150},{"id":"photo_link","label":"Link to a photo","type":"url"},{"id":"confirm_receipt","label":"I confirm the goods arrived as described above","type":"checkbox","required":true},{"id":"typed_name","label":"Type your full name to confirm","type":"short_text","required":true,"max_length":150}]}'

JSON definition

json
{
  "title": "Confirm your delivery",
  "description": "Fill this in when the delivery arrives. Note anything damaged or missing before the driver leaves.",
  "fields": [
    {
      "id": "receiver_name",
      "label": "Your name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "delivery_date",
      "label": "Date of delivery",
      "type": "date",
      "required": true
    },
    {
      "id": "delivery_reference",
      "label": "Order or delivery note reference",
      "type": "short_text",
      "required": true,
      "max_length": 100
    },
    {
      "id": "supplier_name",
      "label": "Supplier or sender",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "driver_name",
      "label": "Driver or courier name",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "items_received",
      "label": "What arrived?",
      "type": "long_text",
      "required": true,
      "max_length": 1500
    },
    {
      "id": "packages_counted",
      "label": "Number of packages",
      "type": "number",
      "min": 0,
      "max": 999
    },
    {
      "id": "delivery_condition",
      "label": "What condition was it in?",
      "type": "single_choice",
      "required": true,
      "options": [
        "All good",
        "Outer packaging damaged, goods fine",
        "Some goods damaged",
        "Items missing",
        "Wrong items"
      ]
    },
    {
      "id": "problem_details",
      "label": "Details of any damage or shortage",
      "type": "long_text",
      "max_length": 1000
    },
    {
      "id": "left_at",
      "label": "Where was it left?",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "photo_link",
      "label": "Link to a photo",
      "type": "url"
    },
    {
      "id": "confirm_receipt",
      "label": "I confirm the goods arrived as described above",
      "type": "checkbox",
      "required": true
    },
    {
      "id": "typed_name",
      "label": "Type your full name to confirm",
      "type": "short_text",
      "required": true,
      "max_length": 150
    }
  ]
}