---
title: "Create Supplier Branch"
method: POST
path: "/supplier_provider/{supplier_provider_uid}/branches"
---

# Create Supplier Branch

`POST /supplier_provider/{supplier_provider_uid}/branches`

## Request

- Base URL: `https://dc-region.zuperpro.com/api`
- URL: `https://dc-region.zuperpro.com/api/supplier_provider/{supplier_provider_uid}/branches`
- Auth: API key in header `x-api-key`

Saves one or more supplier branches as Zuper vendors linked to this provider so you can order from them; send the branches picked from Get Live Supplier Branches. A branch code already saved for this provider is updated in place (name, email, address, job account, favorite flag) instead of duplicated, and branches that can't be created, for example because a vendor with the same name exists, are listed in `failed_branches` while the request still returns 200. SRS and QXO check each `branch_code` and `preferred_job_account_number` with the supplier and return 400 on a mismatch, whereas ABC Supply does not check the branch code but requires both `preferred_job_account_number` and `preferred_job_account_name` (a Ship-To account). With `update_catalogs_with_linked_products` (default `true`), newly created branches get the catalog of the provider's existing saved branches copied to them, with fresh supplier pricing, in the background. Admin only: the API key must belong to an admin user; other roles receive 405 Access Denied. The provider must exist and be `CONNECTED`; otherwise the request fails with 404 (unknown provider) or 403 (not connected or reconnect required).

## Path parameters

- `supplier_provider_uid` string, required

## Request body

- object
  - `branches` object[], required: Required. Branches to save.
    - `branch_code` string, required: Required. The supplier's branch code from Get Live Supplier Branches. SRS and QXO reject codes your supplier account can't order from; ABC Supply codes are not checked.
    - `branch_name` string, required: Required. Saved as the vendor name. A new branch whose name matches an existing vendor (case-insensitive) is not created and is listed in `failed_branches`.
    - `branch_display_name` string: Saved as the vendor display name. Defaults to `branch_name`.
    - `branch_contact_name` string: Saved as the vendor contact name. Defaults to `branch_name`.
    - `branch_description` string: Saved as the vendor description.
    - `brand_name` string: Accepted but not stored.
    - `branch_email` string, nullable: Saved as the vendor email.
    - `branch_address` object: Saved as both the vendor address and billing address.
      - `street` string
      - `city` string
      - `state` string
      - `zip_code` string
      - `country` string
      - `email` string, nullable
      - `phone_number` string: Also used as the work phone when `branch_contact_no.work` is not sent.
      - `geo_cordinates` number[]: `[latitude, longitude]`.
    - `branch_contact_no` object: New branches only; not changed when an existing branch is re-sent.
      - `work` string
      - `mobile` string
    - `accounts` object, nullable: New branches only.
      - `payment_term` string, required: Required when `accounts` is sent. UID of an existing payment term in your company.
    - `branch_delivery_method` 'JOB_ADDRESS' | 'WAREHOUSE' | 'PICKUP': Default delivery method for orders from this branch. New branches only. No default is applied when omitted, so send it explicitly.
    - `preferred_job_account_number` string: Job account used when ordering from this branch (a number is also accepted). SRS and QXO: must be one of the branch's job accounts from Get Branch Job Accounts; defaults to the first one when omitted. ABC Supply: required, the Ship-To account number.
    - `preferred_job_account_name` string: ABC Supply: required, the Ship-To account name. SRS and QXO: filled in from the default job account when `preferred_job_account_number` is omitted.
    - `favorite_supplier_vendor` boolean: Make this the favorite (default) branch for this provider. At most one branch per request; setting it clears the flag on the provider's other branches. Re-sending an already saved branch without it clears its flag.
  - `update_catalogs_with_linked_products` boolean: Copy the catalog of the provider's existing saved branches to the newly created ones. Runs in the background and only when at least one branch is created and the provider already has other saved branches.

## Response `200`

200

- object
  - `type` 'success'
  - `title` string
  - `message` string
  - `data` object
    - `created_count` integer
    - `created_branches` object[]: Branches saved as new vendors.
      - `branch_code` string
      - `vendor_uid` string: Use as `branch_uid`.
    - `updated_count` integer
    - `updated_branches` object[]: Branches that were already saved and were updated.
      - `branch_code` string
      - `vendor_uid` string
    - `failed_count` integer
    - `failed_branches` object[]: Branches that could not be created.
      - `branch_code` string, nullable
      - `error` string

## Other responses

- `400`: 400
- `403`: 403
- `404`: 404
- `405`: 405

## Changes

- **2026-11-03** `3c21bc232e16`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zuper/apis/zuper-pro-api/changes/supplier_provider/:supplier_provider_uid/branches/post.md)

---

[API](https://skmtc.dev/zuper/apis/zuper-pro-api.md) - [All operations](https://skmtc.dev/zuper/apis/zuper-pro-api/llms.txt) - [OpenAPI document](https://skmtc.dev/zuper/apis/zuper-pro-api/revisions/3c21bc232e16?raw)
