Create a seller
- Sandbox:
POST https://sandbox.payme.io/api/create-seller - Production:
POST https://live.payme.io/api/create-seller
Credentials
- Request body field
payme_client_key(required): Your partner key. Partners only.
Creates a seller under your partner account and returns its seller_payme_id (MPL), its public key, and a link where the seller finishes onboarding. Partners only: send your payme_client_key. A seller's MPL can't be used to create sellers. For the whole onboarding flow, see Create sellers.
PayMe sets which fields are required for your account. A missing required field returns error 19, with the field name in status_additional_info. The Required column below shows the usual setup. seller_email is always required and must be unique among your sellers (error 150). seller_id, if you send it, must also be unique among your sellers (error 108). Other fields can be enabled for your account by PayMe.
The call is limited to 5 requests per minute per IP. Over the limit, or while a call for the same seller_email is still running, you get HTTP 429 with error 998. Wait and retry.
Testing in the sandbox
| Field | Test value |
|---|---|
seller_social_id |
9999999999. PayMe replaces it with a random valid ID. |
seller_email |
random@paymeservice.com. PayMe replaces it with a unique address and sends no emails. |
seller_bank_code |
54 |
seller_bank_branch |
Any 3 digits, for example 123 |
seller_bank_account_number |
Any 6 digits, for example 123456 |
Callback
When the seller is created or updated, PayMe sends a seller callback (POST, x-www-form-urlencoded) to your default callback URL. The fields are listed on Callbacks → Sellers.
Errors
Every error returns status_code 1 with the code in status_error_code. The common ones:
| Code | Meaning |
|---|---|
1 |
A required parameter is missing, for example payme_client_key. |
5 |
seller_description is longer than 255 characters. |
13 |
seller_email is missing or invalid. |
19 |
A field your account requires is missing. status_additional_info names it. |
25 |
Invalid phone number. |
57 |
seller_merchant_name_en or seller_dba_en isn't in Latin characters. |
101 |
Invalid national ID number. |
106 |
Unknown seller_bank_code. |
108 |
seller_id is already used by another of your sellers. |
110 |
Unknown or inactive business field in seller_person_business_type. |
114 |
Unknown incorporation type, a type from another country than seller_address_country, or a seller_inc_code that doesn't fit the type. |
116 / 117 / 118 |
Invalid birth date / registration date / ID issue date. |
119 |
Invalid seller_retail_type. |
120 |
Invalid characters in seller_merchant_name. |
121 |
seller_inc_code isn't a number. |
131 |
Invalid seller_gender. |
150 |
seller_email is already used by another of your sellers. |
160 |
An item in seller_additional_details has no type, or one of its files isn't an individual file type. |
165 |
Invalid bank branch or account number. |
304 |
market_fee is outside 0–60. |
912 |
Unknown seller_address_country. |
998 |
HTTP 429: over the rate limit, or a call for the same seller_email is still running. |
The full list is on Errors.
Parameters
This endpoint takes no path, query or header parameters.
Request body
Content type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
payme_client_key |
string | yes | Your partner key. Partners only. |
seller_id |
string | no | Your own ID for the seller. Must be unique among your sellers (error 108). |
seller_first_name |
string | yes | First name of the seller's owner (the seller's primary individual). |
seller_last_name |
string | yes | Last name of the seller's owner. |
seller_social_id |
string | yes | National ID number of the seller's owner. An invalid number returns error 101. In the sandbox, 9999999999 is replaced with a random valid ID. |
seller_birthdate |
string | yes | Seller's personal birth date. Required by default; PayMe can change this per partner. Format dd/mm/yyyy with leading zeros only: 06/05/1989 is accepted, 6/5/1989 and 06-05-1989 are rejected. The person must be at least 16. Responses return yyyy-mm-dd. |
seller_social_id_issued |
string | yes | Seller's personal social ID issuing day. Required by default; PayMe can change this per partner. Format dd/mm/yyyy with leading zeros only. Responses return yyyy-mm-dd. |
seller_gender |
integer | yes | 0 – male, 1 – female, 2 – other. Another value returns error 131. |
seller_email |
string | yes | The seller's email address. Always required. It must be unique among your sellers (error 150), and an invalid address returns error 13. In the sandbox, random@paymeservice.com is replaced with a unique address. |
seller_phone |
string | yes | Seller phone number, supplied as a string. Mobile and landline formats are supported; international format with country code is recommended. Local numbers are interpreted using the seller's country, Israel by default. Phone validation or normalization failures return error 25. |
seller_contact_email |
string | no | Seller's contact email, shown to buyers. If not sent, it is copied from seller_email. |
seller_contact_phone |
string | no | Phone number shown to buyers. If you don't send it, it is copied from seller_phone. |
seller_bank_code |
integer | yes | Bank code. See Banks in Israel. An unknown code returns error 106. |
seller_bank_branch |
integer | yes | Bank branch number, up to 3 digits. An invalid branch returns error 165. |
seller_bank_account_number |
string | yes | Bank account number, digits only. An invalid number returns error 165. |
seller_description |
string | no | Seller’s description, including offered product line and services. Limited to 255 characters (error 5). |
seller_site_url |
string | yes | The seller's website URL. |
seller_person_business_type |
integer | yes | Business field code (the seller's line of business). See Business field codes, or get the live list from List business fields. An unknown or inactive code returns error 110. |
seller_inc |
integer | yes | Incorporation type, see Seller incorporation types. Required by default; PayMe can change this per partner. The type must belong to the seller's country (seller_address_country, default Israel), otherwise error 114. If you send seller_inc without seller_person_business_type, the business field defaults to 205. |
seller_inc_code |
string | no | Seller's business ID (ח.פ, ע.מ). May be required for your account (PayMe configures this per partner). When sent, it must be a number, 0 or above, otherwise the request fails with error 121. For Israeli sellers, Individual, Sole Proprietorship and Exempt Sole Proprietorship must use the owner's national ID; other types must not equal the national ID and must start with that type's 2-digit company-registry prefix. Otherwise the request fails with error 114. |
seller_registration_date |
string | no | Seller's business registration date. May be required for your account (PayMe configures this per partner). Format dd/mm/yyyy with leading zeros only: 01/02/2020 is accepted, 1/2/2020 and 01-02-2020 are rejected. Responses return yyyy-mm-dd. |
seller_retail_type |
integer | no | 1 – card not present (online), 2 – card present, 4 – MOTO (phone or mail order). Another value returns error 119. |
seller_merchant_name |
string | no | The business's name. Invalid characters return error 120. May be required for your account (PayMe configures this per partner). |
seller_merchant_name_en |
string | no | The business's name in English. Latin characters only (error 57). |
seller_dba |
string | no | The seller's legal (registered) name in Hebrew. |
seller_dba_en |
string | no | The seller's legal (registered) name in English. Latin characters only (error 57). |
seller_address_city |
string | yes | Business address: city. |
seller_address_street |
string | yes | Business address: street. |
seller_address_street_number |
string | yes | Business address: street number. |
seller_address_country |
string | no | Business address: country, as an ISO 3166-1 alpha-2 code such as IL. Default Israel. An unknown code returns error 912. |
seller_first_name_en |
string | no | The seller's first name in English. |
seller_last_name_en |
string | no | The seller's last name in English. |
seller_address_state |
string | no | State or region of the business address, for sellers outside Israel. |
seller_address_zip |
string | no | Postal code of the business address. |
seller_file_social_id |
string | no | Public URL of the owner's ID card (file type 1). PayMe downloads it in the background. To upload other documents, use Upload seller files. |
seller_file_cheque |
string | no | Public URL of a bank account confirmation or a cancelled cheque (file type 2). PayMe downloads it in the background. |
seller_file_corporate |
string | no | Public URL of the incorporation certificate (file type 3). PayMe downloads it in the background. |
market_fee |
number | no | The seller's default platform fee: the percent of the sale price collected for you, from 0 to 60 (for example 2.5). It includes VAT and is added on top of PayMe's fees. Default 0. Out of range returns error 304. A sale can override it with its own market_fee. It can't be changed later with Update a seller; see Platform fees. |
seller_plan |
string | no | A predefined set of settings for the seller. If required, this value will be provided by your Account Manager. Required unless your account has a default plan. |
seller_additional_details |
array | no | More people in the business, such as owners, signatories and directors. One object per person. |
seller_additional_details[].first_name |
string | no | First name. |
seller_additional_details[].last_name |
string | no | Last name. |
seller_additional_details[].national_id |
string | no | National ID number. |
seller_additional_details[].social_id_issued |
string | no | ID issue date, dd/mm/yyyy. |
seller_additional_details[].date_of_birth |
string | no | Date of birth, dd/mm/yyyy. |
seller_additional_details[].email |
string | no | Email address. |
seller_additional_details[].phone |
string | no | Phone number. |
seller_additional_details[].type |
array | yes | The person's roles, as an array of individual role codes, for example [1, 2] for an owner who is also a signatory. Missing returns error 160. |
seller_additional_details[].business_title |
string | no | Job title in the business. |
seller_additional_details[].ownership_percent |
number | no | Ownership share, percent. |
seller_additional_details[].address_country |
string | no | Address: country. |
seller_additional_details[].address_state |
string | no | Address: state or region. |
seller_additional_details[].address_city |
string | no | Address: city. |
seller_additional_details[].address_street |
string | no | Address: street. |
seller_additional_details[].address_building_number |
string | no | Address: building number. |
seller_additional_details[].address_zip |
string | no | Address: postal code. |
seller_additional_details[].files |
array | no | The person's documents. Only individual file types 90–97 are accepted (see File types); another type returns error 160. |
seller_additional_details[].files[].type |
integer | yes | File type code, 90–97. See File types. |
seller_additional_details[].files[].url |
string | no | Public URL of the file. Send url or base64. |
seller_additional_details[].files[].base64 |
string | no | The file content, base64-encoded. Send url or base64. |
seller_additional_details[].files[].name |
string | no | File name with extension, for example id-front.jpg. |
seller_additional_details[].files[].mime_type |
string | no | MIME type of the file, for example image/jpeg or application/pdf. |
language |
string | no | Language of error messages: he (default) or en. |
Request example
{
"payme_client_key": "XXXXXXXX",
"seller_id": "store-1001",
"seller_first_name": "Dana",
"seller_last_name": "Levi",
"seller_social_id": "9999999999",
"seller_birthdate": "06/05/1989",
"seller_social_id_issued": "01/02/2015",
"seller_gender": 1,
"seller_email": "random@paymeservice.com",
"seller_phone": "+972501234567",
"seller_bank_code": 54,
"seller_bank_branch": 123,
"seller_bank_account_number": "123456",
"seller_description": "Handmade ceramics",
"seller_site_url": "https://www.example.com",
"seller_person_business_type": 205,
"seller_inc": 1,
"seller_merchant_name": "Dana Ceramics",
"seller_address_city": "Tel Aviv",
"seller_address_street": "Herzl",
"seller_address_street_number": "10",
"seller_address_country": "IL",
"market_fee": 2.5,
"language": "en"
}
Code samples
curl
curl -X POST 'https://sandbox.payme.io/api/create-seller' \
-H 'Content-Type: application/json' \
--data-raw '{
"payme_client_key": "XXXXXXXX",
"seller_id": "store-1001",
"seller_first_name": "Dana",
"seller_last_name": "Levi",
"seller_social_id": "9999999999",
"seller_birthdate": "06/05/1989",
"seller_social_id_issued": "01/02/2015",
"seller_gender": 1,
"seller_email": "random@paymeservice.com",
"seller_phone": "+972501234567",
"seller_bank_code": 54,
"seller_bank_branch": 123,
"seller_bank_account_number": "123456",
"seller_description": "Handmade ceramics",
"seller_site_url": "https://www.example.com",
"seller_person_business_type": 205,
"seller_inc": 1,
"seller_merchant_name": "Dana Ceramics",
"seller_address_city": "Tel Aviv",
"seller_address_street": "Herzl",
"seller_address_street_number": "10",
"seller_address_country": "IL",
"market_fee": 2.5,
"language": "en"
}'
Node.js
const response = await fetch("https://sandbox.payme.io/api/create-seller", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
"payme_client_key": "XXXXXXXX",
"seller_id": "store-1001",
"seller_first_name": "Dana",
"seller_last_name": "Levi",
"seller_social_id": "9999999999",
"seller_birthdate": "06/05/1989",
"seller_social_id_issued": "01/02/2015",
"seller_gender": 1,
"seller_email": "random@paymeservice.com",
"seller_phone": "+972501234567",
"seller_bank_code": 54,
"seller_bank_branch": 123,
"seller_bank_account_number": "123456",
"seller_description": "Handmade ceramics",
"seller_site_url": "https://www.example.com",
"seller_person_business_type": 205,
"seller_inc": 1,
"seller_merchant_name": "Dana Ceramics",
"seller_address_city": "Tel Aviv",
"seller_address_street": "Herzl",
"seller_address_street_number": "10",
"seller_address_country": "IL",
"market_fee": 2.5,
"language": "en"
}),
});
console.log(await response.text());
Python
import requests
response = requests.post(
"https://sandbox.payme.io/api/create-seller",
json={
"payme_client_key": "XXXXXXXX",
"seller_id": "store-1001",
"seller_first_name": "Dana",
"seller_last_name": "Levi",
"seller_social_id": "9999999999",
"seller_birthdate": "06/05/1989",
"seller_social_id_issued": "01/02/2015",
"seller_gender": 1,
"seller_email": "random@paymeservice.com",
"seller_phone": "+972501234567",
"seller_bank_code": 54,
"seller_bank_branch": 123,
"seller_bank_account_number": "123456",
"seller_description": "Handmade ceramics",
"seller_site_url": "https://www.example.com",
"seller_person_business_type": 205,
"seller_inc": 1,
"seller_merchant_name": "Dana Ceramics",
"seller_address_city": "Tel Aviv",
"seller_address_street": "Herzl",
"seller_address_street_number": "10",
"seller_address_country": "IL",
"market_fee": 2.5,
"language": "en",
},
)
print(response.text)
PHP
<?php
$body = <<<'BODY'
{
"payme_client_key": "XXXXXXXX",
"seller_id": "store-1001",
"seller_first_name": "Dana",
"seller_last_name": "Levi",
"seller_social_id": "9999999999",
"seller_birthdate": "06/05/1989",
"seller_social_id_issued": "01/02/2015",
"seller_gender": 1,
"seller_email": "random@paymeservice.com",
"seller_phone": "+972501234567",
"seller_bank_code": 54,
"seller_bank_branch": 123,
"seller_bank_account_number": "123456",
"seller_description": "Handmade ceramics",
"seller_site_url": "https://www.example.com",
"seller_person_business_type": 205,
"seller_inc": 1,
"seller_merchant_name": "Dana Ceramics",
"seller_address_city": "Tel Aviv",
"seller_address_street": "Herzl",
"seller_address_street_number": "10",
"seller_address_country": "IL",
"market_fee": 2.5,
"language": "en"
}
BODY;
$ch = curl_init('https://sandbox.payme.io/api/create-seller');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => $body,
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Responses
200 — OK (success)
| Field | Type | Description |
|---|---|---|
status_code |
integer | 0 on success. |
session |
string | PayMe session ID. |
seller_payme_id |
string | The new seller's MPL. Use it on every call for this seller and keep it on your server. |
seller_payme_secret |
string | Not a credential: a random value that PayMe does not store or check. Ignore it (see Authentication). |
seller_public_key |
object | The seller's public key, for browser code such as Hosted Fields. |
seller_public_key.uuid |
string | The public key. |
seller_public_key.description |
string | Name of the key. |
seller_public_key.is_active |
boolean | true when the key is active. |
seller_id |
string | Your own ID for the seller, as you sent it. |
seller_dashboard_signup_link |
string | Link where the seller sets a password and finishes onboarding. Send it to the seller. Its host depends on your partner account and may differ from the API host, so use it as returned and don't build it yourself. |
{
"status_code": 0,
"session": "a1B2c3D4",
"seller_payme_id": "MPLDEMO-MPLDEMO-MPLDEMO-1234567",
"seller_payme_secret": "Qw3rTy7uI9oP1aS5dF8gH2jK4lZ6xC",
"seller_public_key": {
"uuid": "12345678-1234-4abc-9def-123456789012",
"description": "PayMe-Public-Key",
"is_active": true
},
"seller_id": "store-1001",
"seller_dashboard_signup_link": "https://<signup-host>/<link-from-payme>"
}
500 — Error, for example error 150: the email address is already used by another of your sellers (error)
| Field | Type | Description |
|---|---|---|
status_code |
integer | 1 on failure. |
status_error_code |
integer | PayMe error code. See Errors. |
status_error_details |
string | Error message, in the request's language. |
status_additional_info |
string | Extra detail, such as the name of the missing or invalid field. Can be null. |
session |
string | PayMe session ID. Quote it when you contact support. |
{
"status_code": 1,
"status_error_details": "Email is already in use",
"status_additional_info": null,
"status_error_code": 150,
"session": "a1B2c3D4"
}
429 — Too many requests (error 998) (error)
| Field | Type | Description |
|---|---|---|
status_code |
integer | 1 on failure. |
status_error_code |
integer | PayMe error code. See Errors. |
status_error_details |
string | Error message, in the request's language. |
status_additional_info |
string | Extra detail, such as the name of the missing or invalid field. Can be null. |
session |
string | PayMe session ID. Quote it when you contact support. |
{
"status_code": 1,
"status_error_details": "Operation is not permitted",
"status_additional_info": "Too Many Attempts.",
"status_error_code": 998,
"session": "a1B2c3D4"
}