API
Tworzenie wniosku kredytowego
Tworzy nowy wniosek kredytowy wraz z danymi koszyka i klienta.
Tworzenie wniosku kredytowego
- Wszystkie kwoty przesyłane do API muszą być typu int i podane w groszach.
- Zapytanie jest weryfikowane pod kątem poprawności przesyłanych wartości.
- Zamówienie może zawierać rabaty, które pomniejszają wartość koszyka i kredytu.
- Zamówienie może zawierać dodatkowe koszty wynikające z obsługi zamówienia.
- W szczególnych przypadkach możliwa jest późniejsza zmiana kwoty zamówienia.
Zapytanie:
curl -X POST 'http://{HOST_API}/v1/orders' \
--header 'API-KEY: {API-KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
"notifyUrl": "https://your-shop.tld/notify",
"returnUrl": "https://your-shop.tld/thanks",
"orderId": "{twój_identyfikator_zamówienia}",
"loanParameters": {
"term": 123,
"type": "INSTALLMENTS_ZERO_PERCENT",
"allowedProductTypes": ["INSTALLMENTS_ZERO_PERCENT","PAY_LATER"]
},
"cart": {
"category": "KATEGORIA ZE SŁOWNIKA",
"totalAmount": 443907,
"deliveryCost": 1230,
"deliveryNetCost": 1000,
"deliveryCostVatRate": 23,
"deliveryCostVatAmount": 230,
"products": [
{
"name": "Lenovo Ideapad 120S-14IAP",
"quantity": 1,
"price": 246000,
"netPrice": 200000,
"vatRate": 23,
"vatAmount": 46000,
"photoUrl": "01e5f8",
"ean": "9002490100070",
"externalId": "123",
"category": "productCategory"
},
{
"name": "Lenovo Ideapad 120S-14IAP",
"quantity": 1,
"price": 196677,
"netPrice": 159900,
"vatRate": 23,
"vatAmount": 36777,
"photoUrl": "01e5f8",
"ean": "9002490100070",
"externalId": "123",
"category": "productCategory"
}
]
},
"customer": {
"firstName": "John",
"lastName": "John",
"taxId": null,
"email": "customer@example.com",
"phoneNumber": "312213213",
"ip": "ip klienta",
"regular": false,
"logged": false,
"address": {
"street": "Różana",
"buildingNumber": "1",
"apartmentNumber": "1",
"postalCode": "10-899",
"city": "Warszawa",
"countryCode": "PL"
}
},
"seller": {
"taxId": "1234567890"
},
"accountNumber": "75114011244753619198148640",
"transferTitle": "Płatność za zamówienie 1234ABCDE"
}'
Parametry żądania
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| notifyUrl | string | nie | URL powiadomień (max. 255 znaków alfanumerycznych). |
| returnUrl | string | tak | URL powrotu po zakończeniu wniosku (max. 255 znaków alfanumerycznych). |
| orderId | string | tak | Identyfikator zamówienia (max. 36 znaków alfanumerycznych). |
| loanParameters | object | tak | Parametry kredytu w formacie JSON. |
| cart | object | tak | Koszyk w formacie JSON. |
| customer | object | tak | Dane klienta w formacie JSON. |
| seller | object | nie | Dane sprzedawcy w formacie JSON. Dla konta merchant pomijane; dla marketplace wymagane — NIP musi być wcześniej zdefiniowany metodą sale-point-add. |
| accountNumber | string | nie | Numer konta bankowego (max. 26 cyfr). |
| transferTitle | string, null | nie | Tytuł przelewu od Comfino do sklepu (max. 140 znaków). Jeśli nie podano, Comfino użyje wartości pola orderId. |
loanParameters
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| term | int, null | nie | Liczba rat (wartość numeryczna lub null). |
| type | string, null | nie | Typ produktu — null lub wartość ze słownika typów. |
| allowedProductTypes | array, null | nie | Tablica typów ze słownika ograniczająca listę ofert na wniosku. Wartość null znosi ograniczenia; pusta tablica [] blokuje wyświetlanie ofert. |
cart
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| category | string | nie | Kategoria koszyka (znaki alfanumeryczne). |
| totalAmount | int | tak | Suma brutto wszystkich produktów wraz z kosztem dostawy w groszach. |
| deliveryCost | int, null | nie | Koszt dostawy brutto w groszach. |
| deliveryNetCost | int, null | nie | Koszt dostawy netto w groszach. |
| deliveryCostVatRate | int, null | nie | Stawka VAT kosztu dostawy (null — VAT ZW). |
| deliveryCostVatAmount | int, null | nie | Wartość VAT kosztu dostawy w groszach. |
| products | array | tak | Lista produktów w formacie JSON. |
cart.product
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| name | string | tak | Nazwa produktu (znaki alfanumeryczne). |
| quantity | int | tak | Ilość sztuk. |
| price | int | tak | Cena brutto w groszach. |
| netPrice | int, null | nie | Cena netto w groszach. |
| vatRate | int, null | nie | Stawka VAT (null — VAT ZW). |
| vatAmount | int, null | nie | Wartość VAT w groszach. |
| photoUrl | string, null | nie | URL zdjęcia produktu. |
| ean | string, null | nie | Kod EAN produktu. |
| externalId | string, null | nie | Zewnętrzny identyfikator produktu. |
| category | string, null | nie | Kategoria produktu lub wartości związane z dodatkowymi opłatami i rabatami. |
customer
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| firstName | string, null | tak | Imię (min. 2, max. 63 znaki). Jeśli sklep przechowuje imię i nazwisko w jednym polu, przekazuje pierwszy człon po podziale po spacji. |
| lastName | string, null | tak | Nazwisko (min. 2, max. 63 znaki). Jeśli sklep przechowuje imię i nazwisko w jednym polu, przekazuje wszystko od drugiego członu. |
| taxId | string, null | nie | NIP klienta. |
| string | tak | Adres e-mail klienta. | |
| phoneNumber | string | tak | Numer telefonu (9 cyfr). |
| ip | string | tak | Adres IP klienta (IPv4 lub IPv6). |
| regular | bool, null | nie | Stały klient / ponowny zakup. |
| logged | bool, null | nie | Czy klient jest zalogowany. |
| address | object, null | nie | Adres klienta w formacie JSON. |
customer.address
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| street | string, null | nie | Ulica. |
| buildingNumber | string, null | nie | Numer budynku. |
| apartmentNumber | string, null | nie | Numer lokalu. |
| postalCode | string, null | nie | Kod pocztowy. |
| city | string, null | nie | Miasto. |
| countryCode | string, null | nie | Kod kraju. |
seller
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
| taxId | string, null | nie | NIP sprzedawcy (10 znaków alfanumerycznych). |
Dodatkowe koszty i rabaty
Dodatkowe koszty obsługi płatności i przesyłki
Aby doliczyć dodatkowe koszty do wartości kredytu, dodaj produkt o kategorii ADDITIONAL_FEE z odpowiednią wartością. Suma wszystkich wartości w koszyku pomnożona przez ilość musi być równa totalAmount.
curl -X POST 'http://{HOST_API}/v1/orders' \
--header 'API-KEY: {API-KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
"notifyUrl": "https://your-shop.tld/notify",
"returnUrl": "https://your-shop.tld/thanks",
"orderId": "{twój_identyfikator_zamówienia}",
"loanParameters": {
"term": 10,
"type": "INSTALLMENTS_ZERO_PERCENT"
},
"cart": {
"category": "KATEGORIA Z SŁOWNIKA",
"totalAmount": 36000,
"deliveryCost": 1000,
"products": [
{
"name": "Lenovo Ideapad 120S-14IAP",
"quantity": 1,
"price": 10000,
"photoUrl": "01e5f8",
"ean": "9002490100070",
"externalId": "123",
"category": "productCategory"
},
{
"name": "Lenovo Ideapad 120S-14IAP",
"quantity": 1,
"price": 20000,
"photoUrl": "01e5f8",
"ean": "9002490100070",
"externalId": "123",
"category": "productCategory"
},
{
"name": "Dopłata rodzaj płatności",
"quantity": 1,
"price": 5000,
"category": "ADDITIONAL_FEE"
}
]
},
"customer": {
"firstName": "John",
"lastName": "John",
"taxId": null,
"email": "customer@example.com",
"phoneNumber": "312213213",
"ip": "ip klienta",
"regular": false,
"logged": false,
"address": {
"street": "Rowowa",
"buildingNumber": "1",
"apartmentNumber": "1",
"postalCode": "10-899",
"city": "Karłowice",
"countryCode": "PL"
}
},
"seller": {
"taxId": "1234567890"
},
"accountNumber": "75114011244753619198148640",
"transferTitle": "Płatność za zamówienie 1234ABCDE"
}'
Rabaty
Aby pomniejszyć wartość kredytu o rabat, dodaj produkt o kategorii DISCOUNT z ujemną kwotą. Suma wszystkich wartości w koszyku pomnożona przez ilość musi być równa totalAmount.
curl -X POST 'http://{HOST_API}/v1/orders' \
--header 'API-KEY: {API-KEY}' \
--header 'Content-Type: application/json' \
--data-raw '{
"notifyUrl": "https://your-shop.tld/notify",
"returnUrl": "https://your-shop.tld/thanks",
"orderId": "{twój_identyfikator_zamówienia}",
"loanParameters": {
"term": 10,
"type": "INSTALLMENTS_ZERO_PERCENT"
},
"cart": {
"category": "KATEGORIA Z SŁOWNIKA",
"totalAmount": 26000,
"deliveryCost": 1000,
"products": [
{
"name": "Lenovo Ideapad 120S-14IAP",
"quantity": 1,
"price": 10000,
"photoUrl": "01e5f8",
"ean": "9002490100070",
"externalId": "123",
"category": "productCategory"
},
{
"name": "Lenovo Ideapad 120S-14IAP",
"quantity": 1,
"price": 20000,
"photoUrl": "01e5f8",
"ean": "9002490100070",
"externalId": "123",
"category": "productCategory"
},
{
"name": "Nazwa rabatu",
"quantity": 1,
"price": -5000,
"category": "DISCOUNT"
}
]
},
"customer": {
"firstName": "John",
"lastName": "John",
"taxId": null,
"email": "customer@example.com",
"phoneNumber": "312213213",
"ip": "ip klienta",
"regular": false,
"logged": false,
"address": {
"street": "Rowowa",
"buildingNumber": "1",
"apartmentNumber": "1",
"postalCode": "10-899",
"city": "Karłowice",
"countryCode": "PL"
}
},
"seller": {
"taxId": "1234567890"
},
"accountNumber": "75114011244753619198148640",
"transferTitle": "Płatność za zamówienie 1234ABCDE"
}'
Odpowiedź
{
"status": "CREATED",
"externalId": "{twój_identyfikator_zamówienia}",
"applicationUrl": "{url_do_przekierowania_na_stronę_formularza}"
}
Kody odpowiedzi serwera
- 201 Created
- 400 Bad Request
- 401 Unauthorized
- 405 Method Not Allowed
- 500 Internal Server Error