Proof of delivery
Every delivery ends with evidence. What the courier has to record is your proof policy, set in the merchant portal, and each job keeps the policy as it stood when it was booked:
"proof_requirement": { "photo_required": true, "signature_required": false }- Photo — a photograph of every delivery: the parcel at the door, or in the hands of whoever took it.
- Signature — whoever takes it signs on the courier’s screen. A job that needs a signature is never left when nobody answers.
Whatever the policy, a parcel left anywhere always needs a photograph and a note, and a return always needs a photograph.
Reading the proof
Section titled “Reading the proof”Once the job ends at the door, proof on the job says how:
"proof": { "outcome": "handed_to_recipient", "recipient_name": "Alex", "note": null, "recorded_at": "2026-10-10T12:31:02+00:00", "photo_url": "https://files.courier.example/proof/…", "signature_url": null}| Field | |
|---|---|
outcome |
handed_to_recipient or left_in_safe_place. |
recipient_name |
Who took it, if the courier was told. |
note |
Where it was left, or anything else the courier wanted known. |
photo_url, signature_url |
Links to the images. They expire — read the job again for fresh ones rather than storing them. |
The job.delivered webhook carries the same facts without the links — outcome,
recipientName, note, hasPhoto and hasSignature — because a link that expires doesn’t belong in a
message that may be retried hours later.