Upload receipt
Upload a receipt file as a draft in Belege and return what the recognition found.
POST https://cotlet.dev/api/v1/sevdesk/receipts
Uploads a PDF, PNG or JPG from a URL to Belege as a draft, the same as dragging the file into the overview. sevdesk then tries to fill date, amount, receipt number, supplier and category, and the response shows what it found. The upload stays a draft: nothing is booked and nobody is notified, so it runs without asking first. Check the category and tax rule in sevdesk before you finish it.
Parameters
| Name | Type | Description |
|---|---|---|
| file_url string required | string | Public or signed URL of a PDF, PNG or JPG file. |
| kind enum required | enum | expense (Ausgabe) or income (Einnahme). |
Request
curl -X POST https://cotlet.dev/api/v1/sevdesk/receipts \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"file_url":"https://files.example.com/receipts/cloud-hosting-2026-10.pdf","kind":"expense"}' result = client.call("sevdesk", "upload_receipt", {"file_url":"https://files.example.com/receipts/cloud-hosting-2026-10.pdf","kind":"expense"}) const result = await cotlet.call('sevdesk', 'upload_receipt', {"file_url":"https://files.example.com/receipts/cloud-hosting-2026-10.pdf","kind":"expense"}); cotlet call sevdesk upload_receipt --data '{"file_url":"https://files.example.com/receipts/cloud-hosting-2026-10.pdf","kind":"expense"}' Example response
{
"voucher_id": "77120418",
"kind": "expense",
"status": "draft",
"recognized": {
"supplier": "Nordhost Cloud GmbH",
"receipt_number": "NH-2026-1012",
"receipt_date": "2026-10-12",
"total_gross": 39,
"currency": "EUR",
"category": null
}
}