Vendors
The suppliers you record expenses against.
Operations
| Method & path | Ability |
|---|---|
GET /api/v1/vendors |
vendors:read |
GET /api/v1/vendors/{vendor} |
vendors:read |
POST /api/v1/vendors |
vendors:write |
PATCH /api/v1/vendors/{vendor} |
vendors:write |
DELETE /api/v1/vendors/{vendor} |
vendors:write |
Create a vendor
Only name is required. category, website, iban, and bic are optional. As a create it takes an Idempotency-Key.
curl -X POST https://billey.nl/api/v1/vendors \
-H "Authorization: Bearer $TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{ "name": "Office Supplies B.V.", "category": "Supplies", "iban": "NL00RABO0123456789" }'
{
"data": {
"id": 3,
"name": "Office Supplies B.V.",
"category": "Supplies",
"iban": "NL00RABO0123456789",
"created_at": "2026-07-21T10:15:30Z"
}
}
Read-only vendor fields
notes, known_sender_emails, and match_subject_keywords are returned on reads but are not settable through the API — they are managed by Billey's inbound-document matching. PATCH is a partial merge; every writable field is optional.
Delete a vendor
DELETE soft-deletes the vendor and returns 204. It is refused with 409 if the vendor has a non-draft or asset-linked expense, a bank transaction, or a booking rule; the vendor's own draft expenses cascade.
See the OpenAPI spec for the full field list.
Something inaccurate or missing?
support@billey.nl