---
title: "Dodawanie klienta"
description: "Jak dodać kontrahenta do bazy inFakt, żeby wystawiać mu faktury z samym client_id."
---

> Documentation Index
> Fetch the complete documentation index at: https://docs.niebieskiorzel.pl/llms.txt
> Use this file to discover all available pages before exploring further.

# Dodawanie klienta

Gdy klient jest zapisany w bazie, przy wystawianiu faktury wystarczy podać jego `client_id`. API kopiuje dane nabywcy z bazy na fakturę.

> **Przykłady korzystają z sandboxa**
>
> Wszystkie przykłady na tej stronie wysyłają żądania do środowiska testowego (`https://api.sandbox-infakt.pl/v3`). Na produkcji należy użyć adresu `https://api.infakt.pl/v3` i klucza API z konta produkcyjnego.

## Wymagania

- Klucz API z zakresem `api:invoices:write` w zmiennej `INFAKT_API_KEY`.

## Kroki

1. **Wyszukanie istniejącego klienta**

   Przed dodaniem klienta warto wyszukać go po NIP-ie lub nazwie, aby uniknąć duplikatów:

   ```sh
   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"
   ```

   ```js
   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);
   ```

   ```python
   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
   <?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;
   ```
2. **Dodanie klienta**

   ```sh
   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"
       }
     }'
   ```

   ```js
   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);
   ```

   ```python
   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
   <?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:

```json
{
  "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.

## Następne kroki

- [Wystawianie faktury](/poradniki/fakturowanie/wystaw-fakture/)
- [Dodawanie produktu](/poradniki/fakturowanie/dodaj-produkt/)
- [Operacja w referencji API](/api/clients-json/create/)

Source: https://docs.niebieskiorzel.pl/poradniki/fakturowanie/dodaj-klienta/index.mdx
