Facturen

Facturen

Facturen ophalen, aanmaken en versturen. Scope: invoices.read / invoices.write. Type is vast invoice (geen type-query).

Facturen ophalen

GET /v1/invoices
invoices.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Query
Naam Type Beschrijving
page integer Paginanummer (vanaf 1, default 1)
per_page integer Items per pagina (default 25, max 200)
id string
client_id string
legacy_status_id integer Legacy integer filter; removed in v2.
number string Filter op documentnummer
date_from string Factuurdatum vanaf (Y-m-d)
date_to string Factuurdatum tot (Y-m-d)
due_date_from string Vervaldatum vanaf (Y-m-d)
due_date_to string Vervaldatum tot (Y-m-d)
created_from string Aangemaakt vanaf
created_to string Aangemaakt tot
search string Vrije tekstzoekopdracht
payment_status string Filter op payment_status
sort string Sortering: invoice_date, due_date, created_at, number, id
order string asc of desc (default desc)
Request body

Geen

Response
data array
id string
number string
title string
type string

Document type is fixed by the route; not accepted on create.

Enum
invoice quote subscription
invoice_date string
due_date string
created_at string
subtotal number
vat_rate number
vat_amount number
total_excl_vat number
total_incl_vat number
client_id string
payment_status string

Free string matching Invoice_Payment_Status (exact). Not a closed enum in the handler.

paid_at string Nullable
sent_at string Nullable
project_number string Nullable
is_credit boolean
meta object
page integer
per_page integer
total integer
pages integer

Examples

GET /v1/invoices
curl -X GET "https://api.appficient.nl/v1/invoices" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node en response staan rechts naast dit endpoint.

Factuur aanmaken

POST /v1/invoices
invoices.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Headers
Naam Type Beschrijving
Idempotency-Key string Optional on POST only; cached 24h; replay returns X-Idempotent-Replay
Request body
title string Required
client_id string
client_external_id string
invoice_date string

Y-m-d

due_date string

Y-m-d

generation_mode string

Invoice/quote creation mode. - `draft` — draft (default) - `final` — finalize + number (+ PDF when supported) Body `generate: true` forces `final`.

Enum
draft final
Example: draft
generate boolean

When true, forces generation_mode=final

rows array
name string
title string
description string
quantity number
unit_price number
unit string
vat_rate string
vat_code string
subtotal number
vat_rate number
vat_amount number
total_excl_vat number
total_incl_vat number
legacy_status_id integer

Legacy integer input only; removed in v2.

legacy_phase_id integer

Legacy integer input only; removed in v2.

legacy_employee_id integer

Legacy integer input only; removed in v2.

legacy_employee_created_id integer

Legacy integer input only; removed in v2.

number string
payment_status string

Free string written when non-empty

Response
data object

ID-only (UUID). Internal ints (status/fase/employee) are not returned.

id string
number string
title string
type string

Document type is fixed by the route; not accepted on create.

Enum
invoice quote subscription
invoice_date string
due_date string
created_at string
subtotal number
vat_rate number
vat_amount number
total_excl_vat number
total_incl_vat number
client_id string
payment_status string

Free string matching Invoice_Payment_Status (exact). Not a closed enum in the handler.

paid_at string Nullable
sent_at string Nullable
project_number string Nullable
is_credit boolean
rows array
name string
description string
quantity number
unit string
unit_price number
vat_rate string
total_excl_vat number
total_incl_vat number
client_company_name string
client_firstname string
client_lastname string
web_url string
pdf_url string
meta object
generation_mode string

Invoice/quote creation mode. - `draft` — draft (default) - `final` — finalize + number (+ PDF when supported) Body `generate: true` forces `final`.

Enum
draft final
Example: draft
pdf object
generated boolean
status string
message string Nullable
url string Nullable

Examples

POST /v1/invoices
curl -X POST "https://api.appficient.nl/v1/invoices" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "00000000-0000-0000-0000-000000000001",
    "title": "Concept invoice",
    "generation_mode": "draft"
}'

Curl, Node en response staan rechts naast dit endpoint.

Factuur ophalen

GET /v1/invoices/{id}
invoices.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
Request body

Geen

Response
data object

ID-only (UUID). Internal ints (status/fase/employee) are not returned.

id string
number string
title string
type string

Document type is fixed by the route; not accepted on create.

Enum
invoice quote subscription
invoice_date string
due_date string
created_at string
subtotal number
vat_rate number
vat_amount number
total_excl_vat number
total_incl_vat number
client_id string
payment_status string

Free string matching Invoice_Payment_Status (exact). Not a closed enum in the handler.

paid_at string Nullable
sent_at string Nullable
project_number string Nullable
is_credit boolean
rows array
name string
description string
quantity number
unit string
unit_price number
vat_rate string
total_excl_vat number
total_incl_vat number
client_company_name string
client_firstname string
client_lastname string
web_url string
pdf_url string
meta object

Examples

GET /v1/invoices/{id}
curl -X GET "https://api.appficient.nl/v1/invoices/{id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node en response staan rechts naast dit endpoint.

Factuur bijwerken

PATCH /v1/invoices/{id}
invoices.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
Request body
title string
invoice_date string

Y-m-d

due_date string

Y-m-d

payment_status string

Free string; applied when non-empty

Response
data object

ID-only (UUID). Internal ints (status/fase/employee) are not returned.

id string
number string
title string
type string

Document type is fixed by the route; not accepted on create.

Enum
invoice quote subscription
invoice_date string
due_date string
created_at string
subtotal number
vat_rate number
vat_amount number
total_excl_vat number
total_incl_vat number
client_id string
payment_status string

Free string matching Invoice_Payment_Status (exact). Not a closed enum in the handler.

paid_at string Nullable
sent_at string Nullable
project_number string Nullable
is_credit boolean
rows array
name string
description string
quantity number
unit string
unit_price number
vat_rate string
total_excl_vat number
total_incl_vat number
client_company_name string
client_firstname string
client_lastname string
web_url string
pdf_url string
meta object

Examples

PATCH /v1/invoices/{id}
curl -X PATCH "https://api.appficient.nl/v1/invoices/{id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "string",
    "invoice_date": "2026-07-01",
    "due_date": "2026-07-01",
    "payment_status": "string"
}'

Curl, Node en response staan rechts naast dit endpoint.

Factuur verwijderen

DELETE /v1/invoices/{id}
invoices.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
Request body

Geen

Response
data object

ID-only (UUID). Internal ints (status/fase/employee) are not returned.

id string
number string
title string
type string

Document type is fixed by the route; not accepted on create.

Enum
invoice quote subscription
invoice_date string
due_date string
created_at string
subtotal number
vat_rate number
vat_amount number
total_excl_vat number
total_incl_vat number
client_id string
payment_status string

Free string matching Invoice_Payment_Status (exact). Not a closed enum in the handler.

paid_at string Nullable
sent_at string Nullable
project_number string Nullable
is_credit boolean
rows array
name string
description string
quantity number
unit string
unit_price number
vat_rate string
total_excl_vat number
total_incl_vat number
client_company_name string
client_firstname string
client_lastname string
web_url string
pdf_url string
meta object

Examples

DELETE /v1/invoices/{id}
curl -X DELETE "https://api.appficient.nl/v1/invoices/{id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node en response staan rechts naast dit endpoint.

Factuur versturen

POST /v1/invoices/{id}/send
invoices.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
Headers
Naam Type Beschrijving
Idempotency-Key string Optional on POST only; cached 24h; replay returns X-Idempotent-Replay
Request body
to string Required

Comma-separated emails

subject string Required
message string Required
cc string
send_type string

Mail/document send context. Default `invoice`. Free string accepted; domain switch keys are listed (recommended).

Enum
invoice quote credit invoice_rem1 invoice_rem2 invoice_rem3 quote_rem1 quote_rem2 quote_rem3 order_confirmation subscription workorder
Example: invoice
include_pdf boolean
Example: 1
Response
data object
success boolean
recipients array
recipients_list string
meta object

Examples

POST /v1/invoices/{id}/send
curl -X POST "https://api.appficient.nl/v1/invoices/{id}/send" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "string",
    "cc": "string",
    "subject": "string",
    "message": "string",
    "send_type": "invoice",
    "include_pdf": true
}'

Curl, Node en response staan rechts naast dit endpoint.

Factuur crediteren

POST /v1/invoices/{id}/credit
invoices.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
Request body
credit_all boolean
Example: 1
row_indexes array

0-based row indexes; required when credit_all is false

Response
data object

ID-only (UUID). Internal ints (status/fase/employee) are not returned.

id string
number string
title string
type string

Document type is fixed by the route; not accepted on create.

Enum
invoice quote subscription
invoice_date string
due_date string
created_at string
subtotal number
vat_rate number
vat_amount number
total_excl_vat number
total_incl_vat number
client_id string
payment_status string

Free string matching Invoice_Payment_Status (exact). Not a closed enum in the handler.

paid_at string Nullable
sent_at string Nullable
project_number string Nullable
is_credit boolean
rows array
name string
description string
quantity number
unit string
unit_price number
vat_rate string
total_excl_vat number
total_incl_vat number
client_company_name string
client_firstname string
client_lastname string
web_url string
pdf_url string
meta object

Examples

POST /v1/invoices/{id}/credit
curl -X POST "https://api.appficient.nl/v1/invoices/{id}/credit" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "credit_all": true,
    "row_indexes": [
        0
    ]
}'

Curl, Node en response staan rechts naast dit endpoint.

Factuur-PDF downloaden

GET /v1/invoices/{id}/pdf
invoices.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
Request body

Geen

Response
data object
id string
type string

Document type is fixed by the route; not accepted on create.

Enum
invoice quote subscription
pdf_url string
meta object

Examples

GET /v1/invoices/{id}/pdf
curl -X GET "https://api.appficient.nl/v1/invoices/{id}/pdf" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node en response staan rechts naast dit endpoint.

Betalingen ophalen

GET /v1/invoices/{id}/payments
invoices.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
Query
Naam Type Beschrijving
external_id string Alias of external_id
status string Recommended payment status values. Writes also accept other free-text values.
type string Typically manual|online
Request body

Geen

Response
data array
id string
amount number
date string

Y-m-d

status string

Payment status as stored / returned. Handler accepts free string on write; domain-normalized values are listed in the enum (recommended).

Enum
open pending paid failed canceled expired authorized created
type string

Payment channel.

Enum
manual online
Example: manual
method string

Payment method. Free string accepted on write; domain map lists common values. Online+external_id defaults to `ideal` when empty.

Enum
ideal paypal klarna bancontact in3 creditcard banktransfer
external_id string
provider string
meta object

Examples

GET /v1/invoices/{id}/payments
curl -X GET "https://api.appficient.nl/v1/invoices/{id}/payments" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node en response staan rechts naast dit endpoint.

Betaling registreren

POST /v1/invoices/{id}/payments
invoices.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
Headers
Naam Type Beschrijving
Idempotency-Key string Optional on POST only; cached 24h; replay returns X-Idempotent-Replay
Request body
type string

Payment channel.

Enum
manual online
Example: manual
amount number
date string

Y-m-d; defaults to today

description string
external_id string
provider string
status string

Free on write; see PaymentStatus for domain values. Defaults depend on path (manual→paid, online checkout→open, online+ext→body or paid).

method string

Free on write; see PaymentMethod. Online+ext defaults to ideal when empty.

payment_data object
feedback_data object
Response
data object
invoice object
id string
paid_amount number
price number
payment object
id string
amount number
date string

Y-m-d

status string

Payment status as stored / returned. Handler accepts free string on write; domain-normalized values are listed in the enum (recommended).

Enum
open pending paid failed canceled expired authorized created
type string

Payment channel.

Enum
manual online
Example: manual
method string

Payment method. Free string accepted on write; domain map lists common values. Online+external_id defaults to `ideal` when empty.

Enum
ideal paypal klarna bancontact in3 creditcard banktransfer
external_id string
provider string
meta object

Examples

POST /v1/invoices/{id}/payments
curl -X POST "https://api.appficient.nl/v1/invoices/{id}/payments" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "manual",
    "amount": 0,
    "date": "2026-07-01",
    "description": "string",
    "external_id": "string",
    "provider": "string",
    "status": "string",
    "method": "string",
    "payment_data": [],
    "feedback_data": []
}'

Curl, Node en response staan rechts naast dit endpoint.

Betaling bijwerken

PATCH /v1/invoices/{id}/payments/{payment_id}
invoices.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
payment_id Required string
Request body
amount number
date string
status string

Free; if becomes paid, invoice may be marked paid

method string
external_id string
provider string
payment_data object
Response
data object
invoice object
id string
paid_amount number
price number
payment object
id string
amount number
date string

Y-m-d

status string

Payment status as stored / returned. Handler accepts free string on write; domain-normalized values are listed in the enum (recommended).

Enum
open pending paid failed canceled expired authorized created
type string

Payment channel.

Enum
manual online
Example: manual
method string

Payment method. Free string accepted on write; domain map lists common values. Online+external_id defaults to `ideal` when empty.

Enum
ideal paypal klarna bancontact in3 creditcard banktransfer
external_id string
provider string
meta object

Examples

PATCH /v1/invoices/{id}/payments/{payment_id}
curl -X PATCH "https://api.appficient.nl/v1/invoices/{id}/payments/{payment_id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 0,
    "date": "2026-07-01",
    "status": "string",
    "method": "string",
    "external_id": "string",
    "provider": "string",
    "payment_data": []
}'

Curl, Node en response staan rechts naast dit endpoint.

Betaling verwijderen

DELETE /v1/invoices/{id}/payments/{payment_id}
invoices.write
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Path
Naam Type Beschrijving
id Required string Resource id (UUID, lowercase)
payment_id Required string
Request body

Geen

Response

Geen

Examples

DELETE /v1/invoices/{id}/payments/{payment_id}
curl -X DELETE "https://api.appficient.nl/v1/invoices/{id}/payments/{payment_id}" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node en response staan rechts naast dit endpoint.

Betaaltermijnen ophalen

GET /v1/payment-terms
invoices.read
Authorization: HTTP
name: httpBearer
type: http
scheme: bearer
Request body

Geen

Response
data array
code string
days integer
label string
meta object

Examples

GET /v1/payment-terms
curl -X GET "https://api.appficient.nl/v1/payment-terms" \
  -H "Authorization: Bearer apf_xxxxxxxx" \
  -H "Accept: application/json"

Curl, Node en response staan rechts naast dit endpoint.