Pole third_party_addresses zawiera jeden lub więcej podmiotów trzecich faktury (Podmiot3 w KSeF). API uwzględnia je przy tworzeniu faktury w trybie asynchronicznym oraz przy jej aktualizacji.
Wymagania
- Klucz API z zakresem
api:invoices:writew zmiennejINFAKT_API_KEY.
Kroki
Wybór roli podmiotu
Rolę określa pole
role_code:Kod Rola w KSeF "1"faktor "2"odbiorca "3"podmiot pierwotny "4"dodatkowy nabywca "5"wystawca faktury "6"dokonujący płatności "8"JST — odbiorca "9"grupa VAT — wystawca "10"grupa VAT — odbiorca "11"pracownik Wystawienie faktury z podmiotem trzecim
Pola wymagane:
company_name,street,building_number,door_number,post_code,city,country_code,role_code. Pola opcjonalne:tax_id,internal_identifier.curl -X POST "https://api.sandbox-infakt.pl/v3/async/invoices.json" \ -H "X-inFakt-ApiKey: $INFAKT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "invoice": { "payment_method": "cash", "client_company_name": "Testowa Firma sp. z o.o.", "client_tax_code": "2222222222", "services": [ { "name": "Usługa programistyczna", "tax_symbol": "23", "quantity": 1, "unit_net_price": 10000 } ], "third_party_addresses": [ { "company_name": "Urząd Miejski Krakowa", "street": "Plac Wszystkich Świętych", "building_number": "3-4", "door_number": "2", "post_code": "31-004", "city": "Kraków", "country_code": "PL", "role_code": "8" } ] } }'const res = await fetch("https://api.sandbox-infakt.pl/v3/async/invoices.json", { method: "POST", headers: { "X-inFakt-ApiKey": process.env.INFAKT_API_KEY, "Content-Type": "application/json", }, body: JSON.stringify({ "invoice": { "payment_method": "cash", "client_company_name": "Testowa Firma sp. z o.o.", "client_tax_code": "2222222222", "services": [ { "name": "Usługa programistyczna", "tax_symbol": "23", "quantity": 1, "unit_net_price": 10000 } ], "third_party_addresses": [ { "company_name": "Urząd Miejski Krakowa", "street": "Plac Wszystkich Świętych", "building_number": "3-4", "door_number": "2", "post_code": "31-004", "city": "Kraków", "country_code": "PL", "role_code": "8" } ] } }), }); const data = await res.json(); console.log(res.status, data);import os import requests res = requests.post( "https://api.sandbox-infakt.pl/v3/async/invoices.json", headers={"X-inFakt-ApiKey": os.environ["INFAKT_API_KEY"]}, json={ "invoice": { "payment_method": "cash", "client_company_name": "Testowa Firma sp. z o.o.", "client_tax_code": "2222222222", "services": [ { "name": "Usługa programistyczna", "tax_symbol": "23", "quantity": 1, "unit_net_price": 10000 } ], "third_party_addresses": [ { "company_name": "Urząd Miejski Krakowa", "street": "Plac Wszystkich Świętych", "building_number": "3-4", "door_number": "2", "post_code": "31-004", "city": "Kraków", "country_code": "PL", "role_code": "8" } ] } }, ) print(res.status_code, res.json())<?php $ch = curl_init('https://api.sandbox-infakt.pl/v3/async/invoices.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([ 'invoice' => [ 'payment_method' => 'cash', 'client_company_name' => 'Testowa Firma sp. z o.o.', 'client_tax_code' => '2222222222', 'services' => [ [ 'name' => 'Usługa programistyczna', 'tax_symbol' => '23', 'quantity' => 1, 'unit_net_price' => 10000, ], ], 'third_party_addresses' => [ [ 'company_name' => 'Urząd Miejski Krakowa', 'street' => 'Plac Wszystkich Świętych', 'building_number' => '3-4', 'door_number' => '2', 'post_code' => '31-004', 'city' => 'Kraków', 'country_code' => 'PL', 'role_code' => '8', ], ], ], ]), ]); $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); echo $status, ' ', $response, PHP_EOL;
Weryfikacja
Gdy zadanie zakończy się kodem processing_code: 201, odpowiedź GET /invoices/{id}.json zawiera podmiot w polu third_party_addresses. Po wysyłce do KSeF podmiot trafia do pliku FA(3) jako Podmiot3.
Rola "8" zastępuje wcześniej używane pole local_government_recipient_address.