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 |