| Advertiser | CreditKasa |
| Country | CZ |
| Segment | Finance |
| Product | Loan |
| Integration type | Lead generation |
| Flows | Ping → Post |
Use global fields and skip mapping entirely
Every prebuilt integration is already mapped to PalDock’s global fields. Populate them once in your lead structure, whether leads arrive through the API or form, and the same fields feed every integration you run.
Integration overview
This prebuilt PalDock integration connects your lead flow directly to the advertiser. It handles field mapping, request delivery and response processing, so you can start sending leads without building the integration from scratch.
The integration uses PalDock’s global fields and returns standardized outcomes for reporting and routing, while preserving advertiser response details for troubleshooting.
Blueprint

{
"nodes": [
{
"id": "1-1",
"type": "startNode",
"position": {
"x": -620,
"y": 400
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "ping",
"beType": "integration"
}
}
},
{
"id": "2-1",
"type": "startNode",
"position": {
"x": -620,
"y": 40
},
"data": {
"formData": {
"active": true,
"title": "",
"subtitle": "",
"flow": "post",
"beType": "integration"
}
}
},
{
"id": "1-2",
"type": "setNode",
"position": {
"x": -450,
"y": 400
},
"data": {
"formData": {
"active": true,
"title": "Auth",
"subtitle": "",
"fields": [
{
"key": "{auth_raw}",
"value": "{username}:{password}"
}
]
}
}
},
{
"id": "1-3",
"type": "modifyFieldNode",
"position": {
"x": -260,
"y": 400
},
"data": {
"formData": {
"active": true,
"title": "Transform data",
"subtitle": "",
"data": [
{
"fieldName": "{auth}",
"fields": [
{
"source": "{auth_raw}",
"operator": "always",
"value": "",
"value2": "",
"modification": "to_base64",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_nin}",
"fields": [
{
"source": "{data_nin}",
"operator": "always",
"value": "",
"value2": "",
"modification": "regex_replace",
"pattern": "(\\d{6})(\\d{3,4})",
"output": "$1/$2"
}
]
}
]
}
}
},
{
"id": "1-4",
"type": "httpNode",
"position": {
"x": -69.523413111342,
"y": 397.93652445369
},
"data": {
"formData": {
"active": true,
"title": "Ping",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/leadpartnerapi",
"timeout": 30,
"format": "application/json",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "X-Request-ID",
"value": "{eid}"
},
{
"key": "Authorization",
"value": "Basic {auth}"
}
],
"query": [],
"body": [
{
"key": "method",
"value": "checkDuplicate"
},
{
"key": "customer-personcode",
"value": "{data_nin}"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "1-5",
"type": "setNode",
"position": {
"x": 142.27575442248,
"y": 312.75130072841
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{external_id}",
"value": "{parsedBody.lead-id}"
}
]
}
}
},
{
"id": "1-6",
"type": "modifyFieldNode",
"position": {
"x": 121.64099895942,
"y": 479.36524453694
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{parsedBody.err}",
"operator": "equals",
"value": "duplicate-customer",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Existing Customer"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "1-7",
"type": "endNode",
"position": {
"x": 309.36628511967,
"y": 324.44432882414
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "1-8",
"type": "endNode",
"position": {
"x": 327.24973985432,
"y": 486.93132154006
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
},
{
"id": "2-2",
"type": "setNode",
"position": {
"x": -450,
"y": 40
},
"data": {
"formData": {
"active": true,
"title": "Auth",
"subtitle": "",
"fields": [
{
"key": "{auth_raw}",
"value": "{username}:{password}"
}
]
}
}
},
{
"id": "2-3",
"type": "modifyFieldNode",
"position": {
"x": -260,
"y": 40
},
"data": {
"formData": {
"active": true,
"title": "Transform data",
"subtitle": "",
"data": [
{
"fieldName": "{auth}",
"fields": [
{
"source": "{auth_raw}",
"operator": "always",
"value": "",
"value2": "",
"modification": "to_base64",
"pattern": "",
"output": ""
}
]
},
{
"fieldName": "{data_requested_amount}",
"fields": [
{
"source": "{data_requested_amount}",
"operator": "is_less_than",
"value": "5000",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "5000"
}
]
},
{
"fieldName": "{data_nin}",
"fields": [
{
"source": "{data_nin}",
"operator": "always",
"value": "",
"value2": "",
"modification": "regex_replace",
"pattern": "(\\d{6})(\\d{3,4})",
"output": "$1/$2"
}
]
},
{
"fieldName": "{data_cell_phone}",
"fields": [
{
"source": "{data_cell_phone}",
"operator": "regex_match",
"value": "^\\d{9}$",
"value2": "",
"modification": "regex_replace",
"pattern": "^(\\d{9})$",
"output": "+420$1"
},
{
"source": "{data_cell_phone}",
"operator": "regex_match",
"value": "^420\\d{9}$",
"value2": "",
"modification": "regex_replace",
"pattern": "^(420\\d{9})$",
"output": "+$1"
}
]
},
{
"fieldName": "{data_income_type}",
"fields": [
{
"source": "{data_income_type}",
"operator": "equals",
"value": "full-time",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "EMPLOYED"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "self-employed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "SELF_EMPLOYED"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "parental",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "MATERNITY_LEAVE"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "pension",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "PENSION"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "unemployed",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "UNEMPLOYED"
},
{
"source": "{data_income_type}",
"operator": "equals",
"value": "other",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "OTHER"
}
]
},
{
"fieldName": "{data_home_status}",
"fields": [
{
"source": "{data_home_status}",
"operator": "equals",
"value": "owner",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "HOME_OWNER"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "tenant",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "TENANT"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "family",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "CO_OWNED"
},
{
"source": "{data_home_status}",
"operator": "equals",
"value": "employ-benefits",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "EMPLOYEE_BENEFIT"
}
]
},
{
"fieldName": "{data_employed_time}",
"fields": [
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "3-month",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "1"
},
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "1-year",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "3"
},
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "1-2-year",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "4"
},
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "2-5-year",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "5"
},
{
"source": "{data_employed_time}",
"operator": "equals",
"value": "5-year-plus",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "8"
}
]
}
]
}
}
},
{
"id": "2-4",
"type": "httpNode",
"position": {
"x": -112.85639958377,
"y": 40.687825182102
},
"data": {
"formData": {
"active": true,
"title": "Post",
"subtitle": "",
"method": "POST",
"endpoint": "{endpoint}/leadpartnerapi",
"timeout": 30,
"format": "application/json",
"parser": "json",
"notsend": null,
"convert_data": null,
"headers": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Authorization",
"value": "Basic {auth}"
}
],
"query": [],
"body": [
{
"key": "pin",
"value": "{data_nin}"
},
{
"key": "email",
"value": "{data_email}"
},
{
"key": "phone",
"value": "{data_cell_phone}"
},
{
"key": "method",
"value": "registerCustomer"
},
{
"key": "housing",
"value": "{data_home_status}"
},
{
"key": "lead-id",
"value": "{external_id}"
},
{
"key": "lastname",
"value": "{data_last_name}"
},
{
"key": "passport",
"value": "{data_identity_card_number}"
},
{
"key": "firstname",
"value": "{data_first_name}"
},
{
"key": "loan-term",
"value": "{data_period}"
},
{
"key": "address-zip",
"value": "{data_zip}"
},
{
"key": "company-ico",
"value": "{data_company_number_imported}"
},
{
"key": "loan-amount",
"value": "{data_requested_amount}"
},
{
"key": "address-city",
"value": "{data_city}"
},
{
"key": "company-name",
"value": "{data_employer}"
},
{
"key": "employed-for",
"value": "{data_employed_time}"
},
{
"key": "income-source",
"value": "{data_income_type}"
},
{
"key": "address-number",
"value": "{data_house_number}"
},
{
"key": "address-street",
"value": "{data_street}"
},
{
"key": "employer-phone",
"value": "{data_employer_phone}"
},
{
"key": "monthly-income",
"value": "{data_monthly_income}"
},
{
"key": "type-of-income",
"value": "{data_job_title}"
},
{
"key": "employer-address",
"value": "{data_employer_address}"
},
{
"key": "monthly-expenses",
"value": "{data_expenses}"
},
{
"key": "contact-address-zip",
"value": "{data_contact_zip}"
},
{
"key": "contact-address-city",
"value": "{data_contact_city}"
},
{
"key": "contact-address-number",
"value": "{data_contact_house_number}"
},
{
"key": "contact-address-street",
"value": "{data_contact_street}"
}
],
"signature": null,
"insecure": null
}
}
},
{
"id": "2-5",
"type": "setNode",
"position": {
"x": 138.83662851197,
"y": -47.936524453694
},
"data": {
"formData": {
"active": true,
"title": "Store response",
"subtitle": "",
"fields": [
{
"key": "{redirect_url}",
"value": "{parsedBody.return-url}"
},
{
"key": "{external_id}",
"value": "{parsedBody.lead-id}"
}
]
}
}
},
{
"id": "2-6",
"type": "modifyFieldNode",
"position": {
"x": 99.525379498684,
"y": 158.52731448446
},
"data": {
"formData": {
"active": true,
"title": "Reject reason",
"subtitle": "",
"data": [
{
"fieldName": "{reason}",
"fields": [
{
"source": "{parsedBody.err}",
"operator": "equals",
"value": "unsuccessful",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Unspecified"
},
{
"source": "{parsedBody.err}",
"operator": "equals",
"value": "duplicate-customer",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "Existing Customer"
}
]
},
{
"fieldName": "{reason_detail}",
"fields": [
{
"source": "{body}",
"operator": "always",
"value": "",
"value2": "",
"modification": "replace",
"pattern": "",
"output": "{body}"
}
]
}
]
}
}
},
{
"id": "2-7",
"type": "endNode",
"position": {
"x": 359.57752341311,
"y": -30.740894901145
},
"data": {
"formData": {
"active": true,
"title": "Success",
"subtitle": "",
"success": "success"
}
}
},
{
"id": "2-8",
"type": "endNode",
"position": {
"x": 326.56191467222,
"y": 142.43392299688
},
"data": {
"formData": {
"active": true,
"title": "Rejected",
"subtitle": "",
"success": "failed"
}
}
}
],
"edges": [
{
"id": "edge-1-1-1-2",
"source": "1-1",
"target": "1-2",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-1-2-2",
"source": "2-1",
"target": "2-2",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-2-1-3",
"source": "1-2",
"target": "1-3",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-3-1-4",
"source": "1-3",
"target": "1-4",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-4-1-5",
"source": "1-4",
"target": "1-5",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.result}",
"operator": "equals",
"output": "1",
"output2": ""
}
]
}
},
{
"id": "edge-1-4-1-6",
"source": "1-4",
"target": "1-6",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.err}",
"operator": "equals",
"output": "duplicate-customer",
"output2": ""
}
]
}
},
{
"id": "edge-1-5-1-7",
"source": "1-5",
"target": "1-7",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-1-6-1-8",
"source": "1-6",
"target": "1-8",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-2-2-3",
"source": "2-2",
"target": "2-3",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-3-2-4",
"source": "2-3",
"target": "2-4",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-4-2-5",
"source": "2-4",
"target": "2-5",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.result}",
"operator": "equals",
"output": "1",
"output2": ""
}
]
}
},
{
"id": "edge-2-4-2-6",
"source": "2-4",
"target": "2-6",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": [
{
"value": "{status}",
"operator": "equals",
"output": "200",
"output2": ""
},
{
"value": "{parsedBody.err}",
"operator": "regex_match",
"output": "^(unsuccessful|duplicate-customer)$",
"output2": ""
}
]
}
},
{
"id": "edge-2-5-2-7",
"source": "2-5",
"target": "2-7",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
},
{
"id": "edge-2-6-2-8",
"source": "2-6",
"target": "2-8",
"type": "customEdge",
"data": {
"active": true,
"title": "",
"subtitle": "",
"conditions": []
}
}
]
}How it works
- Copy the blueprint and paste it in your PalDock workspace– Create a new integration in your workspace and paste the blueprint. Every field arrives prefilled.
- Enter your credentials – Paste the secrets you received from advertiser and set your Pingtree
- Send a test lead – Verify the response, then switch the channel live.
FAQ
Do I need my own contract with this advertiser?
Yes. PalDock delivers leads on your behalf, so the commercial agreement and API credentials come from the advertiser directly.
What happens to rejected leads?
The advertiser returns its decision in the delivery response. PalDock reads it and moves rejected leads to the next buyer in your pingtree automatically, so a rejection does not need to end the lead’s journey.
Can I change the field mapping?
Yes, but we do not recommend it. Blueprints are already mapped to PalDock’s global fields. If you use local fields, you need to remap each integration separately.
How long does setup take?
Few clicks, if you already have credentials. The blueprint arrives prefilled and mapped to PalDock’s global fields, so if your lead structure uses them, there is nothing to map. If you use local fields, you map them once.
What the integration does
Start sending leads in 3 clicks
Copy the prebuilt blueprint, add your credentials and start sending leads. No coding, no integration work.
Real-time lead delivery
Send leads to the advertiser instantly as they arrive, without exports, batches or manual processing.
No field mapping headache
PalDock global fields work across all prebuilt integrations. Map your lead data once and reuse it everywhere.
Know exactly why leads fail
Get standardized rejection reasons for reporting and advertiser’s response for the full context and troubleshooting.
API & integration details
Both steps are POSTs to the same URL; the method field in the body says which operation is meant.
Everything comes back as HTTP 200, including refusals. The decision is in result.
What will be needed from advertiser
| Key | Purpose |
|---|---|
endpoint | Base API URL. |
username | Basic Auth username. |
password | Basic Auth password. |
Flows
Ping, method: checkDuplicate. Asks whether the national ID is already on file. Returns a lead-id that the post reuses.
Post, method: registerCustomer. Registers and decides. Returns return-url.
Calls
POST {endpoint}/leadpartnerapi
Authorization: Basic base64({username}:{password})
Content-Type: application/json
format: application/json
Build the Basic header from the two halves at run time rather than storing an encoded blob:
Set {auth0} = {username}:{password}
Modify {auth} ← {auth0}, to_base64
HTTP Authorization: Basic {auth}
Wrong credentials come back as {"result": "-1", "err": "wrong credentials"} with HTTP 200. That is a broken integration, not a rejected lead, do not map it to a reject reason.
Request fields
Ping
| Field | Required | Value |
|---|---|---|
method | yes | checkDuplicate |
customer-personcode | yes | {g_id_national_number} with the slash |
Post
| Field | Required | Value |
|---|---|---|
method | yes | registerCustomer |
lead-id | no | {custom_lead_id} from the ping |
pin | yes | {g_id_national_number} with the slash |
passport | yes | {g_id_card_number} |
firstname | yes | {g_name_first} |
lastname | yes | {g_name_last} |
email | yes | {g_email} |
phone | yes | {g_phone} as +420999999999 |
loan-amount | yes | {g_amount}, minimum 5 000 |
loan-term | yes | {g_period}, 1–70 or 180 |
monthly-income | yes | {g_fin_income} |
monthly-expenses | no | {g_fin_expenses} |
income-source | no | {g_fin_type}, see enums |
employed-for | no | {g_employ_time} |
company-name | no | {g_employer_name} |
company-ico | no | {g_company_registration} |
employer-address | no | {g_employer_address} |
employer-phone | no | {g_employer_phone} |
address-street | yes | {g_address_street} |
address-number | yes | {g_address_street_number} |
address-city | yes | {g_address_city} |
address-zip | yes | {g_address_zip} |
contact-address-street | no | {g_address_contact_street} |
contact-address-number | no | {g_address_contact_street_number} |
contact-address-city | no | {g_address_contact_city} |
contact-address-zip | no | {g_address_contact_zip} |
housing | no | {g_home_type}, see enums |
pin and customer-personcode need the slash: 541203/1234. The form produces plain digits, so this is one of the few transformations that genuinely belongs in the integration:
{g_id_national_number} always regex_replace (\d{6})(\d{3,4}) → $1/$2
phone needs the +420 prefix. Add it conditionally, so a number that already carries it is not prefixed twice.
Enums
income-source: EMPLOYED, PART_TIME_EMPLOYMENT, SELF_EMPLOYED, PENSION, MATERNITY_LEAVE, BENEFITS, SAVINGS, STUDENT, UNEMPLOYED, OTHER.
housing: HOME_OWNER, TENANT, CO_OWNED, EMPLOYEE_BENEFIT.
The advertiser also accepts sex, marital-status, dependents-count, industry, education, execution, insolvency and third-parties-debt, all optional. Send them only where the form actually collects them.
Outcomes
result is the decision: 1 accepted, 0 refused. err is empty on success and names the problem otherwise.
| Recognised by | HTTP | Meaning | Reject reason | Frequency |
|---|---|---|---|---|
result: 1, err: "" | 200 | Accepted | , | common |
err: duplicate-customer | 200 | Already on file | Existing Customer | occasional |
err: unsuccessful | 200 | Refused, no reason given | Unspecified | common |
err: wrong credentials | 200 | Bad credentials | , (technical) | never in normal operation |
The vocabulary is genuinely this small. unsuccessful accounts for nearly every refusal at the post and says nothing at all, Unspecified.
At the ping, duplicate-customer comes back with lead-id: "0". At the post it comes back with a real lead-id. Neither is usable; the answer is the same either way.
Reject reasons come from the standard list. See Reject reason for what each one means and when to use it.
Branching
Ping, new person:
{status} equals 200
{parsedBody.result} equals 1
Ping, duplicate:
{status} equals 200
{parsedBody.err} equals duplicate-customer
Post, accepted:
{status} equals 200
{parsedBody.result} equals 1
Post, refused:
{status} equals 200
{parsedBody.err} regex match ^(unsuccessful|duplicate-customer)$
Nothing branches on the status code alone, 200 is what every answer arrives as.
Stored values
| Parameter | Source |
|---|---|
{external_id} | {parsedBody.lead-id} |
{redirect_url} | {parsedBody.return-url} from the post |
The ping’s lead-id is passed to the post as lead-id, so the post does not have to re-identify the person.
Advertiser APIs change without warning
When they do, leads stop being delivered, often before anyone notices. PalDock gives you delivery logs and alerts so you can catch it early. With Managed Integrations, we watch the connection and fix it for you.
