Przejdź do treści

PostingInstruction

PostingInstruction to kanoniczny zasób bufora dokumentów przekazywanych do księgowości do dalszego procedowania (dekretacja, ewidencja VAT, przygotowanie pod JPK). Model jest jeden i rozszerzalny przez attribute[] oraz profile walidacji.

Ten dokument zastąpił starszy wariant oparty o sourceDocument oraz postingLine[] jako warstwę zlecenia księgowania.

Kontrakt maszynowy (JSON Schema): PostingInstruction.schema.json, PostingInstructionLine.schema.json, AllocationItem.schema.json. Endpoint: /v1/posting-instructions (§5b).

Rozszerza DomainResource.


1. Zakres i granica odpowiedzialności

Aspekt Opis
PostingInstruction Bufor opisu dokumentu od systemu zewnętrznego (co system wie o dokumencie i jak ma być procedowany).
Księgowość Przetwarza bufor, wykonuje dekretację i ewidencję VAT; wynik księgowania jest dostępny jako JournalEntry.
DocumentReference Nie jest zasobem wejściowym w tym procesie integracyjnym.

2. Pola nagłówka

Poza polami z DomainResource (id, resourceType, meta, owner[]wymagany, NIP, comment, category[], status — słownik posting-instruction-status, nadawany przez księgowość, type, contained[], attribute[]§4):

Wszystkie pola kodowane (CodeableConcept) niosą coding.system wskazujący słownik (value set) — pełny rejestr w Systemy kodowania i value sety.

Nazwa Kard. Typ Opis
identifier 2..* Identifier Identyfikatory dokumentu: co najmniej id dokumentu w systemie źródłowym i numer dokumentu§2a.
participant 0..* Participant Uczestnicy dokumentu: function = CodeableConcept (słownik posting-instruction-participant-function), actor = Reference(Party) przez identifier. Uczestnik bez funkcji to kontrahent dokumentu; funkcja vat-group-member oznacza członka grupy VAT.
attachment 0..* Attachment Załączniki; url = adres dokumentu źródłowego (obraz faktury), title = numer/nazwa. W zapisie przekazywany jest pierwszy załącznik.
issueDate 1..1 date Data wystawienia dokumentu.
realizationDate 0..1 date Data otrzymania / realizacji.
symbol 2..* CodeableConcept Symbole dokumentu — dwa kodowania w dwu słownikach (§2b).
paymentMethod 0..1 CodeableConcept Forma płatności. Słownik: posting-instruction-payment-method (cash, transfer, credit-card, other); inny kod → 400.
accountingVariant 0..1 Reference(AccountingVariant) Wariant dekretacji na nagłówku (identifier w przestrzeni AccountingVariant.Id).
grossAmount 0..1 Money Kwota brutto.
netAmount 0..1 Money Kwota netto.
vatAmount 0..1 Money Kwota VAT.
register 0..1 Reference(Register) Rejestr księgowy (identifier w przestrzeni Register.Id).
saleDate 0..1 date Data sprzedaży.
dueDate 0..1 date Termin płatności.
accountingDate 0..1 date Data księgowania.
paymentAccount 0..1 Reference(BankAccount) Rachunek płatności: identifier.value = numer rachunku, display = nazwa banku.
basedOn 0..* Reference Dokumenty powiązane (korekta, oryginał przy poprawie). Pole informacyjne — księgowość wiąże korektę przez atrybut correction-document-number (§3b).
position 0..* PostingInstructionLine Pozycje dokumentu.

2a. Identyfikatory

Rodzaj identyfikatora niesie Identifier.system. Przestrzenie wewnętrzne mają postać urn:oid:1.2.616.1.113769.4.<instalacja>.<klucz>; faktyczne przestrzenie publikuje NamingSystem — zob. Identyfikacja i parametry wdrożenia.

Przestrzeń (klucz) Znaczenie Identifier.system W POST W odczycie
PostingInstruction.ExternalId Identyfikator zewnętrzny — id dokumentu nadany przez system wystawiający (klucz add-or-update) …<instalacja>.91.2 wymagany — pierwszy identyfikator, którego system nie jest KSeF ani document-number tak
numer dokumentu Numer dokumentu https://api-erp.kamsoft.pl/vs/document-number wymagany tak
numer KSeF Numer KSeF https://ksef.podatki.gov.pl opcjonalny gdy nadany
PostingInstruction.Id Id bufora dokumentu nadany przez księgowość (klucz referencyjny) …<instalacja>.91 pomijany tak; klucz postingInstruction w JournalEntry

Brak identyfikatora zewnętrznego lub numeru dokumentu → 400 (§5a). Każdy identyfikator w zapisie niesie przestrzeń (identifier[].system) — bez niej żądanie kończy się 400, bo nie wiadomo, która instalacja ma zarejestrować dokument; wartość PostingInstruction.Id nadaje księgowość (rejestracja zasobu).


2b. Symbole

symbol to lista co najmniej dwu kodowań, po jednym z każdego słownika:

Słownik Znaczenie Kody
finance/posting-instruction-symbol Symbol bufora (rejestru dokumentów) w księgowości nadaje wdrożenie
finance/posting-instruction-document-symbol-type Rodzaj dokumentu (np. faktura, korekta) nadaje wdrożenie

POST odrzuca żądanie 400, gdy brakuje kodowania w którymkolwiek z tych systemów.


3. PostingInstructionLine (zagnieżdżony)

Nazwa Kard. Typ Opis
positionNo 0..1 integer Numer pozycji (>= 1).
code 0..1 CodeableConcept Typ pozycji: accounting-item (pozycja księgowa; domyślny, gdy brak) lub vat-summary (podsumowanie VAT). Słownik: posting-instruction-line-type.
value 0..* ValueItem Lista wartości pozycji. Każdy element niesie type (słownik: posting-instruction-line-value-item-type) oraz jeden wariant wartości. Elementy bez rozpoznanego kodu type są w zapisie pomijane.
allocation 0..1 AllocationItem Alokacja pozycji (jeden obiekt).
purchaseVatDeduction 0..1 CodeableConcept Typ odliczenia VAT zakupu. Słownik: purchase-vat-deduction-type (full-deduction, no-deduction, structured-deduction, deduction-50-percent).
vatRate 0..1 CodeableConcept Stawka VAT (pozycja vat-summary). Słownik: finance/vat-rate (23, 22, 8, 7, 5, 0, ZW, NP, OO).
description 0..1 string Opis pozycji.
accountingVariant 0..1 Reference(AccountingVariant) Wariant dekretacji na pozycji.

Kody value[].type wg typu pozycji:

code pozycji Kod value[].type Wariant Znaczenie
accounting-item amount valueMoney Kwota pozycji
accounting-item vat-amount valueMoney Kwota VAT pozycji
accounting-item vat-amount-without-deductions valueMoney VAT niepodlegający odliczeniu
accounting-item amount-not-earning-expense valueMoney Kwota niestanowiąca kosztu uzyskania przychodu
accounting-item description valueString Opis (alternatywnie pole description)
vat-summary net-amount valueMoney Netto dla stawki
vat-summary vat-amount valueMoney VAT dla stawki

3a. AllocationItem

Nazwa Kard. Typ Opis
type 1..1 CodeableConcept Typ alokacji. Słownik: posting-instruction-allocation-item-type: cost-type (rodzaje kosztów), cost-center (ośrodki kosztów), assets-under-construction, sale-types.
formulaComponent 0..1 Reference(FormulaComponent) Składnik formuły; identifier.value musi być liczbą całkowitą (id składnika) — inaczej 400.
costCarrier 0..1 Reference(CostCarrier) Nośnik kosztów (identifier w przestrzeni CostCarrier.Id).
weight 0..1 number Udział procentowy 0–100.
valueString 0..1 string Wariant migracyjny: kody lub @symbol bez referencji.

3b. Korekty i poprawa dokumentu

  • Poprawa wcześniej wysłanego dokumentu — ponowny POST /v1/posting-instructions z tym samym identyfikatorem zewnętrznym (PostingInstruction.ExternalId). Endpoint działa jako add-or-update — nadpisuje istniejący bufor; odpowiedź 200 OK.
  • Korekta (odrębny dokument korygujący) — nowy PostingInstruction z własnym identyfikatorem zewnętrznym, symbolem rodzaju dokumentu oznaczającym korektę (kodowanie w posting-instruction-document-symbol-type) oraz atrybutem correction-document-number z numerem dokumentu korygowanego (§4). Pole basedOn nie jest interpretowane w zapisie.

4. Atrybuty

attribute[] (Attribute: code + value[]) w systemie posting-instruction-attribute-type; wartości jako valueString:

Kod Znaczenie
split-payment Mechanizm podzielonej płatności (MPP)
ksef-acquisition-date Data otrzymania w KSeF
pz-document-number Numer dokumentu przyjęcia (PZ)
correction-document-number Numer dokumentu korygowanego (dla korekt)
vat-date Data VAT

5. Systemy kodowania (value sety)

Value sety pól kodowanych PostingInstruction (przestrzeń https://api-erp.kamsoft.pl/vs/finance/...; rejestr: Systemy kodowania i value sety).

Pole Value set Kody
status posting-instruction-status ready-for-retrieval, retrieved, in-registration, deleted
symbol posting-instruction-symbol, posting-instruction-document-symbol-type nadaje wdrożenie
paymentMethod posting-instruction-payment-method cash, transfer, credit-card, other
participant.function posting-instruction-participant-function seller, buyer, recipient, vat-group-member, subordinate-lgu
attribute[].code posting-instruction-attribute-type §4
position.code posting-instruction-line-type accounting-item, vat-summary
position.value[].type posting-instruction-line-value-item-type amount, net-amount, vat-amount, vat-amount-without-deductions, amount-not-earning-expense, description
position.allocation.type posting-instruction-allocation-item-type cost-type, cost-center, assets-under-construction, sale-types
position.purchaseVatDeduction purchase-vat-deduction-type full-deduction, no-deduction, structured-deduction, deduction-50-percent
position.vatRate finance/vat-rate 23, 22, 8, 7, 5, 0, ZW, NP, OO

Przykłady użycia z konkretnymi kodami: PostingInstruction — przykłady.


5a. Reguły walidacyjne

Reguły sprawdzane przez API przy POST. Naruszenie skutkuje odpowiedzią 400 Problem Details (§5b).

ID Reguła
pi-1 owner[] niesie identyfikator NIP (https://gov.pl/nip).
pi-2 symbol niesie kodowanie w posting-instruction-symbol i w posting-instruction-document-symbol-type.
pi-3 issueDate jest podane.
pi-4 identifier niesie numer dokumentu (system = https://api-erp.kamsoft.pl/vs/document-number).
pi-5 identifier niesie id dokumentu w systemie źródłowym (identyfikator o systemie innym niż KSeF i document-number).
pi-6 position[].allocation.formulaComponent (gdy type = FormulaComponent) ma identifier.value będące liczbą całkowitą.
pi-7 Kody status i paymentMethod, jeśli podane, pochodzą z odpowiednich słowników (§5).

Pozostałe pola nie są walidowane przez API poza zgodnością ze schematem JSON.


5b. Operacje i parametry wyszukiwania

Instalację księgowości wyznacza profil zasobu, a gdy podano przestrzeń identyfikatora (identifier[].system) — ta przestrzeń (zakres żądania).

Metoda Ścieżka Opis Odpowiedź
POST /v1/posting-instructions Przekazanie dokumentu do bufora księgowości; add-or-update po identyfikatorze zewnętrznym (§3b) 200 OK z zapisanym zasobem (także dla nowego bufora); 400 przy naruszeniu §5a; 404, gdy księgowość nie zwróciła zapisanego dokumentu
GET /v1/posting-instructions Wyszukiwanie buforów dokumentów 200 OK: { "items": [...], "nextToken": null }

Parametry GET (paginacja count, domyślnie 20, i offset, domyślnie 0):

Parametr Wymagany Format Opis
identifier nie system\|value Id w przestrzeni PostingInstruction.ExternalId lub PostingInstruction.Id
symbol nie system\|value Symbol bufora: https://api-erp.kamsoft.pl/vs/finance/posting-instruction-symbol\|<symbol>
owner nie system\|value Firma po NIP: https://gov.pl/nip\|<NIP>

Błędy: naruszenie reguły z §5a lub błędny format parametru zwraca RFC 9457 Problem Details (technical-conventions, §9) ze statusem 400. Przykład — żądanie POST bez kodowania symbolu bufora:

{
  "type": "https://httpstatuses.com/400",
  "title": "Invalid request",
  "status": 400,
  "detail": "Missing required value: symbol (https://api-erp.kamsoft.pl/vs/finance/posting-instruction-symbol|value in body)."
}

5c. Wsparcie wdrożeniowe

Zakres faktycznie wspieranych interakcji, aktywnych value setów oraz systemy identyfikatorów z §2a wynikają z zakresu uzgodnionego w umowie oraz z parametrów wdrożenia przekazanych przez KAMSOFT — zob. Identyfikacja i parametry wdrożenia. Niniejsza strona opisuje model kanoniczny, nie możliwości konkretnej instalacji.


6. Odniesienia