curl --request PUT \
--url https://thirdparty.qonto.com/v2/suppliers/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"supplier": {
"name": "ACME SAS",
"currency": "EUR",
"default_vat_rate": 20,
"tax_identifiers": {
"vat_number": "FR12345678901",
"tin_number": "123456789"
},
"address": {
"street_address": "1 rue de la Paix",
"zip_code": "75002",
"province_code": "IDF",
"city": "Paris",
"country_code": "FR"
},
"contact_info": {
"email": "billing@acme.test",
"phone_number": "+33102030405"
},
"e_invoicing": {
"recipient_code": "ABC1234"
},
"payment_details": {
"iban": "FR7630006000011234567890189"
}
}
}
'import requests
url = "https://thirdparty.qonto.com/v2/suppliers/{id}"
payload = { "supplier": {
"name": "ACME SAS",
"currency": "EUR",
"default_vat_rate": 20,
"tax_identifiers": {
"vat_number": "FR12345678901",
"tin_number": "123456789"
},
"address": {
"street_address": "1 rue de la Paix",
"zip_code": "75002",
"province_code": "IDF",
"city": "Paris",
"country_code": "FR"
},
"contact_info": {
"email": "billing@acme.test",
"phone_number": "+33102030405"
},
"e_invoicing": { "recipient_code": "ABC1234" },
"payment_details": { "iban": "FR7630006000011234567890189" }
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
supplier: {
name: 'ACME SAS',
currency: 'EUR',
default_vat_rate: 20,
tax_identifiers: {vat_number: 'FR12345678901', tin_number: '123456789'},
address: {
street_address: '1 rue de la Paix',
zip_code: '75002',
province_code: 'IDF',
city: 'Paris',
country_code: 'FR'
},
contact_info: {email: 'billing@acme.test', phone_number: '+33102030405'},
e_invoicing: {recipient_code: 'ABC1234'},
payment_details: {iban: 'FR7630006000011234567890189'}
}
})
};
fetch('https://thirdparty.qonto.com/v2/suppliers/{id}', 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/suppliers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'supplier' => [
'name' => 'ACME SAS',
'currency' => 'EUR',
'default_vat_rate' => 20,
'tax_identifiers' => [
'vat_number' => 'FR12345678901',
'tin_number' => '123456789'
],
'address' => [
'street_address' => '1 rue de la Paix',
'zip_code' => '75002',
'province_code' => 'IDF',
'city' => 'Paris',
'country_code' => 'FR'
],
'contact_info' => [
'email' => 'billing@acme.test',
'phone_number' => '+33102030405'
],
'e_invoicing' => [
'recipient_code' => 'ABC1234'
],
'payment_details' => [
'iban' => 'FR7630006000011234567890189'
]
]
]),
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/suppliers/{id}"
payload := strings.NewReader("{\n \"supplier\": {\n \"name\": \"ACME SAS\",\n \"currency\": \"EUR\",\n \"default_vat_rate\": 20,\n \"tax_identifiers\": {\n \"vat_number\": \"FR12345678901\",\n \"tin_number\": \"123456789\"\n },\n \"address\": {\n \"street_address\": \"1 rue de la Paix\",\n \"zip_code\": \"75002\",\n \"province_code\": \"IDF\",\n \"city\": \"Paris\",\n \"country_code\": \"FR\"\n },\n \"contact_info\": {\n \"email\": \"billing@acme.test\",\n \"phone_number\": \"+33102030405\"\n },\n \"e_invoicing\": {\n \"recipient_code\": \"ABC1234\"\n },\n \"payment_details\": {\n \"iban\": \"FR7630006000011234567890189\"\n }\n }\n}")
req, _ := http.NewRequest("PUT", 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.put("https://thirdparty.qonto.com/v2/suppliers/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"supplier\": {\n \"name\": \"ACME SAS\",\n \"currency\": \"EUR\",\n \"default_vat_rate\": 20,\n \"tax_identifiers\": {\n \"vat_number\": \"FR12345678901\",\n \"tin_number\": \"123456789\"\n },\n \"address\": {\n \"street_address\": \"1 rue de la Paix\",\n \"zip_code\": \"75002\",\n \"province_code\": \"IDF\",\n \"city\": \"Paris\",\n \"country_code\": \"FR\"\n },\n \"contact_info\": {\n \"email\": \"billing@acme.test\",\n \"phone_number\": \"+33102030405\"\n },\n \"e_invoicing\": {\n \"recipient_code\": \"ABC1234\"\n },\n \"payment_details\": {\n \"iban\": \"FR7630006000011234567890189\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/suppliers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"supplier\": {\n \"name\": \"ACME SAS\",\n \"currency\": \"EUR\",\n \"default_vat_rate\": 20,\n \"tax_identifiers\": {\n \"vat_number\": \"FR12345678901\",\n \"tin_number\": \"123456789\"\n },\n \"address\": {\n \"street_address\": \"1 rue de la Paix\",\n \"zip_code\": \"75002\",\n \"province_code\": \"IDF\",\n \"city\": \"Paris\",\n \"country_code\": \"FR\"\n },\n \"contact_info\": {\n \"email\": \"billing@acme.test\",\n \"phone_number\": \"+33102030405\"\n },\n \"e_invoicing\": {\n \"recipient_code\": \"ABC1234\"\n },\n \"payment_details\": {\n \"iban\": \"FR7630006000011234567890189\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"supplier": {
"id": "018f4e5a-9c1d-7b2e-8a3f-1d2c3b4a5f60",
"organization_id": "018f4e5a-1111-7b2e-8a3f-1d2c3b4a5f60",
"name": "ACME SAS",
"status": "unarchived",
"currency": "EUR",
"default_vat_rate": 20,
"outstanding_balance": {
"value": "22.10",
"currency": "EUR"
},
"tax_identifiers": {
"vat_number": "FR12345678901",
"tin_number": "123456789"
},
"address": {
"street_address": "1 rue de la Paix",
"zip_code": "75002",
"province_code": "IDF",
"city": "Paris",
"country_code": "FR"
},
"contact_info": {
"email": "billing@acme.test",
"phone_number": "+33102030405"
},
"e_invoicing": {
"recipient_code": "ABC1234"
},
"payment_details": {
"iban": "FR7630006000011234567890189"
},
"created_at": "2026-01-15T09:30:00Z",
"updated_at": "2026-01-16T14:05:00Z"
}
}Update a supplier
OAuth scope: supplier_invoice.write
Replaces the editable fields of a supplier. This is a full update: optional fields that are omitted from the request are cleared, so send every field you want to keep. name is required.
The supplier’s status is never changed by this endpoint, so updating an archived or draft supplier leaves it archived or draft. If the supplier belongs to another organization, the call fails with 403 Forbidden.
Changing the IBAN, VAT number or TIN number may trigger a background re-matching of the organization’s invoices against the supplier. If the IBAN already belongs to another supplier, the call fails with 422.
Sensitive fields (payment_details and tax_identifiers) are masked in the response unless the caller is allowed to see them.
curl --request PUT \
--url https://thirdparty.qonto.com/v2/suppliers/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"supplier": {
"name": "ACME SAS",
"currency": "EUR",
"default_vat_rate": 20,
"tax_identifiers": {
"vat_number": "FR12345678901",
"tin_number": "123456789"
},
"address": {
"street_address": "1 rue de la Paix",
"zip_code": "75002",
"province_code": "IDF",
"city": "Paris",
"country_code": "FR"
},
"contact_info": {
"email": "billing@acme.test",
"phone_number": "+33102030405"
},
"e_invoicing": {
"recipient_code": "ABC1234"
},
"payment_details": {
"iban": "FR7630006000011234567890189"
}
}
}
'import requests
url = "https://thirdparty.qonto.com/v2/suppliers/{id}"
payload = { "supplier": {
"name": "ACME SAS",
"currency": "EUR",
"default_vat_rate": 20,
"tax_identifiers": {
"vat_number": "FR12345678901",
"tin_number": "123456789"
},
"address": {
"street_address": "1 rue de la Paix",
"zip_code": "75002",
"province_code": "IDF",
"city": "Paris",
"country_code": "FR"
},
"contact_info": {
"email": "billing@acme.test",
"phone_number": "+33102030405"
},
"e_invoicing": { "recipient_code": "ABC1234" },
"payment_details": { "iban": "FR7630006000011234567890189" }
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
supplier: {
name: 'ACME SAS',
currency: 'EUR',
default_vat_rate: 20,
tax_identifiers: {vat_number: 'FR12345678901', tin_number: '123456789'},
address: {
street_address: '1 rue de la Paix',
zip_code: '75002',
province_code: 'IDF',
city: 'Paris',
country_code: 'FR'
},
contact_info: {email: 'billing@acme.test', phone_number: '+33102030405'},
e_invoicing: {recipient_code: 'ABC1234'},
payment_details: {iban: 'FR7630006000011234567890189'}
}
})
};
fetch('https://thirdparty.qonto.com/v2/suppliers/{id}', 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/suppliers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'supplier' => [
'name' => 'ACME SAS',
'currency' => 'EUR',
'default_vat_rate' => 20,
'tax_identifiers' => [
'vat_number' => 'FR12345678901',
'tin_number' => '123456789'
],
'address' => [
'street_address' => '1 rue de la Paix',
'zip_code' => '75002',
'province_code' => 'IDF',
'city' => 'Paris',
'country_code' => 'FR'
],
'contact_info' => [
'email' => 'billing@acme.test',
'phone_number' => '+33102030405'
],
'e_invoicing' => [
'recipient_code' => 'ABC1234'
],
'payment_details' => [
'iban' => 'FR7630006000011234567890189'
]
]
]),
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/suppliers/{id}"
payload := strings.NewReader("{\n \"supplier\": {\n \"name\": \"ACME SAS\",\n \"currency\": \"EUR\",\n \"default_vat_rate\": 20,\n \"tax_identifiers\": {\n \"vat_number\": \"FR12345678901\",\n \"tin_number\": \"123456789\"\n },\n \"address\": {\n \"street_address\": \"1 rue de la Paix\",\n \"zip_code\": \"75002\",\n \"province_code\": \"IDF\",\n \"city\": \"Paris\",\n \"country_code\": \"FR\"\n },\n \"contact_info\": {\n \"email\": \"billing@acme.test\",\n \"phone_number\": \"+33102030405\"\n },\n \"e_invoicing\": {\n \"recipient_code\": \"ABC1234\"\n },\n \"payment_details\": {\n \"iban\": \"FR7630006000011234567890189\"\n }\n }\n}")
req, _ := http.NewRequest("PUT", 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.put("https://thirdparty.qonto.com/v2/suppliers/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"supplier\": {\n \"name\": \"ACME SAS\",\n \"currency\": \"EUR\",\n \"default_vat_rate\": 20,\n \"tax_identifiers\": {\n \"vat_number\": \"FR12345678901\",\n \"tin_number\": \"123456789\"\n },\n \"address\": {\n \"street_address\": \"1 rue de la Paix\",\n \"zip_code\": \"75002\",\n \"province_code\": \"IDF\",\n \"city\": \"Paris\",\n \"country_code\": \"FR\"\n },\n \"contact_info\": {\n \"email\": \"billing@acme.test\",\n \"phone_number\": \"+33102030405\"\n },\n \"e_invoicing\": {\n \"recipient_code\": \"ABC1234\"\n },\n \"payment_details\": {\n \"iban\": \"FR7630006000011234567890189\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/suppliers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"supplier\": {\n \"name\": \"ACME SAS\",\n \"currency\": \"EUR\",\n \"default_vat_rate\": 20,\n \"tax_identifiers\": {\n \"vat_number\": \"FR12345678901\",\n \"tin_number\": \"123456789\"\n },\n \"address\": {\n \"street_address\": \"1 rue de la Paix\",\n \"zip_code\": \"75002\",\n \"province_code\": \"IDF\",\n \"city\": \"Paris\",\n \"country_code\": \"FR\"\n },\n \"contact_info\": {\n \"email\": \"billing@acme.test\",\n \"phone_number\": \"+33102030405\"\n },\n \"e_invoicing\": {\n \"recipient_code\": \"ABC1234\"\n },\n \"payment_details\": {\n \"iban\": \"FR7630006000011234567890189\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"supplier": {
"id": "018f4e5a-9c1d-7b2e-8a3f-1d2c3b4a5f60",
"organization_id": "018f4e5a-1111-7b2e-8a3f-1d2c3b4a5f60",
"name": "ACME SAS",
"status": "unarchived",
"currency": "EUR",
"default_vat_rate": 20,
"outstanding_balance": {
"value": "22.10",
"currency": "EUR"
},
"tax_identifiers": {
"vat_number": "FR12345678901",
"tin_number": "123456789"
},
"address": {
"street_address": "1 rue de la Paix",
"zip_code": "75002",
"province_code": "IDF",
"city": "Paris",
"country_code": "FR"
},
"contact_info": {
"email": "billing@acme.test",
"phone_number": "+33102030405"
},
"e_invoicing": {
"recipient_code": "ABC1234"
},
"payment_details": {
"iban": "FR7630006000011234567890189"
},
"created_at": "2026-01-15T09:30:00Z",
"updated_at": "2026-01-16T14:05:00Z"
}
}Authorizations
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.
- Authorization URL
- https://oauth.qonto.com/oauth2/auth
- Token URL
- https://oauth.qonto.com/oauth2/token
- Refresh URL
- https://oauth.qonto.com/oauth2/token
Headers
Required only for Sandbox API requests; to get one, please sign up to the Developer Portal.
Path Parameters
The ID of the supplier to update
Body
Show child attributes
Show child attributes
Response
The updated supplier
Show child attributes
Show child attributes
Was this page helpful?