---
title: "Upload customers via CSV file"
method: POST
path: "/customers/bulk/csv"
tags: ["Customers"]
---

# Upload customers via CSV file

`POST /customers/bulk/csv`

Upload a CSV file containing customer information for bulk creation. The CSV file should follow
a specific format with required and optional columns based on customer type.

### CSV Format
The CSV file should have the following columns:

Required columns for all customers:
- umaAddress: The customer's UMA address (e.g., $john.doe@uma.domain.com)
- platformCustomerId: Your platform's unique identifier for the customer
- customerType: Either "INDIVIDUAL" or "BUSINESS"

Required columns for individual customers:
- fullName: Individual's full name
- birthDate: Date of birth in YYYY-MM-DD format
- addressLine1: Street address line 1
- city: City
- state: State/Province/Region
- postalCode: Postal/ZIP code
- country: Country code (ISO 3166-1 alpha-2)

Required columns for business customers:
- businessLegalName: Legal name of the business
- addressLine1: Street address line 1
- city: City
- state: State/Province/Region
- postalCode: Postal/ZIP code
- country: Country code (ISO 3166-1 alpha-2)

Optional columns for all customers:
- addressLine2: Street address line 2
- platformAccountId: Your platform's identifier for the bank account
- description: Optional description for the customer

Optional columns for individual customers:
- email: Customer's email address

Optional columns for business customers:
- businessRegistrationNumber: Business registration number
- businessTaxId: Tax identification number

### Example CSV
```csv
umaAddress,platformCustomerId,customerType,fullName,birthDate,addressLine1,city,state,postalCode,country,platformAccountId,businessLegalName
john.doe@uma.domain.com,customer123,INDIVIDUAL,John Doe,1990-01-15,123 Main St,San Francisco,CA,94105,US
acme@uma.domain.com,biz456,BUSINESS,,,400 Commerce Way,Austin,TX,78701,US
```

The upload process is asynchronous and will return a job ID that can be used to track progress.
You can monitor the job status using the `/customers/bulk/jobs/{jobId}` endpoint.

## Response `202`

CSV upload accepted for processing

- BulkCustomerImportJobAccepted
  - `jobId` string, required — Unique identifier for the bulk import job
  - `status` 'PENDING' | 'PROCESSING', required

## Other responses

- `401` — Unauthorized
- `500` — Internal service error

---

[API](https://skmtc.net/stainless-api/apis/grid-api.md) · [All operations](https://skmtc.net/stainless-api/apis/grid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/stainless-api/grid-api/revisions/151f2d9bad9c/schema)
