> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onsi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Upload Full Member List CSV V2

Upload a CSV file containing your entire target member list. This endpoint behaves identically to
[V1](/api-reference/jobs/csv), with one key difference: when bank detail columns are present but
empty for an existing member that has bank details on their profile, their bank details will be
**unset** (disabled). In V1, empty bank detail columns are ignored and existing bank details are
preserved.

The file should contain the following columns:

* `email`: The email address of the member.
* `first_name`: The first name of the member.
* `last_name`: The last name of the member.
* `phone`: (allowed empty) The phone number of the member.
* `tier`: The tier of the member.
* `worker_id` (optional, allowed empty): The worker ID of the member.
* Bank detail columns (optional, allowed empty). **In V2, leaving these empty will unset existing bank details.**
  * For **UK** partners:
    * `sort_code`: The sort code of the member's bank account.
    * `account_number`: The account number of the member's bank account.
    * `account_holder`: The name of the account holder.
  * For **EU** partners:
    * `iban`: The IBAN of the member's bank account.
    * `account_holder`: The name of the account holder.

<Tip>The API doesn't care about the casing of the columns, e.g. "Worker ID" is acceptable</Tip>

#### Bank Details Handling

| Scenario                                                           | V1 Behaviour                        | V2 Behaviour                        |
| ------------------------------------------------------------------ | ----------------------------------- | ----------------------------------- |
| Bank detail columns empty for existing member with bank details    | Existing bank details **preserved** | Existing bank details **removed**   |
| Bank detail columns empty for existing member with no bank details | Member remains with no bank details | Member remains with no bank details |
| Bank detail columns populated                                      | Bank details updated                | Bank details updated                |
| New member with bank details                                       | Bank details set                    | Bank details set                    |

#### Relevant Error Codes

When parsing the file uploaded we can return:

* [FileContent](/api-reference/error-handling#filecontent) if the file has validation issues.


## OpenAPI

````yaml PUT /v2/members/jobs/csv
openapi: 3.0.2
info:
  title: BMO Partner API
  version: v1
servers:
  - url: https://api.onsi.com
    description: Production
  - url: https://api.onsi.dev
    description: Sandbox
security:
  - apiKey: []
paths:
  /v2/members/jobs/csv:
    put:
      tags:
        - members
      operationId: createJobFromCsvV2
      parameters:
        - name: x-idempotency-key
          in: header
          description: Unique key to ensure idempotency of the request
          schema:
            type: string
      responses:
        '202':
          description: '202'
          content:
            application/json:
              schema:
                type: object
                properties:
                  jobId:
                    example: maj_cltd2zp7100096tmbamb9c46o
                    type: string
                required:
                  - jobId
                additionalProperties: false
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````