curl --request POST \
--url https://api.mijnklantportaal.nl/v1/customer-invoices \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form customerId=cst_abc12345def678 \
--form invoiceNumber=2014-001 \
--form issuedAt=2024-04-31 \
--form amount=12.95 \
--form pdf='@example-file' \
--form dueAt=2024-05-28 \
--form 'paidAt=2024-05-11 12:59:00' \
--form sendNotification=trueimport requests
url = "https://api.mijnklantportaal.nl/v1/customer-invoices"
files = { "pdf": ("example-file", open("example-file", "rb")) }
payload = {
"customerId": "cst_abc12345def678",
"invoiceNumber": "2014-001",
"issuedAt": "2024-04-31",
"amount": "12.95",
"dueAt": "2024-05-28",
"paidAt": "2024-05-11 12:59:00",
"sendNotification": "true"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('customerId', 'cst_abc12345def678');
form.append('invoiceNumber', '2014-001');
form.append('issuedAt', '2024-04-31');
form.append('amount', '12.95');
form.append('pdf', '<string>');
form.append('dueAt', '2024-05-28');
form.append('paidAt', '2024-05-11 12:59:00');
form.append('sendNotification', 'true');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.mijnklantportaal.nl/v1/customer-invoices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mijnklantportaal.nl/v1/customer-invoices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customerId\"\r\n\r\ncst_abc12345def678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoiceNumber\"\r\n\r\n2014-001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issuedAt\"\r\n\r\n2024-04-31\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount\"\r\n\r\n12.95\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dueAt\"\r\n\r\n2024-05-28\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"paidAt\"\r\n\r\n2024-05-11 12:59:00\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sendNotification\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mijnklantportaal.nl/v1/customer-invoices"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customerId\"\r\n\r\ncst_abc12345def678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoiceNumber\"\r\n\r\n2014-001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issuedAt\"\r\n\r\n2024-04-31\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount\"\r\n\r\n12.95\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dueAt\"\r\n\r\n2024-05-28\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"paidAt\"\r\n\r\n2024-05-11 12:59:00\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sendNotification\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mijnklantportaal.nl/v1/customer-invoices")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customerId\"\r\n\r\ncst_abc12345def678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoiceNumber\"\r\n\r\n2014-001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issuedAt\"\r\n\r\n2024-04-31\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount\"\r\n\r\n12.95\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dueAt\"\r\n\r\n2024-05-28\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"paidAt\"\r\n\r\n2024-05-11 12:59:00\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sendNotification\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mijnklantportaal.nl/v1/customer-invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customerId\"\r\n\r\ncst_abc12345def678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoiceNumber\"\r\n\r\n2014-001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issuedAt\"\r\n\r\n2024-04-31\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount\"\r\n\r\n12.95\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dueAt\"\r\n\r\n2024-05-28\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"paidAt\"\r\n\r\n2024-05-11 12:59:00\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sendNotification\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "inv_abc12345def678",
"customerId": "cst_abc12345def678",
"invoiceNumber": "2024-001",
"issuedAt": "2024-04-29",
"dueAt": "2024-05-28",
"currency": "EUR",
"amount": "12.95",
"paidAt": "2024-05-28T21:00:00+02:00",
"createdAt": "2024-04-29T21:00:00+02:00",
"links": {
"customer": {
"href": "https://api.mijnklantportaal.nl/v1/customers/cst_abc12345def678",
"type": "application/json"
},
"onlinePaymentLink": {
"href": "https://portal.mijnklantportaal.nl/public-invoice/inv_abc123/pay/123-abc",
"type": "text/html"
}
}
}{
"message": "<string>"
}{
"message": "<string>"
}Create Customer Invoice
Add a new Customer Invoice to your portal.
Important! Note that this request is not JSON, but a multipart/form-data post.
curl --request POST \
--url https://api.mijnklantportaal.nl/v1/customer-invoices \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form customerId=cst_abc12345def678 \
--form invoiceNumber=2014-001 \
--form issuedAt=2024-04-31 \
--form amount=12.95 \
--form pdf='@example-file' \
--form dueAt=2024-05-28 \
--form 'paidAt=2024-05-11 12:59:00' \
--form sendNotification=trueimport requests
url = "https://api.mijnklantportaal.nl/v1/customer-invoices"
files = { "pdf": ("example-file", open("example-file", "rb")) }
payload = {
"customerId": "cst_abc12345def678",
"invoiceNumber": "2014-001",
"issuedAt": "2024-04-31",
"amount": "12.95",
"dueAt": "2024-05-28",
"paidAt": "2024-05-11 12:59:00",
"sendNotification": "true"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('customerId', 'cst_abc12345def678');
form.append('invoiceNumber', '2014-001');
form.append('issuedAt', '2024-04-31');
form.append('amount', '12.95');
form.append('pdf', '<string>');
form.append('dueAt', '2024-05-28');
form.append('paidAt', '2024-05-11 12:59:00');
form.append('sendNotification', 'true');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.mijnklantportaal.nl/v1/customer-invoices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mijnklantportaal.nl/v1/customer-invoices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customerId\"\r\n\r\ncst_abc12345def678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoiceNumber\"\r\n\r\n2014-001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issuedAt\"\r\n\r\n2024-04-31\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount\"\r\n\r\n12.95\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dueAt\"\r\n\r\n2024-05-28\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"paidAt\"\r\n\r\n2024-05-11 12:59:00\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sendNotification\"\r\n\r\ntrue\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mijnklantportaal.nl/v1/customer-invoices"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customerId\"\r\n\r\ncst_abc12345def678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoiceNumber\"\r\n\r\n2014-001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issuedAt\"\r\n\r\n2024-04-31\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount\"\r\n\r\n12.95\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dueAt\"\r\n\r\n2024-05-28\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"paidAt\"\r\n\r\n2024-05-11 12:59:00\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sendNotification\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mijnklantportaal.nl/v1/customer-invoices")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customerId\"\r\n\r\ncst_abc12345def678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoiceNumber\"\r\n\r\n2014-001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issuedAt\"\r\n\r\n2024-04-31\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount\"\r\n\r\n12.95\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dueAt\"\r\n\r\n2024-05-28\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"paidAt\"\r\n\r\n2024-05-11 12:59:00\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sendNotification\"\r\n\r\ntrue\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mijnklantportaal.nl/v1/customer-invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"customerId\"\r\n\r\ncst_abc12345def678\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"invoiceNumber\"\r\n\r\n2014-001\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"issuedAt\"\r\n\r\n2024-04-31\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"amount\"\r\n\r\n12.95\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"pdf\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"dueAt\"\r\n\r\n2024-05-28\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"paidAt\"\r\n\r\n2024-05-11 12:59:00\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"sendNotification\"\r\n\r\ntrue\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "inv_abc12345def678",
"customerId": "cst_abc12345def678",
"invoiceNumber": "2024-001",
"issuedAt": "2024-04-29",
"dueAt": "2024-05-28",
"currency": "EUR",
"amount": "12.95",
"paidAt": "2024-05-28T21:00:00+02:00",
"createdAt": "2024-04-29T21:00:00+02:00",
"links": {
"customer": {
"href": "https://api.mijnklantportaal.nl/v1/customers/cst_abc12345def678",
"type": "application/json"
},
"onlinePaymentLink": {
"href": "https://portal.mijnklantportaal.nl/public-invoice/inv_abc123/pay/123-abc",
"type": "text/html"
}
}
}{
"message": "<string>"
}{
"message": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
ID of the customer this invoice is meant for
"cst_abc12345def678"
Number of the invoice, as string
"2014-001"
Date when the invoice is issued, in YYYY-mm-dd format
"2024-04-31"
Amount of the invoice, as string. Only Euro (EUR) is supported at the moment.
"12.95"
The PDF file of the invoice
Date when the invoice should be paid at, in YYYY-mm-dd format
"2024-05-28"
Date and time when the invoice is paid, in YYYY-mm-dd HH:mm:ss format. Leave empty when the invoice is still due.
"2024-05-11 12:59:00"
Indicates if MijnKlantportaal should send out the notification to inform the customer about the new invoice
true
Response
Returning the created Customer Invoice
Customer Invoice
ID of the invoice, always starting with inv_.
"inv_abc12345def678"
ID of the customer which the invoice belongs to.
"cst_abc12345def678"
Number of the invoice as string.
"2024-001"
Issue date of the invoice. Formatted as YYYY-mm-dd.
"2024-04-29"
Due date for the invoice, if available. Formatted as YYYY-mm-dd.
"2024-05-28"
Currency of the invoice amount.
"EUR"
Invoice amount as string.
"12.95"
Date the invoice is marked as paid. Written in ATOM format.
"2024-05-28T21:00:00+02:00"
Date and time when the invoice was added to MijnKlantportaal. Written in ATOM format.
"2024-04-29T21:00:00+02:00"
Show child attributes
Show child attributes
