Gdy klient jest zapisany w bazie, przy wystawianiu faktury wystarczy podać jego client_id. API kopiuje dane nabywcy z bazy na fakturę.
Wymagania
- Klucz API z zakresem
api:invoices:writew zmiennejINFAKT_API_KEY.
Kroki
Wyszukanie istniejącego klienta
Przed dodaniem klienta warto wyszukać go po NIP-ie lub nazwie, aby uniknąć duplikatów:
curl "https://api.sandbox-infakt.pl/v3/clients.json?q%5Bcompany_name_cont%5D=Testowa&fields=id,company_name,nip" \ -H "X-inFakt-ApiKey: $INFAKT_API_KEY"const res = await fetch("https://api.sandbox-infakt.pl/v3/clients.json?q%5Bcompany_name_cont%5D=Testowa&fields=id,company_name,nip", { method: "GET", headers: { "X-inFakt-ApiKey": process.env.INFAKT_API_KEY, }, }); const data = await res.json(); console.log(res.status, data);import os import requests res = requests.get( "https://api.sandbox-infakt.pl/v3/clients.json?q%5Bcompany_name_cont%5D=Testowa&fields=id,company_name,nip", headers={"X-inFakt-ApiKey": os.environ["INFAKT_API_KEY"]}, ) print(res.status_code, res.json())<?php $ch = curl_init('https://api.sandbox-infakt.pl/v3/clients.json?q%5Bcompany_name_cont%5D=Testowa&fields=id,company_name,nip'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'X-inFakt-ApiKey: ' . getenv('INFAKT_API_KEY'), ], ]); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); echo $status, ' ', $response, PHP_EOL;Dodanie klienta
curl -X POST "https://api.sandbox-infakt.pl/v3/clients.json" \ -H "X-inFakt-ApiKey: $INFAKT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "client": { "company_name": "Testowa Firma sp. z o.o.", "street": "Lwowska", "street_number": "10", "flat_number": "17", "city": "Kraków", "country": "PL", "postal_code": "31-202", "nip": "222-22-22-222", "business_activity_kind": "other_business" } }'const res = await fetch("https://api.sandbox-infakt.pl/v3/clients.json", { method: "POST", headers: { "X-inFakt-ApiKey": process.env.INFAKT_API_KEY, "Content-Type": "application/json", }, body: JSON.stringify({ "client": { "company_name": "Testowa Firma sp. z o.o.", "street": "Lwowska", "street_number": "10", "flat_number": "17", "city": "Kraków", "country": "PL", "postal_code": "31-202", "nip": "222-22-22-222", "business_activity_kind": "other_business" } }), }); const data = await res.json(); console.log(res.status, data);import os import requests res = requests.post( "https://api.sandbox-infakt.pl/v3/clients.json", headers={"X-inFakt-ApiKey": os.environ["INFAKT_API_KEY"]}, json={ "client": { "company_name": "Testowa Firma sp. z o.o.", "street": "Lwowska", "street_number": "10", "flat_number": "17", "city": "Kraków", "country": "PL", "postal_code": "31-202", "nip": "222-22-22-222", "business_activity_kind": "other_business" } }, ) print(res.status_code, res.json())<?php $ch = curl_init('https://api.sandbox-infakt.pl/v3/clients.json'); curl_setopt_array($ch, [ CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'X-inFakt-ApiKey: ' . getenv('INFAKT_API_KEY'), 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode([ 'client' => [ 'company_name' => 'Testowa Firma sp. z o.o.', 'street' => 'Lwowska', 'street_number' => '10', 'flat_number' => '17', 'city' => 'Kraków', 'country' => 'PL', 'postal_code' => '31-202', 'nip' => '222-22-22-222', 'business_activity_kind' => 'other_business', ], ]), ]); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); echo $status, ' ', $response, PHP_EOL;
Weryfikacja
Odpowiedź 201 zawiera dane klienta wraz z id. Tę wartość podaje się jako client_id przy wystawianiu faktury:
{
"id": 1003,
"uuid": "aae6796c-30a9-4bc6-ae55-6b2f08a8a0f6",
"company_name": "Testowa Firma sp. z o.o.",
"city": "Kraków",
"country": "PL",
"nip": "222-22-22-222"
}Kod 403 z limit: cant_add_client oznacza, że plan konta nie obejmuje dodawania kolejnych klientów.