Mark a client invoice as paid
curl --request POST \
--url https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"paid_at": "2024-12-15"
}
'import requests
url = "https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid"
payload = { "paid_at": "2024-12-15" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({paid_at: '2024-12-15'})
};
fetch('https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid', 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://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'paid_at' => '2024-12-15'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid"
payload := strings.NewReader("{\n \"paid_at\": \"2024-12-15\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"paid_at\": \"2024-12-15\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"paid_at\": \"2024-12-15\"\n}"
response = http.request(request)
puts response.read_body{
"client_invoice": {
"id": "4d5418bb-bd0d-4df4-865c-c07afab8bb48",
"organization_id": "4d5418bb-bd0d-4df4-865c-c07afab8bb48",
"number": "INV001",
"purchase_order": "<string>",
"status": "paid",
"invoice_url": "https://pay.qonto.com/invoices/00000000-0000-0000-0000-000000000000",
"contact_email": "contact@qonto.com",
"terms_and_conditions": "This is an example.",
"discount_conditions": "Pas d’escompte accordé pour paiement anticipé.",
"late_payment_penalties": "En cas de non-paiement à la date d'échéance, des pénalités calculées à trois fois le taux d’intérêt légal seront appliquées.",
"legal_fixed_compensation": "Tout retard de paiement entraînera une indemnité forfaitaire pour frais de recouvrement de 40€.",
"header": "This is an example.",
"footer": "This is an example.",
"currency": "EUR",
"total_amount": {
"value": "12.52",
"currency": "EUR"
},
"total_amount_cents": 1252,
"vat_amount": {
"value": "0.51",
"currency": "EUR"
},
"vat_amount_cents": 51,
"issue_date": "2022-03-01",
"due_date": "2022-03-01",
"performance_date": "2022-03-01",
"performance_start_date": "2022-03-01",
"performance_end_date": "2022-03-31",
"created_at": "2022-03-04T17:58:30+02:00",
"finalized_at": "2022-03-04T17:58:30+02:00",
"paid_at": "2022-03-04T17:58:30+02:00",
"stamp_duty_amount": "1.00",
"items": [
{
"title": "Plastic tables",
"description": "Plastic tables for McDonald’s restaurants",
"quantity": "1.5",
"unit": "meter",
"unit_price": {
"value": "10.0",
"currency": "EUR"
},
"unit_price_cents": 1000,
"vat_rate": "0.1",
"vat_exemption_reason": "N1",
"discount": {
"type": "percentage",
"value": "0.1",
"amount": {
"value": "120",
"currency": "EUR"
}
},
"total_vat": {
"value": "120",
"currency": "EUR"
},
"total_vat_cents": 12000,
"total_amount": {
"value": "300.50",
"currency": "EUR"
},
"total_amount_cents": 30050,
"subtotal": {
"value": "120",
"currency": "EUR"
},
"subtotal_cents": 12000
}
],
"client": {
"id": "33v418bb-bd0d-4df4-865c-c07afab8bb48",
"name": "McDonald's",
"first_name": "Jane",
"last_name": "Doe",
"type": "individual",
"email": "client@qonto.com",
"vat_number": "FR32123456789",
"tax_identification_number": "123456789",
"address": "1 place de l’Opéra",
"city": "Paris",
"zip_code": "75010",
"province_code": "<string>",
"country_code": "fr",
"recipient_code": "<string>",
"locale": "fr",
"billing_address": {
"street_address": "123 Main Street",
"city": "Paris",
"zip_code": "75010",
"province_code": "<string>",
"country_code": "FR"
},
"delivery_address": {
"street_address": "123 Main Street",
"city": "Paris",
"zip_code": "75010",
"province_code": "<string>",
"country_code": "FR"
}
},
"payment_methods": [
{
"beneficiary_name": "John Doe",
"bic": "ABCDEFG1XXX",
"iban": "FR1420041010050500013M02606",
"type": "transfer"
}
],
"credit_notes_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"organization": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"legal_name": "<string>",
"legal_number": "<string>",
"legal_country": "<string>",
"address_line_1": "<string>",
"address_line_2": "<string>",
"address_zipcode": "<string>",
"address_city": "<string>",
"address_country": "<string>",
"company_leadership": "Jan Mueller",
"district_court": "Munich",
"commercial_register_number": "HRB12345B",
"vat_number": "FR123456789",
"tax_number": "123/123/1234",
"legal_capital_share": {
"value": "10000.00",
"currency": "EUR"
},
"transaction_type": "goods",
"vat_payment_condition": "on_receipts"
},
"invoice_type": "standard",
"attachment_id": "4d5418bb-bd0d-4df4-865c-c07afab8bb48",
"discount": {
"type": "percentage",
"value": "0.1",
"amount": {
"value": "10.00",
"currency": "EUR"
}
},
"amount_paid": {
"value": "12.52",
"currency": "EUR"
},
"einvoicing_status": "pending",
"welfare_fund": {
"type": "TC01",
"rate": "0.0001"
},
"withholding_tax": {
"reason": "RF01",
"rate": "0.01",
"payment_reason": "L1",
"amount": "1.00"
},
"payment_reporting": {
"conditions": "TP01",
"method": "MP01"
},
"quote_id": "4d5418bb-bd0d-4df4-865c-c07afab8bb48",
"einvoicing_lifecycle_events": [
{
"status_code": 200,
"reason": "DOUBLE FACTURE",
"reason_message": "I already received this invoice",
"timestamp": "2024-12-04T11:05:16.4497Z"
}
]
}
}Client invoices
Mark a client invoice as paid
Marks a client invoice as paid by updating its status from unpaid to paid.
POST
/
v2
/
client_invoices
/
{id}
/
mark_as_paid
Mark a client invoice as paid
curl --request POST \
--url https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"paid_at": "2024-12-15"
}
'import requests
url = "https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid"
payload = { "paid_at": "2024-12-15" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({paid_at: '2024-12-15'})
};
fetch('https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid', 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://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'paid_at' => '2024-12-15'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid"
payload := strings.NewReader("{\n \"paid_at\": \"2024-12-15\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"paid_at\": \"2024-12-15\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/client_invoices/{id}/mark_as_paid")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"paid_at\": \"2024-12-15\"\n}"
response = http.request(request)
puts response.read_body{
"client_invoice": {
"id": "4d5418bb-bd0d-4df4-865c-c07afab8bb48",
"organization_id": "4d5418bb-bd0d-4df4-865c-c07afab8bb48",
"number": "INV001",
"purchase_order": "<string>",
"status": "paid",
"invoice_url": "https://pay.qonto.com/invoices/00000000-0000-0000-0000-000000000000",
"contact_email": "contact@qonto.com",
"terms_and_conditions": "This is an example.",
"discount_conditions": "Pas d’escompte accordé pour paiement anticipé.",
"late_payment_penalties": "En cas de non-paiement à la date d'échéance, des pénalités calculées à trois fois le taux d’intérêt légal seront appliquées.",
"legal_fixed_compensation": "Tout retard de paiement entraînera une indemnité forfaitaire pour frais de recouvrement de 40€.",
"header": "This is an example.",
"footer": "This is an example.",
"currency": "EUR",
"total_amount": {
"value": "12.52",
"currency": "EUR"
},
"total_amount_cents": 1252,
"vat_amount": {
"value": "0.51",
"currency": "EUR"
},
"vat_amount_cents": 51,
"issue_date": "2022-03-01",
"due_date": "2022-03-01",
"performance_date": "2022-03-01",
"performance_start_date": "2022-03-01",
"performance_end_date": "2022-03-31",
"created_at": "2022-03-04T17:58:30+02:00",
"finalized_at": "2022-03-04T17:58:30+02:00",
"paid_at": "2022-03-04T17:58:30+02:00",
"stamp_duty_amount": "1.00",
"items": [
{
"title": "Plastic tables",
"description": "Plastic tables for McDonald’s restaurants",
"quantity": "1.5",
"unit": "meter",
"unit_price": {
"value": "10.0",
"currency": "EUR"
},
"unit_price_cents": 1000,
"vat_rate": "0.1",
"vat_exemption_reason": "N1",
"discount": {
"type": "percentage",
"value": "0.1",
"amount": {
"value": "120",
"currency": "EUR"
}
},
"total_vat": {
"value": "120",
"currency": "EUR"
},
"total_vat_cents": 12000,
"total_amount": {
"value": "300.50",
"currency": "EUR"
},
"total_amount_cents": 30050,
"subtotal": {
"value": "120",
"currency": "EUR"
},
"subtotal_cents": 12000
}
],
"client": {
"id": "33v418bb-bd0d-4df4-865c-c07afab8bb48",
"name": "McDonald's",
"first_name": "Jane",
"last_name": "Doe",
"type": "individual",
"email": "client@qonto.com",
"vat_number": "FR32123456789",
"tax_identification_number": "123456789",
"address": "1 place de l’Opéra",
"city": "Paris",
"zip_code": "75010",
"province_code": "<string>",
"country_code": "fr",
"recipient_code": "<string>",
"locale": "fr",
"billing_address": {
"street_address": "123 Main Street",
"city": "Paris",
"zip_code": "75010",
"province_code": "<string>",
"country_code": "FR"
},
"delivery_address": {
"street_address": "123 Main Street",
"city": "Paris",
"zip_code": "75010",
"province_code": "<string>",
"country_code": "FR"
}
},
"payment_methods": [
{
"beneficiary_name": "John Doe",
"bic": "ABCDEFG1XXX",
"iban": "FR1420041010050500013M02606",
"type": "transfer"
}
],
"credit_notes_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"organization": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"legal_name": "<string>",
"legal_number": "<string>",
"legal_country": "<string>",
"address_line_1": "<string>",
"address_line_2": "<string>",
"address_zipcode": "<string>",
"address_city": "<string>",
"address_country": "<string>",
"company_leadership": "Jan Mueller",
"district_court": "Munich",
"commercial_register_number": "HRB12345B",
"vat_number": "FR123456789",
"tax_number": "123/123/1234",
"legal_capital_share": {
"value": "10000.00",
"currency": "EUR"
},
"transaction_type": "goods",
"vat_payment_condition": "on_receipts"
},
"invoice_type": "standard",
"attachment_id": "4d5418bb-bd0d-4df4-865c-c07afab8bb48",
"discount": {
"type": "percentage",
"value": "0.1",
"amount": {
"value": "10.00",
"currency": "EUR"
}
},
"amount_paid": {
"value": "12.52",
"currency": "EUR"
},
"einvoicing_status": "pending",
"welfare_fund": {
"type": "TC01",
"rate": "0.0001"
},
"withholding_tax": {
"reason": "RF01",
"rate": "0.01",
"payment_reason": "L1",
"amount": "1.00"
},
"payment_reporting": {
"conditions": "TP01",
"method": "MP01"
},
"quote_id": "4d5418bb-bd0d-4df4-865c-c07afab8bb48",
"einvoicing_lifecycle_events": [
{
"status_code": 200,
"reason": "DOUBLE FACTURE",
"reason_message": "I already received this invoice",
"timestamp": "2024-12-04T11:05:16.4497Z"
}
]
}
}Authentication: API key OAuth 2.0
Scope:
Scope:
client_invoice.write
Requirements:
- The invoice must exist and be accessible to the authenticated organization
- The invoice status should be
unpaidfor this operation to be meaningful - The
paid_atdate cannot be in the future. If not filled, by default the current date is used.
If the invoice is already paid, you can still use this endpoint to update the
paid_at date.Authorizations
OAuthSecretKey
Bearer authorization header: Bearer <token>, where <token> is the access token received from the authorization server at the end of the OAuth 2.0 flow.
Headers
Required only for Sandbox API requests; to get one, please sign up to the Developer Portal.
Path Parameters
UUID of the client invoice to mark as paid.
Example:
"e3d68a1a-b23f-496a-a9a2-815089337720"
Body
application/json
The date when the invoice was paid. Must be in YYYY-MM-DD format and cannot be in the future. If not filled, by default the current date is used.
Example:
"2024-12-15"
Response
Invoice successfully marked as paid. Returns the updated invoice.
Show child attributes
Show child attributes
Was this page helpful?