Create seller
- Sandbox: your partner domain on the Keep sandbox:
POST https://<partner_domain>.keep.co.il/api/public/sellers/create
- Production: your partner domain:
POST https://<partner_domain>.keep.co.il/api/public/sellers/create
Credentials
- Header
Authorization: Bearer <token>
Register a new seller account with Israeli business compliance validation. Includes validation for Israeli ID numbers, business registration, and bank account details.
Parameters
This endpoint takes no path, query or header parameters.
Request body
Content type: application/json
| Field |
Type |
Required |
Description |
firstName |
string |
yes |
Seller's first name, 2 to 250 characters: letters, spaces and the marks - _ . , ' " ״ ( ) : ;. |
lastName |
string |
yes |
Seller's last name, 2 to 250 characters: letters, spaces and the marks - _ . , ' " ״ ( ) : ;. |
email |
string |
yes |
Seller's primary email address (used for login) |
contactEmail |
string |
yes |
Business contact email address |
password |
string |
yes |
Account password, at least 6 characters. |
phone |
string |
yes |
Phone number, 1 to 250 characters. |
businessName |
string |
yes |
Legal business name, at most 250 characters. |
businessType |
integer |
yes |
Israeli business type. - 0 Not sure (לא ידוע) - 1 Osek Murshe, sole proprietorship (עוסק מורשה) - 2 Osek Patur, exempt small business (עוסק פטור) - 3 Incorporated company (חברה בע"מ) - 4 Partnership (שותפות) - 6 Non-profit (עמותה) - 7 Limited partnership (שותפות מוגבלת) - 8 Publicly traded company (חברה ציבורית) - 9 Shared cooperative (אגודה שיתופית) - 10 Public benefit company (חברה לתועלת הציבור) |
businessNumber |
string |
yes |
Israeli business registration number (ח.פ. / עוסק מורשה). Digits only, at most 9, with a valid check digit. |
socialId |
string |
yes |
Israeli ID number (תעודת זהות). Digits only, at most 9, with a valid check digit. |
industryClassification |
number |
no |
Industry classification code (optional) |
bankId |
string |
no |
Israeli bank code (optional) Digits only. |
accountNumber |
string |
no |
Bank account number (optional) Digits only. |
branchNumber |
string |
no |
Bank branch number (optional) Digits only. |
logo |
string |
no |
Business logo as base64 encoded data URI (optional) |
Request example
{
"firstName": "David",
"lastName": "Cohen",
"email": "david.cohen@example.com",
"contactEmail": "seller@example.com",
"password": "securePassword123",
"phone": "0500000009",
"businessName": "Cohen Electronics Ltd",
"businessType": 1,
"businessNumber": "330988015",
"socialId": "123456782",
"industryClassification": 12,
"bankId": "12",
"accountNumber": "123456789012345",
"branchNumber": "123",
"logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
Code samples
curl
curl -X POST 'https://<partner_domain>.keep.co.il/api/public/sellers/create' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <YOUR_TOKEN>' \
--data-raw '{
"firstName": "David",
"lastName": "Cohen",
"email": "david.cohen@example.com",
"contactEmail": "seller@example.com",
"password": "securePassword123",
"phone": "0500000009",
"businessName": "Cohen Electronics Ltd",
"businessType": 1,
"businessNumber": "330988015",
"socialId": "123456782",
"industryClassification": 12,
"bankId": "12",
"accountNumber": "123456789012345",
"branchNumber": "123",
"logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}'
Node.js
const response = await fetch("https://<partner_domain>.keep.co.il/api/public/sellers/create", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer <YOUR_TOKEN>",
},
body: JSON.stringify({
"firstName": "David",
"lastName": "Cohen",
"email": "david.cohen@example.com",
"contactEmail": "seller@example.com",
"password": "securePassword123",
"phone": "0500000009",
"businessName": "Cohen Electronics Ltd",
"businessType": 1,
"businessNumber": "330988015",
"socialId": "123456782",
"industryClassification": 12,
"bankId": "12",
"accountNumber": "123456789012345",
"branchNumber": "123",
"logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}),
});
console.log(await response.text());
Python
import requests
response = requests.post(
"https://<partner_domain>.keep.co.il/api/public/sellers/create",
headers={
"Authorization": "Bearer <YOUR_TOKEN>",
},
json={
"firstName": "David",
"lastName": "Cohen",
"email": "david.cohen@example.com",
"contactEmail": "seller@example.com",
"password": "securePassword123",
"phone": "0500000009",
"businessName": "Cohen Electronics Ltd",
"businessType": 1,
"businessNumber": "330988015",
"socialId": "123456782",
"industryClassification": 12,
"bankId": "12",
"accountNumber": "123456789012345",
"branchNumber": "123",
"logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...",
},
)
print(response.text)
PHP
<?php
$body = <<<'BODY'
{
"firstName": "David",
"lastName": "Cohen",
"email": "david.cohen@example.com",
"contactEmail": "seller@example.com",
"password": "securePassword123",
"phone": "0500000009",
"businessName": "Cohen Electronics Ltd",
"businessType": 1,
"businessNumber": "330988015",
"socialId": "123456782",
"industryClassification": 12,
"bankId": "12",
"accountNumber": "123456789012345",
"branchNumber": "123",
"logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
BODY;
$ch = curl_init('https://<partner_domain>.keep.co.il/api/public/sellers/create');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer <YOUR_TOKEN>',
],
CURLOPT_POSTFIELDS => $body,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Responses
201 — Seller created successfully (success)
| Field |
Type |
Description |
payload |
object |
|
payload.sellerId |
string |
Newly created seller's UUID |
{
"payload": {
"sellerId": "9a5e7898-067e-4c0c-a50f-5f8d83e7c686"
}
}
400 — Bad Request. Returned for validation errors, and for these onboarding refusals: - Social ID is invalid — a Keep seller already uses this ID number. - The email is invalid. Please try again — a Keep account already uses this email. Other onboarding errors are returned as 400 with their own message. (error)
| Field |
Type |
Description |
statusCode |
integer |
HTTP status code |
message |
string |
Error message(s) |
error |
string |
Error type |
{
"statusCode": 400,
"message": [
"Validation failed"
],
"error": "Bad Request"
}
401 — Unauthorized (error)
| Field |
Type |
Description |
statusCode |
integer |
|
message |
string |
|
{
"statusCode": 401,
"message": "Unauthorized"
}