Bills & Expenses
Upload a bill or expense
POST/bills
Upload one PDF, JPEG, PNG, HEIC or HEIF file up to 10 MB. The file's magic bytes must match its type. Neno detects whether it is an invoice, receipt or credit note. Do not send a document type. HEIC and HEIF uploads are stored and downloaded as JPEG files.
Requires the bills:write scope. Duplicate file content in the same workspace returns the existing bill with duplicate: true.
New bills start with processingStatus=PROCESSING. Poll GET /bills/{id} until processingStatus is REVIEWED or FAILED.
Headers
Idempotency-Keystring · max 255required
Client-generated key that identifies one write for 24 hours. Reuse it only when retrying the same method, path, query, and body.
Body · multipart/form-data
filestring · binaryrequired
PDF, JPEG, PNG, HEIC or HEIF file, up to 10 MB. HEIC and HEIF files are stored as JPEG.
notestring · max 1000
Responses
200
OK. A matching bill already exists.
duplicate is true.201
Created. Uploaded and queued for processing.
400
Bad request. Invalid multipart form.
401
Unauthorized. Missing, invalid, revoked, or expired API key.
403
Forbidden. The API key lacks a required scope or the creator lacks a required permission.
409
Conflict. A matching request with this Idempotency-Key is still in progress. Retry after one second.
413
Payload too large. File exceeds the 10 MB limit.
415
Unsupported media type. Unsupported file type or file bytes do not match the declared type.
422
Unprocessable content. This Idempotency-Key was already used for a different request.
429
Too many requests. Rate limit exceeded.