Siedzisz wygodnie w swoim fotelu i korzystając z telefonu zamawiasz obiad w ulubionej restauracji z dostawą do domu. Nie oczekujesz, że dostarczy Ci go właściciel lub szef kuchni osobiście - zadanie to wykona dostawca.
 W tym zestawieniu Ty i Twoja ulubiona restauracja reprezentujecie dwa różne systemy, a dostarczający to API.
 
 API, czyli Application Programming Interface,  to zestaw reguł i zasad dzięki którym różne programy mogą się ze sobą komunikować, na przykład przekazując dane.
Jak API może Ci pomóc?
 Wielu przedsiębiorców boryka się z problemem wzrastającej liczby dokumentów.
 Jest to często "pułapka" sukcesu -
 im więcej artykułów sprzedają, tym więcej faktur i paragonów
 muszą wystawić i przekazać swoim klientom.
 To wszystko zajmuje czas, który lepiej byłoby przeznaczyć na rozwijanie
 firmy. 
Klienci kupują w Twoim sklepie
W ciągu każdej godziny dziesiątki klientów przeglądają, wybierają i płacą za Twoje towary. Wystawianie dla każdego z osobna faktur i paragonów jest sporym wyzwaniem.
Przepływ danych
Tobie pozostaje jedynie wysłanie ich do klientów mailem wprost z ING Księgowość lub pobranie, wydruk i zapakowanie do paczki razem z towarem.
Dokumenty wystawiają się automatycznie
Wszystkie istotne informacje są przekazywane z e-sklepu do ING Księgowości. Dane kupującego, towary które kupił, kwoty i sposób płatności.
Wstęp
  
 
       Nasze API udostępnia możliwość generowania faktur pod adresem URL https://ksiegowosc.ing.pl/v2/api/public/create-invoice
Do wygenerowania faktury należy użyć metody POST w żądaniu HTML.
Parametry żądania:
- W nagłówku żądania (‘header’) wymagany jest parametr ‘ApiUserCompanyRoleKey‘, którego wartość jest typu ‘string’ (ciąg tekstowy).
 Wartość tego parametru należy skopiować z zakładki "Dane i Ustawienia" > "Integracje"
 Ten parametr jest niezbędny do autoryzacji.
- W zawartości żądania (‘body’) przyjmowany jest object typu JSON (Parameter content type: application/json).
Zobacz przykładową strukturę JSON akceptowaną w body
- Definicje i struktury danych dotyczące elementów struktury JSON przedstawiamy w kolejnych sekcjach, które znajdziesz dalej u dołu strony (Dokument, Waluta etc.).
- W odpowiedzi ('response') na poprawnie przesłane żądanie otrzymujemy status odpowiedzi z kodem 200 i opisem OK, zawartość odpowiedzi (‘body’) w formacie JSON zawiera identyfikator „id” utworzonego dokumenty wraz linkiem do jego pobrania. Wartość przekazana w identyfikatorze należy podstawić w zapytaniu ‘/v2/api/public/download-invoice/{document}/pdf’ pod element {document}.
Szczegóły znajdziesz w zakładce GET Pobranie faktury w .pdf.
 
 Jeśli w statusie odpowiedzi na żądanie jest kod 400 z opisem 'Bad Request', wówczas zawartość odpowiedzi (‘body’) będzie zawierać odpowiednie komunikaty dla błędnie przesłanych danych w żądaniu.
Przykład
 { "property_path": "payment.method", "message": "Ta wartość powinna być jedną z podanych opcji." }]
Nasze API daje możliwość pobierania faktur w formacie .pdf. Metoda jest udostępniona pod adresem https://ksiegowosc.ing.pl/v2/api/public/download-invoice/{document}/pdf
Do wygenerowania faktury należy użyć metody GET w żądaniu HTML.
Parametry żądania:
- Wymagany parametr {document} w adresie żądania jest identyfikatorem „id” dokumentu którego plik .pdf chcemy pobrać.
- W nagłówku żądania (‘header’) wymagany jest parametr ‘ApiUserCompanyRoleKey‘, którego wartość jest typu ‘string’ (ciąg tekstowy).
 Wartość tego parametru należy skopiować z zakładki "Dane i Ustawienia" > "Integracje".
 Ten parametr jest niezbędny do autoryzacji.
- W odpowiedzi ('response') na poprawnie przesłane żądanie otrzymujemy status odpowiedzi z kodem 200 i opisem OK, zawartość odpowiedzi (‘body’) w  zawiera plik w formacie PDF, który można zapisać i otworzyć w odpowiedniej aplikacji.
 Jeśli w statusie odpowiedzi na żądanie jest kod 400 z opisem Bad Request, wówczas zawartość odpowiedzi (‘body’) będzie zawierać odpowiednie komunikaty dla błędnie przesłanych danych w żądaniu.
Post
Wygenerowanie faktury
Ścieżka
 /v2/api/public/create-invoice
{
 
  "issuedGross": true,
  "issuePlace": "string",
  "issueDate": "2020-04-28",
  "serviceDate": "2020-04-28",
  "description": "string",
  "signature": "string",
  "currency": {
    "code": "PLN",
    "rate": 0
  },
  "payment": {
    "method": "TRANSFER",
    "deadlineDate": "2020-04-28",
    "paidAmount": 0,
    "splitPayment": true,
    "bankAccounts": [
      {
        "accountNumber": "string",
        "name": "string",
        "swift": "string",
        "countryCode": "AF"
      }
    ]
  },
  "buyer": {
    "email": "user@example.com",
    "fullName": "string",
    "addressStreet": "string",
    "city": "string",
    "postCode": "string",
    "countryCode": "AF",
    "taxNumber": "string",
    "taxCountryCode": "AF"
  },
  "positions": [
    {
      "name": "string",
      "code": "string",
      "quantity": 0,
      "unit": "string",
      "net": 0,
      "tax": 0,
      "gross": 0,
      "taxStake": "TAX_23",
      "discount": 0,
      "discountAmount": 0,
      "netAfterDiscount": 0,
      "grossAfterDiscount": 0
    }
  ]
} 
      Dokument
Dane faktury - element zapytania POST
Elementy oznaczone * są elementami wymaganymi
| issuedGross | boolean | |||||||||||||||||||||||||
| issuePlace | string | |||||||||||||||||||||||||
| issueDate | string($date) | |||||||||||||||||||||||||
| serviceDate | string($date) | |||||||||||||||||||||||||
| description | string | |||||||||||||||||||||||||
| signature | string | |||||||||||||||||||||||||
| currency | CurrencyDto{ 
 | |||||||||||||||||||||||||
| payment* | PaymentDto{ 
 | |||||||||||||||||||||||||
| buyer* | BuyerDto...} | |||||||||||||||||||||||||
| positions* | [PositionDto{ 
 | |||||||||||||||||||||||||
Płatność
Element zapytania POST
Elementy oznaczone * są elementami wymaganymi
| method* | stringEnum: Array [ 9 ] | |||||||||
| deadlineDate* | string($date) | |||||||||
| paidAmount | number | |||||||||
| splitPayment | boolean | |||||||||
| bankAccounts* | [BankAccountDto{ 
 | 
Klient
Dane kupującego - element zapytania POST
Elementy oznaczone * są elementami wymaganymi
| email* | string($email) | 
| fullName* | string | 
| addressStreet* | string | 
| city* | string | 
| postCode* | string | 
| countryCode* | stringEnum: [ AF, AX, AL, DZ, AD, AO, AI, AQ, AG, AN, SA, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BE, BZ, BJ, BM, BT, BY, BO, BA, BW, BR, BN, IO, BG, BF, BI, XC, CL, CN, HR, CY, TD, ME, DK, DM, DO, DJ, EG, EC, ER, EE, ET, FK, FJ, PH, FI, FR, TF, GA, GM, GH, GI, GR, GD, GL, GE, GU, GG, GY, GF, GP, GT, GN, GQ, GW, HT, ES, HN, HK, IN, ID, IQ, IR, IE, IS, IL, JM, JP, YE, JE, JO, KY, KH, CM, CA, QA, KZ, KE, KG, KI, CO, KM, CG, CD, KP, XK, CR, CU, KW, LA, LS, LB, LR, LY, LI, LT, LV, LU, MK, MG, YT, MO, MW, MV, MY, ML, MT, MP, MA, MQ, MR, MU, MX, XL, FM, UM, MD, MC, MN, MS, MZ, MM, NA, NR, NP, NL, DE, NE, NG, NI, NU, NF, NO, NC, NZ, PS, OM, PK, PW, PA, PG, PY, PE, PN, PF, PL, GS, PT, PR, CF, CZ, KR, ZA, RE, RU, RO, RW, EH, BL, KN, LC, MF, VC, SV, WS, AS, SM, SN, RS, SC, SL, SG, SK, SI, SO, LK, PM, US, SZ, SD, SR, SJ, SH, SY, CH, SE, TJ, TH, TW, TZ, TG, TK, TO, TT, TN, TR, TM, TV, UG, UA, UY, UZ, VU, WF, VA, HU, VE, GB, VN, IT, TL, CI, BV, CX, IM, CK, VI, VG, HM, CC, MH, FO, SB, ST, TC, ZM, CV, ZW, AE ] | 
| taxNumber* | string | 
| taxCountryCode* | stringEnum: [ AF, AX, AL, DZ, AD, AO, AI, AQ, AG, AN, SA, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BE, BZ, BJ, BM, BT, BY, BO, BA, BW, BR, BN, IO, BG, BF, BI, XC, CL, CN, HR, CY, TD, ME, DK, DM, DO, DJ, EG, EC, ER, EE, ET, FK, FJ, PH, FI, FR, TF, GA, GM, GH, GI, GR, GD, GL, GE, GU, GG, GY, GF, GP, GT, GN, GQ, GW, HT, ES, HN, HK, IN, ID, IQ, IR, IE, IS, IL, JM, JP, YE, JE, JO, KY, KH, CM, CA, QA, KZ, KE, KG, KI, CO, KM, CG, CD, KP, XK, CR, CU, KW, LA, LS, LB, LR, LY, LI, LT, LV, LU, MK, MG, YT, MO, MW, MV, MY, ML, MT, MP, MA, MQ, MR, MU, MX, XL, FM, UM, MD, MC, MN, MS, MZ, MM, NA, NR, NP, NL, DE, NE, NG, NI, NU, NF, NO, NC, NZ, PS, OM, PK, PW, PA, PG, PY, PE, PN, PF, PL, GS, PT, PR, CF, CZ, KR, ZA, RE, RU, RO, RW, EH, BL, KN, LC, MF, VC, SV, WS, AS, SM, SN, RS, SC, SL, SG, SK, SI, SO, LK, PM, US, SZ, SD, SR, SJ, SH, SY, CH, SE, TJ, TH, TW, TZ, TG, TK, TO, TT, TN, TR, TM, TV, UG, UA, UY, UZ, VU, WF, VA, HU, VE, GB, VN, IT, TL, CI, BV, CX, IM, CK, VI, VG, HM, CC, MH, FO, SB, ST, TC, ZM, CV, ZW, AE ] | 
Rachunek odbiorcy
Element zapytania POST
Elementy oznaczone * są elementami wymaganymi
| accountNumber* | string | 
| name | string | 
| swift | string | 
| countryCode | stringEnum: [ AF, AX, AL, DZ, AD, AO, AI, AQ, AG, AN, SA, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BE, BZ, BJ, BM, BT, BY, BO, BA, BW, BR, BN, IO, BG, BF, BI, XC, CL, CN, HR, CY, TD, ME, DK, DM, DO, DJ, EG, EC, ER, EE, ET, FK, FJ, PH, FI, FR, TF, GA, GM, GH, GI, GR, GD, GL, GE, GU, GG, GY, GF, GP, GT, GN, GQ, GW, HT, ES, HN, HK, IN, ID, IQ, IR, IE, IS, IL, JM, JP, YE, JE, JO, KY, KH, CM, CA, QA, KZ, KE, KG, KI, CO, KM, CG, CD, KP, XK, CR, CU, KW, LA, LS, LB, LR, LY, LI, LT, LV, LU, MK, MG, YT, MO, MW, MV, MY, ML, MT, MP, MA, MQ, MR, MU, MX, XL, FM, UM, MD, MC, MN, MS, MZ, MM, NA, NR, NP, NL, DE, NE, NG, NI, NU, NF, NO, NC, NZ, PS, OM, PK, PW, PA, PG, PY, PE, PN, PF, PL, GS, PT, PR, CF, CZ, KR, ZA, RE, RU, RO, RW, EH, BL, KN, LC, MF, VC, SV, WS, AS, SM, SN, RS, SC, SL, SG, SK, SI, SO, LK, PM, US, SZ, SD, SR, SJ, SH, SY, CH, SE, TJ, TH, TW, TZ, TG, TK, TO, TT, TN, TR, TM, TV, UG, UA, UY, UZ, VU, WF, VA, HU, VE, GB, VN, IT, TL, CI, BV, CX, IM, CK, VI, VG, HM, CC, MH, FO, SB, ST, TC, ZM, CV, ZW, AE ] | 
Dane pozycji na fakturze
Element zapytania POST
Elementy oznaczone * są elementami wymaganymi
| name* | string | 
| code* | string | 
| quantity* | number | 
| unit* | string | 
| net* | number | 
| tax* | number | 
| gross* | number | 
| taxStake* | stringEnum: [ TAX_23, TAX_22, TAX_8, TAX_7, TAX_5, TAX_3, TAX_0, TAX_EXEMPT, TAX_NOT_LIABLE, TAX_EXCLUDING, TAX_REVERSE_CHARGE ] | 
| discount | number title: w procentach * | 
| discountAmount | number | 
| netAfterDiscount | number | 
| grossAfterDiscount | number | 
