<!-- ZenPays documentation · https://docs.zenpayz.com/docs/rest-api/endpoints/vendors/create-vendor -->

# Create Vendor

Create a new vendor record for managing referral partnerships and commission payouts.

<EndpointHeader verb="POST" path="/merchant/api/v1/vendors" />

## Request

### Headers

<ParamTable
  label="Header"
  rows={[
    { name: "Authorization", required: true, desc: "`Bearer {api_key}`" },
    { name: "X-Signature", required: true, desc: "HMAC-SHA256 signature" },
    { name: "X-Timestamp", required: true, desc: "ISO 8601 timestamp" },
    { name: "X-Secret-Salt", required: true, desc: "Secret salt for HMAC validation" },
    { name: "Content-Type", required: true, desc: "`application/json`" },
  ]}
/>

### Body Parameters

<ParamTable
  rows={[
    { name: "name", type: "string", required: true, desc: "Vendor display name" },
    { name: "description", type: "string", desc: "Vendor description" },
    { name: "email", type: "string", required: true, desc: "Vendor email address (must be valid email)" },
    { name: "phone", type: "string", desc: "Vendor phone number" },
    { name: "website", type: "string", desc: "Vendor website URL" },
    { name: "status", type: "string", desc: "Initial status (`active`, `inactive`, `suspended`, `pending`)" },
    {
      name: "contactInfo",
      type: "object",
      required: true,
      desc: "Contact information object",
      nested: [
        {
          name: "contactInfo.primaryContact",
          type: "object",
          required: true,
          desc: "Primary contact details",
          nested: [
            { name: "contactInfo.primaryContact.firstName", type: "string", required: true, desc: "Contact first name" },
            { name: "contactInfo.primaryContact.lastName", type: "string", required: true, desc: "Contact last name" },
            { name: "contactInfo.primaryContact.email", type: "string", required: true, desc: "Contact email address" },
            { name: "contactInfo.primaryContact.phone", type: "string", required: true, desc: "Contact phone number" },
            { name: "contactInfo.primaryContact.designation", type: "string", required: true, desc: "Contact job title / designation" },
          ],
        },
        {
          name: "contactInfo.address",
          type: "object",
          required: true,
          desc: "Business address",
          nested: [
            { name: "contactInfo.address.street", type: "string", required: true, desc: "Street address" },
            { name: "contactInfo.address.city", type: "string", required: true, desc: "City" },
            { name: "contactInfo.address.state", type: "string", required: true, desc: "State or province" },
            { name: "contactInfo.address.postalCode", type: "string", required: true, desc: "Postal / ZIP code" },
            { name: "contactInfo.address.country", type: "string", required: true, desc: "Country" },
          ],
        },
      ],
    },
    {
      name: "businessInfo",
      type: "object",
      required: true,
      desc: "Business information",
      nested: [
        { name: "businessInfo.registrationNumber", type: "string", required: true, desc: "Business registration number" },
        { name: "businessInfo.taxId", type: "string", required: true, desc: "Tax identification number" },
        { name: "businessInfo.businessType", type: "string", required: true, desc: "Type of business" },
        { name: "businessInfo.incorporationDate", type: "string", required: true, desc: "Date of incorporation (ISO 8601)" },
        { name: "businessInfo.monthlyVolume", type: "number", required: true, desc: "Expected monthly transaction volume" },
      ],
    },
    { name: "commissionRate", type: "number", required: true, desc: "Commission rate (0-100)" },
    { name: "commissionType", type: "string", required: true, desc: "Commission model (`percentage`, `fixed`, `tiered`)" },
    { name: "commissionConfig", type: "object", desc: "Additional commission configuration (e.g., tier brackets)" },
    { name: "riskLevel", type: "string", desc: "Risk classification (`low`, `medium`, `high`, `critical`)" },
    { name: "payoutFrequency", type: "string", required: true, desc: "Payout schedule (`weekly`, `monthly`, `quarterly`)" },
    {
      name: "bankDetails",
      type: "object",
      required: true,
      desc: "Bank account for payouts",
      nested: [
        { name: "bankDetails.accountNumber", type: "string", required: true, desc: "Bank account number" },
        { name: "bankDetails.routingNumber", type: "string", desc: "Routing number (US)" },
        { name: "bankDetails.ifscCode", type: "string", desc: "IFSC code (India)" },
        { name: "bankDetails.iban", type: "string", desc: "International Bank Account Number" },
        { name: "bankDetails.bankName", type: "string", required: true, desc: "Name of the bank" },
        { name: "bankDetails.swiftCode", type: "string", desc: "SWIFT / BIC code" },
        { name: "bankDetails.beneficiaryName", type: "string", required: true, desc: "Name on the bank account" },
        { name: "bankDetails.accountType", type: "string", required: true, desc: "Account type (`savings`, `current`)" },
        { name: "bankDetails.payoutType", type: "string", desc: "Preferred payout type" },
      ],
    },
    { name: "environment", type: "string", desc: "Environment identifier" },
    { name: "metadata", type: "object", desc: "Custom key-value pairs" },
  ]}
/>

## Response

### Success (201 Created)

```json
{
  "success": true,
  "data": {
    "vendorId": "vnd_a1b2c3d4e5f6g7h8",
    "name": "Acme Referrals",
    "description": "Strategic referral partner for APAC region",
    "email": "partners@acmereferrals.com",
    "phone": "+14155551234",
    "website": "https://acmereferrals.com",
    "status": "active",
    "contactInfo": {
      "primaryContact": {
        "firstName": "Sarah",
        "lastName": "Chen",
        "email": "sarah.chen@acmereferrals.com",
        "phone": "+14155551235",
        "designation": "Partnerships Director"
      },
      "address": {
        "street": "100 Market Street",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94105",
        "country": "US"
      }
    },
    "businessInfo": {
      "registrationNumber": "REG-2024-78901",
      "taxId": "87-6543210",
      "businessType": "LLC",
      "incorporationDate": "2020-03-15",
      "monthlyVolume": 500000
    },
    "commissionRate": 12.5,
    "commissionType": "percentage",
    "commissionConfig": null,
    "riskLevel": "low",
    "payoutFrequency": "monthly",
    "bankDetails": {
      "accountNumber": "****6789",
      "routingNumber": "****4321",
      "bankName": "First National Bank",
      "swiftCode": "FNBKUS33",
      "beneficiaryName": "Acme Referrals LLC",
      "accountType": "current",
      "payoutType": "wire"
    },
    "environment": "production",
    "metadata": {},
    "createdAt": "2024-01-15T10:30:00.000Z",
    "updatedAt": "2024-01-15T10:30:00.000Z"
  },
  "message": "Vendor created successfully",
  "error": null,
  "meta": {
    "request_id": "req_xxxxx",
    "timestamp": "2024-01-15T10:30:00.000Z",
    "processing_time_ms": 145,
    "api_version": "v1",
    "endpoint": "POST /vendors",
    "user_type": "merchant"
  }
}
```

### Error Responses

<ErrorTable
  rows={[
    { code: "VALIDATION_ERROR", status: "400", message: "Invalid request parameters" },
    { code: "UNAUTHORIZED", status: "401", message: "Invalid API key" },
    { code: "DUPLICATE_VENDOR", status: "409", message: "Vendor with this email already exists" },
  ]}
/>

<CodeRail>

## Examples

<Tabs groupId="language">
  <TabItem value="curl" label="cURL" default>

```bash
curl -X POST https://api.zenpayz.com/merchant/api/v1/vendors \
  -H "Authorization: Bearer zp_test_xxxxx" \
  -H "X-Timestamp: 2024-01-15T10:30:00.000Z" \
  -H "X-Signature: a1b2c3d4e5f6..." \
  -H "X-Secret-Salt: your_secret_salt" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Referrals",
    "description": "Strategic referral partner for APAC region",
    "email": "partners@acmereferrals.com",
    "phone": "+14155551234",
    "website": "https://acmereferrals.com",
    "contactInfo": {
      "primaryContact": {
        "firstName": "Sarah",
        "lastName": "Chen",
        "email": "sarah.chen@acmereferrals.com",
        "phone": "+14155551235",
        "designation": "Partnerships Director"
      },
      "address": {
        "street": "100 Market Street",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94105",
        "country": "US"
      }
    },
    "businessInfo": {
      "registrationNumber": "REG-2024-78901",
      "taxId": "87-6543210",
      "businessType": "LLC",
      "incorporationDate": "2020-03-15",
      "monthlyVolume": 500000
    },
    "commissionRate": 12.5,
    "commissionType": "percentage",
    "riskLevel": "low",
    "payoutFrequency": "monthly",
    "bankDetails": {
      "accountNumber": "9876543210",
      "routingNumber": "021000021",
      "bankName": "First National Bank",
      "swiftCode": "FNBKUS33",
      "beneficiaryName": "Acme Referrals LLC",
      "accountType": "current",
      "payoutType": "wire"
    }
  }'
```

  </TabItem>
  <TabItem value="javascript" label="JavaScript">

```javascript
const response = await fetch('https://api.zenpayz.com/merchant/api/v1/vendors', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'X-Timestamp': timestamp,
    'X-Signature': signature,
    'X-Secret-Salt': secretSalt,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Acme Referrals',
    description: 'Strategic referral partner for APAC region',
    email: 'partners@acmereferrals.com',
    phone: '+14155551234',
    website: 'https://acmereferrals.com',
    contactInfo: {
      primaryContact: {
        firstName: 'Sarah',
        lastName: 'Chen',
        email: 'sarah.chen@acmereferrals.com',
        phone: '+14155551235',
        designation: 'Partnerships Director',
      },
      address: {
        street: '100 Market Street',
        city: 'San Francisco',
        state: 'CA',
        postalCode: '94105',
        country: 'US',
      },
    },
    businessInfo: {
      registrationNumber: 'REG-2024-78901',
      taxId: '87-6543210',
      businessType: 'LLC',
      incorporationDate: '2020-03-15',
      monthlyVolume: 500000,
    },
    commissionRate: 12.5,
    commissionType: 'percentage',
    riskLevel: 'low',
    payoutFrequency: 'monthly',
    bankDetails: {
      accountNumber: '9876543210',
      routingNumber: '021000021',
      bankName: 'First National Bank',
      swiftCode: 'FNBKUS33',
      beneficiaryName: 'Acme Referrals LLC',
      accountType: 'current',
      payoutType: 'wire',
    },
  }),
});

const result = await response.json();
console.log(result.data.vendorId); // vnd_a1b2c3d4e5f6g7h8
```

  </TabItem>
  <TabItem value="sdk" label="SDK">

```javascript
const vendor = await zenpays.vendors.create({
  name: 'Acme Referrals',
  description: 'Strategic referral partner for APAC region',
  email: 'partners@acmereferrals.com',
  phone: '+14155551234',
  website: 'https://acmereferrals.com',
  contactInfo: {
    primaryContact: {
      firstName: 'Sarah',
      lastName: 'Chen',
      email: 'sarah.chen@acmereferrals.com',
      phone: '+14155551235',
      designation: 'Partnerships Director',
    },
    address: {
      street: '100 Market Street',
      city: 'San Francisco',
      state: 'CA',
      postalCode: '94105',
      country: 'US',
    },
  },
  businessInfo: {
    registrationNumber: 'REG-2024-78901',
    taxId: '87-6543210',
    businessType: 'LLC',
    incorporationDate: '2020-03-15',
    monthlyVolume: 500000,
  },
  commissionRate: 12.5,
  commissionType: 'percentage',
  riskLevel: 'low',
  payoutFrequency: 'monthly',
  bankDetails: {
    accountNumber: '9876543210',
    routingNumber: '021000021',
    bankName: 'First National Bank',
    swiftCode: 'FNBKUS33',
    beneficiaryName: 'Acme Referrals LLC',
    accountType: 'current',
    payoutType: 'wire',
  },
});

console.log(vendor.vendorId); // vnd_a1b2c3d4e5f6g7h8
```

  </TabItem>
</Tabs>

</CodeRail>

## Related Endpoints

- [List Vendors](/docs/rest-api/endpoints/vendors/list-vendors)
- [Get Vendor](/docs/rest-api/endpoints/vendors/get-vendor)
- [Update Vendor](/docs/rest-api/endpoints/vendors/update-vendor)
- [Delete Vendor](/docs/rest-api/endpoints/vendors/delete-vendor)
