LogoLogo
GitHubFeedback Form
EN
EN
  • GETTING STARTED
    • Welcome
    • Preliminaries
      • Sandbox
      • Authentication
        • HMACSHA256 Auth
      • Postman Collections
      • Live vs Sandbox
      • Idempotency
      • Limiters
  • Payment Methods
    • PayWithiyzico (PWI)
      • PWI Implementation
        • PWI-Initialize
        • PWI-Retrieve
        • PWI Sample Imp.
    • Direct Charge
      • Non-3DS
        • NON-3DS Implementation
          • Create Payment
          • Retrieve
      • 3DS
        • 3DS Implementation
          • Init 3DS
          • Auth 3DS
      • Checkout Form (CF)
        • CF Implementation
          • CF-Initialize
          • CF-Retrieve
          • CF Sample Imp.
    • PreAuth & Capture
      • Non-3DS
        • Non-3DS Implementation
          • Create PreAuth Payment
          • Create PostAuth Payment
  • Products
    • Online Payment
    • Marketplace
      • Marketplace Implementation
        • Submerchant
          • Submerchant Update
          • Retrieve Submerchant
          • Submerchant Price / Item Update
        • Online Payment
        • Approval
    • Subscription
      • Subscription Implementation
        • Subscription Product
        • Payment Plan
        • Subscription Transactions
        • Subscriber Transactions
    • Bank Transfer
      • Bank Transfer Implementation
        • Bank Transfer Init
        • Bank Transfer Retrieve
      • Bank Transfer FAQ
    • iyzilink
      • iyzilink API
    • Shopping Credit
      • Shopping Credit Implementation
        • Initialize Shopping Credit
        • Retrieve Shopping Credit
        • Shopping Credit Sample Imp.
  • Advanced
    • Card Storage
    • Reporting Service
    • Refund & Cancel
    • Webhook
    • SFTP
    • Settlement Files
    • Fraud Notifications
    • Installment & BIN Service
    • Refund to Balance
    • Retrieve Payment
    • Response Signature Validation
  • Platforms
    • Woocommerce
    • Opencart
    • Prestashop
    • Magento
    • IdeaSoft
    • Ticimax
    • T-Soft
    • Shopify
    • WIX
  • Add-ons
    • Error Codes
      • Bank Error Codes
    • Test Cards
    • Integration Checklist
    • iyzico Logo Pack
Powered by GitBook
LogoLogo

Company

  • About
  • Career
  • Social
  • Youtube

Community

  • Github
  • Medium

Integration

  • Brand Guide
  • Solution Partners
  • Open Source

Contact

  • Contact Us
  • Support Center
On this page
  • Submerchant Services
  • Submerchant Creation
  • Individual Submerchant Request
  • Sole Proprietorship Submerchant Request
  • Limited/Incorporated Company Submerchant Request
  • Submerchant Creation Response
  • Submerchant Creation Sample Codes
  1. Products
  2. Marketplace
  3. Marketplace Implementation

Submerchant

PreviousMarketplace ImplementationNextSubmerchant Update

Last updated 12 months ago

After the approval of the marketplace transaction, submerchants are required to have records at iyzico APIs to facilitate the money transfer. Since the merchant already has access to the submerchant details such like, email, address, name, taxoffice, it can be seamlessly transmitted to the iyzico Onboarding API for submerchant account creation and updates.

Submerchant Services

Submerchant Creation

Possible submerchants can be one of the following 3 types:

  1. Individual

  2. Sole Proprietorship

  3. Limited/Incorporated Company.

The parameters sent during the sub-merchant registration process may vary depending on the specific transaction type. Upon the completion of a sub-merchant registration, the response will include a unique subMerchantKey assigned to that particular seller. It is essential to securely store this value within your system, as you will need to provide the subMerchantKey when identifying the seller during the payment process.

When transmitting parameters to iyzico, it is crucial to ensure that all values are genuine and accurately reflect the required information. Please refrain from sending random, test, or non-authentic data.

Individual Submerchant Request

POST https://api.iyzipay.com/onboarding/submerchant

Request Body

Name
Type
Description

locale

String

Language (default: tr)

conversationId

String

If set, conversation ID to match request and response

subMerchantExternalId*

String

Merchant identification number on your system

subMerchantType*

String

The PERSONAL value must be sent for the individual type of submerchants .

address*

String

Address of submerchant

contactName*

String

Contact name of submerchant

contactSurname*

String

Surname of submerchant

email*

String

Email of submerchant

gsmNumber

String

GSM of submerchant

name

String

Name of submerchant

iban

String

IBAN of submerchant. Its expected that contactName and contactSurname matches with IBAN. Even if it left blank while creating the submerchant, it must be filled before approving the payment.

identityNumber

String

ID of submerchant

currency

String

Default is TL. Alternatives; USD, EUR, GBP, CHF and NOK

Sole Proprietorship Submerchant Request

POST https://api.iyzipay.com/onboarding/submerchant

Request Body

Name
Type
Description

locale

String

Language (default: tr)

conversationId

String

If set, conversation ID to match request and response

subMerchantExternalId*

String

Merchant identification number on your system

subMerchantType*

String

The PRIVATE_COMPANY value must be sent for the sole proprietorshop type of submerchants .

address*

String

Address of submerchant

contactName*

String

Contact name of submerchant

contactSurname*

String

Surname of submerchant

email*

String

Email of submerchant

gsmNumber

String

GSM of submerchant

name

String

Name of submerchant

iban

String

IBAN of submerchant. Its expected that contactName and contactSurname matches with IBAN. Even if it left blank while creating the submerchant, it must be filled before approving the payment.

identityNumber

String

ID of submerchant

currency

String

Default is TL. Alternatives; USD, EUR, GBP, CHF and NOK

taxOffice

String

Tax office of submerchant

legalCompanyTitle

String

Legal Company Title of submerchant

Limited/Incorporated Company Submerchant Request

POST https://api.iyzipay.com/onboarding/submerchant

Request Body

Name
Type
Description

locale

String

Language (default: tr)

conversationId

String

If set, conversation ID to match request and response

subMerchantExternalId*

String

Merchant identification number on your system

subMerchantType*

String

The LIMITED_OR_JOINT_STOCK_COMPANY value must be sent for the sole proprietorshop type of submerchants .

address*

String

Address of submerchant

contactName*

String

Contact name of submerchant

contactSurname*

String

Surname of submerchant

email*

String

Email of submerchant

gsmNumber

String

GSM of submerchant

name

String

Name of submerchant

iban

String

IBAN of submerchant. Its expected that contactName and contactSurname matches with IBAN. Even if it left blank while creating the submerchant, it must be filled before approving the payment.

identityNumber

String

ID of submerchant

currency

String

Default is TL. Alternatives; USD, EUR, GBP, CHF and NOK

legalCompanyTitle

String

Legal Company Title of submerchant

taxNumber*

String

Tax number of submerchant

taxOffice*

String

Tax office of submerchant

Submerchant Creation Response

Output Name
Type
Description

subMerchantKey

String

Key of submerchant

status

String

Service response result (success / failure)

errorCode

String

Error code if service response status is failure

errorMessage

String

Error message if service response status is failure

errorGroup

String

Error group if service response status is failure

locale

String

Language (default: tr)

systemTime

Integer

Response system timestamp value

conversationId

String

If set, conversation ID to match request and response

Submerchant Creation Sample Codes

Individual Submerchant Creation Request;

$request = new \Iyzipay\Request\CreateSubMerchantRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456789");
$request->setSubMerchantExternalId("S49222");
$request->setSubMerchantType(\Iyzipay\Model\SubMerchantType::PERSONAL);
$request->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
$request->setContactName("John");
$request->setContactSurname("Doe");
$request->setEmail("email@submerchantemail.com");
$request->setGsmNumber("+905350000000");
$request->setName("John's market");
$request->setIban("TR180006200119000006672315");
$request->setIdentityNumber("31300864726");
$request->setCurrency(\Iyzipay\Model\Currency::TL);

$subMerchant = \Iyzipay\Model\SubMerchant::create($request, Config::options());
CreateSubMerchantRequest request = new CreateSubMerchantRequest();
request.Locale = Locale.TR.ToString();
request.ConversationId = "123456789";
request.SubMerchantExternalId = "S49222";
request.SubMerchantType = SubMerchantType.PERSONAL.ToString();
request.Address = "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1";
request.ContactName = "John";
request.ContactSurname = "Doe";
request.Email = "email@submerchantemail.com";
request.GsmNumber = "+905350000000";
request.Name = "John's market";
request.Iban = "TR180006200119000006672315";
request.IdentityNumber = "31300864726";
request.Currency = Currency.TRY.ToString();

SubMerchant subMerchant = SubMerchant.Create(request, options);
CreateSubMerchantRequest request = new CreateSubMerchantRequest();
request.setLocale(Locale.TR.getValue());
request.setConversationId("123456789");
request.setSubMerchantExternalId("S49222");
request.setSubMerchantType(SubMerchantType.PERSONAL.name());
request.setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
request.setContactName("John");
request.setContactSurname("Doe");
request.setEmail("email@submerchantemail.com");
request.setGsmNumber("+905350000000");
request.setName("John's market");
request.setIban("TR180006200119000006672315");
request.setIdentityNumber("31300864726");
request.setCurrency(Currency.TRY.name());

SubMerchant subMerchant = SubMerchant.create(request, options);
iyzipay.subMerchant.create({
    locale: Iyzipay.LOCALE.TR,
    conversationId: '123456789',
    subMerchantExternalId: 'S49222',
    subMerchantType: Iyzipay.SUB_MERCHANT_TYPE.PERSONAL,
    address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    ContactName: 'John',
    ContactSurname: 'Doe',
    email: 'email@submerchantemail.com',
    gsmNumber: '+905350000000',
    name: 'John\'s market',
    iban: 'TR180006200119000006672315',
    identityNumber: '31300864726',
    currency: Iyzipay.CURRENCY.TRY
}, function (err, result) {
    console.log(err, result);
    done();
});
request = dict([('locale', 'tr')])
request['conversationId'] = '123456789'
request['subMerchantExternalId'] = 'S49222'
request['subMerchantType'] = 'PERSONAL'
request['address'] = 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1'
request['ContactName'] = 'John'
request['ContactSurname'] = 'Doe'
request['email'] = 'email@submerchantemail.com'
request['gsmNumber'] = '+905350000000'
request['name'] = 'John\'s market'
request['iban'] = 'TR180006200119000006672315'
request['identityNumber'] = '31300864726'
request['currency'] = 'TRY'

sub_merchant = iyzipay.SubMerchant()
sub_merchant_response = sub_merchant.create(request, options)
request = {
    locale: 'tr',
    conversationId: '123456789',
    subMerchantExternalId: 'S49222',
    subMerchantType: Iyzipay::Model::SubMerchantType::PERSONAL,
    address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    ContactName: 'John',
    ContactSurname: 'Doe',
    email: 'email@submerchantemail.com',
    gsmNumber: '+905350000000',
    name: 'John\'s market',
    iban: 'TR180006200119000006672315',
    identityNumber: '31300864726',
    currency: Iyzipay::Model::Currency::TRY
}
sub_merchant = Iyzipay::Model::SubMerchant.new.create(request, @options)
//Request
{
    "locale": "tr",
    "conversationId": "123456789",
    "name": "John's market",
    "email": "email@submerchantemail.com",
    "gsmNumber": "+905350000000",
    "address": "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
    "iban": "TR180006200119000006672315",
    "ContactName": "John",
    "ContactSurname": "Doe",
    "currency": "TRY",
    "subMerchantExternalId": "S49222",
    "identityNumber": "31300864726",
    "subMerchantType": "PERSONAL"
}

//Response
{
    "status": "success",
    "locale": "tr",
    "systemTime": 1470732341410,
    "conversationId": "123456789",
    "subMerchantKey": "PPFFZPedVQSvaOqZu5xpvpLEqmc="
}

Sole Proprietorship Submerchant Creation Request;

$request = new \Iyzipay\Request\CreateSubMerchantRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456789");
$request->setSubMerchantExternalId("S49222");
$request->setSubMerchantType(\Iyzipay\Model\SubMerchantType::PRIVATE_COMPANY);
$request->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
$request->setTaxOffice("Tax office");
$request->setLegalCompanyTitle("John Doe inc");
$request->setEmail("email@submerchantemail.com");
$request->setGsmNumber("+905350000000");
$request->setName("John's market");
$request->setIban("TR180006200119000006672315");
$request->setIdentityNumber("31300864726");
$request->setCurrency(\Iyzipay\Model\Currency::TL);

$subMerchant = \Iyzipay\Model\SubMerchant::create($request, Config::options());
CreateSubMerchantRequest request = new CreateSubMerchantRequest();
request.Locale = Locale.TR.ToString();
request.ConversationId = "123456789";
request.SubMerchantExternalId = "S49222";
request.SubMerchantType = SubMerchantType.PRIVATE_COMPANY.ToString();
request.Address = "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1";
request.TaxOffice = "Tax office";
request.LegalCompanyTitle = "John Doe inc";
request.Email = "email@submerchantemail.com";
request.GsmNumber = "+905350000000";
request.Name = "John's market";
request.Iban = "TR180006200119000006672315";
request.IdentityNumber = "31300864726";
request.Currency = Currency.TRY.ToString();

SubMerchant subMerchant = SubMerchant.Create(request, options);
CreateSubMerchantRequest request = new CreateSubMerchantRequest();
request.setLocale(Locale.TR.getValue());
request.setConversationId("123456789");
request.setSubMerchantExternalId("S49222");
request.setSubMerchantType(SubMerchantType.PRIVATE_COMPANY.name());
request.setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
request.setTaxOffice("Tax office");
request.setLegalCompanyTitle("John Doe inc");
request.setEmail("email@submerchantemail.com");
request.setGsmNumber("+905350000000");
request.setName("John's market");
request.setIban("TR180006200119000006672315");
request.setIdentityNumber("31300864726");
request.setCurrency(Currency.TRY.name());

SubMerchant subMerchant = SubMerchant.create(request, options);
iyzipay.subMerchant.create({
    locale: Iyzipay.LOCALE.TR,
    conversationId: '123456789',
    subMerchantExternalId: 'S49222',
    subMerchantType: Iyzipay.SUB_MERCHANT_TYPE.PRIVATE_COMPANY,
    address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    taxOffice: 'Tax office',
    legalCompanyTitle: 'John Doe inc',
    email: 'email@submerchantemail.com',
    gsmNumber: '+905350000000',
    name: 'John\'s market',
    iban: 'TR180006200119000006672315',
    identityNumber: '31300864726',
    currency: Iyzipay.CURRENCY.TRY
}, function (err, result) {
    console.log(err, result);
    done();
});
request = dict([('locale', 'tr')])
request['conversationId'] = '123456789'
request['subMerchantExternalId'] = 'S49222'
request['subMerchantType'] = 'PRIVATE_COMPANY'
request['address'] = 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1'
request['taxOffice'] = 'Tax Office'
request['legalCompanyTitle'] = 'John Doe inc'
request['email'] = 'email@submerchantemail.com'
request['gsmNumber'] = '+905350000000'
request['name'] = 'John\'s market'
request['iban'] = 'TR180006200119000006672315'
request['identityNumber'] = '31300864726'
request['currency'] = 'TRY'

sub_merchant = iyzipay.SubMerchant()
sub_merchant_response = sub_merchant.create(request, options)
request = {
    locale: 'tr',
    conversationId: '123456789',
    subMerchantExternalId: 'S49222',
    subMerchantType: Iyzipay::Model::SubMerchantType::PRIVATE_COMPANY,
    address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    taxOffice: 'Tax office',
    legalCompanyTitle: 'John Doe inc',
    email: 'email@submerchantemail.com',
    gsmNumber: '+905350000000',
    name: 'John\'s market',
    iban: 'TR180006200119000006672315',
    identityNumber: '31300864726',
    currency: Iyzipay::Model::Currency::TRY
}
sub_merchant = Iyzipay::Model::SubMerchant.new.create(request, @options)
//Request
{
    "locale": "tr",
    "conversationId": "123456789",
    "name": "John's market",
    "email": "email@submerchantemail.com",
    "gsmNumber": "+905350000000",
    "address": "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
    "iban": "TR180006200119000006672315",
    "taxOffice": "Tax office",
    "legalCompanyTitle": "John Doe inc",
    "currency": "TRY",
    "subMerchantExternalId": "S49222",
    "identityNumber": "31300864726",
    "subMerchantType": "PRIVATE_COMPANY"
}

//Response
{
    "status": "success",
    "locale": "tr",
    "systemTime": 1470732341410,
    "conversationId": "123456789",
    "subMerchantKey": "PPFFZPedVQSvaOqZu5xpvpLEqmc="
}

Limited/Incorporated Company Submerchant Creation Request;

$request = new \Iyzipay\Request\CreateSubMerchantRequest();
$request->setLocale(\Iyzipay\Model\Locale::TR);
$request->setConversationId("123456789");
$request->setSubMerchantExternalId("S49222");
$request->setSubMerchantType(\Iyzipay\Model\SubMerchantType::LIMITED_OR_JOINT_STOCK_COMPANY);
$request->setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
$request->setTaxOffice("Tax office");
$request->setTaxNumber("31300864726");
$request->setLegalCompanyTitle("John Doe inc");
$request->setEmail("email@submerchantemail.com");
$request->setGsmNumber("+905350000000");
$request->setName("John's market");
$request->setIban("TR180006200119000006672315");
$request->setCurrency(\Iyzipay\Model\Currency::TL);

$subMerchant = \Iyzipay\Model\SubMerchant::create($request, Config::options());
CreateSubMerchantRequest request = new CreateSubMerchantRequest();
request.Locale = Locale.TR.ToString();
request.ConversationId = "123456789";
request.SubMerchantExternalId = "S49222";
request.SubMerchantType = SubMerchantType.LIMITED_OR_JOINT_STOCK_COMPANY.ToString();
request.Address = "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1";
request.TaxOffice = "Tax office";
request.TaxNumber = "31300864726";
request.LegalCompanyTitle = "John Doe inc";
request.Email = "email@submerchantemail.com";
request.GsmNumber = "+905350000000";
request.Name = "John's market";
request.Iban = "TR180006200119000006672315";
request.Currency = Currency.TRY.ToString();

SubMerchant subMerchant = SubMerchant.Create(request, options);
CreateSubMerchantRequest request = new CreateSubMerchantRequest();
request.setLocale(Locale.TR.getValue());
request.setConversationId("123456789");
request.setSubMerchantExternalId("S49222");
request.setSubMerchantType(SubMerchantType.LIMITED_OR_JOINT_STOCK_COMPANY.name());
request.setAddress("Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1");
request.setTaxOffice("Tax office");
request.setTaxNumber("31300864726");
request.setLegalCompanyTitle("John Doe inc");
request.setEmail("email@submerchantemail.com");
request.setGsmNumber("+905350000000");
request.setName("John's market");
request.setIban("TR180006200119000006672315");
request.setCurrency(Currency.TRY.name());

SubMerchant subMerchant = SubMerchant.create(request, options);
iyzipay.subMerchant.create({
    locale: Iyzipay.LOCALE.TR,
    conversationId: '123456789',
    subMerchantExternalId: 'S49222',
    subMerchantType: Iyzipay.SUB_MERCHANT_TYPE.LIMITED_OR_JOINT_STOCK_COMPANY,
    address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    taxOffice: 'Tax office',
    taxNumber: '31300864726',
    legalCompanyTitle: 'John Doe inc',
    email: 'email@submerchantemail.com',
    gsmNumber: '+905350000000',
    name: 'John\'s market',
    iban: 'TR180006200119000006672315',
    currency: Iyzipay.CURRENCY.TRY
}, function (err, result) {
    console.log(err, result);
    done();
});
request = dict([('locale', 'tr')])
request['conversationId'] = '123456789'
request['subMerchantExternalId'] = 'S49222'
request['subMerchantType'] = 'LIMITED_OR_JOINT_STOCK_COMPANY'
request['address'] = 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1'
request['taxOffice'] = 'Tax Office'
request['taxNumber'] = '31300864726'
request['legalCompanyTitle'] = 'John Doe inc'
request['email'] = 'email@submerchantemail.com'
request['gsmNumber'] = '+905350000000'
request['name'] = 'John\'s market'
request['iban'] = 'TR180006200119000006672315'
request['currency'] = 'TRY'

sub_merchant = iyzipay.SubMerchant()
sub_merchant_response = sub_merchant.create(request, options)
request = {
    locale: 'tr',
    conversationId: '123456789',
    subMerchantExternalId: 'S49222',
    subMerchantType: Iyzipay::Model::SubMerchantType::LIMITED_OR_JOINT_STOCK_COMPANY,
    address: 'Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1',
    taxOffice: 'Tax office',
    taxNumber: '31300864726',
    legalCompanyTitle: 'John Doe inc',
    email: 'email@submerchantemail.com',
    gsmNumber: '+905350000000',
    name: 'John\'s market',
    iban: 'TR180006200119000006672315',
    currency: Iyzipay::Model::Currency::TRY
}
sub_merchant = Iyzipay::Model::SubMerchant.new.create(request, @options)
//Request
{
    "locale": "tr",
    "conversationId": "123456789",
    "name": "John's market",
    "email": "email@submerchantemail.com",
    "gsmNumber": "+905350000000",
    "address": "Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
    "iban": "TR180006200119000006672315",
    "taxOffice": "Tax office",
    "taxNumber": "31300864726",
    "legalCompanyTitle": "John Doe inc",
    "currency": "TRY",
    "subMerchantExternalId": "S49222",
    "subMerchantType": "LIMITED_OR_JOINT_STOCK_COMPANY"
}

//Response
{
    "status": "success",
    "locale": "tr",
    "systemTime": 1470732341410,
    "conversationId": "123456789",
    "subMerchantKey": "PPFFZPedVQSvaOqZu5xpvpLEqmc="
}
Submerchant Update
Submerchant Details
Submerchant Price / Item Update
Submerchant Creation