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

# Create Collection

> Create collection

Create a collection account for receiving payments. Collections support existing `NGN` virtual account flows and `USD` collection accounts.

## NGN collection

Use `NGN` collections for Naira virtual accounts. `ONE_TIME` collections require an `amount`. `DEFAULT` permanent collections require a `customer_id`.

```bash theme={null}
curl -X POST https://api.swervpay.co/api/v1/collections \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "cus_123456789",
    "currency": "NGN",
    "merchant_name": "Swervpay",
    "amount": 10000,
    "type": "ONE_TIME"
  }'
```

## USD collection account

Use `USD` collections to issue a permanent USD collection account for an approved customer. USD collections must use `type` set to `DEFAULT` and must include `additional_information`.

```bash theme={null}
curl -X POST https://api.swervpay.co/api/v1/collections \
  -H "Authorization: Bearer <TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "cus_123456789",
    "currency": "USD",
    "merchant_name": "Ada Okafor",
    "amount": 0,
    "type": "DEFAULT",
    "additional_information": {
      "account_type": "INDIVIDUAL",
      "nin": "12345678901",
      "tax_number": "12345678901",
      "date_of_birth": "1994-04-12",
      "employment_status": "EMPLOYED",
      "account_designation": "PERSONAL",
      "income_band": "UNDER_10000",
      "source_of_income": "SALARY",
      "address": {
        "street": "12 Admiralty Way",
        "city": "Lagos",
        "state": "Lagos",
        "country": "Nigeria",
        "zip_code": "100001"
      },
      "document": {
        "type": "NIN",
        "number": "12345678901",
        "issue_date": "2020-01-01",
        "expiry_date": "2030-01-01",
        "urls": ["https://example.com/document-front.jpg"]
      },
      "utility_bill": "https://example.com/utility-bill.pdf",
      "bank_statement": "https://example.com/bank-statement.pdf"
    }
  }'
```

<Note>
  For USD collections, `type` must be `DEFAULT`, `customer_id` is required, and `additional_information` must include the customer's identity, address, source-of-funds, document, utility bill, and bank statement information.
</Note>

<Note>
  USD account issuance may complete asynchronously. Use the `collection.created` webhook to receive final bank details, or `collection.created.failed` to receive rejection reasons.
</Note>


## OpenAPI

````yaml POST /collections
openapi: 3.0.0
info:
  title: Swervpay Developer API Specification
  version: 0.0.0
servers:
  - url: https://api.swervpay.co/api/v1
    description: Production API
  - url: https://sandbox.swervpay.co/api/v1
    description: Sandbox API
security:
  - bearerAuth: []
paths:
  /collections:
    post:
      tags:
        - collection
      description: Create collection
      operationId: createCollection
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TypesCreateCollectionInput'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TypesBusinessWallet'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsererrorError'
components:
  schemas:
    TypesCreateCollectionInput:
      type: object
      properties:
        additional_information:
          $ref: '#/components/schemas/TypesAdditionalInformation'
        amount:
          type: number
        currency:
          type: string
        customer_id:
          type: string
        merchant_name:
          type: string
        reference:
          type: string
        type:
          type: string
    TypesBusinessWallet:
      type: object
      properties:
        account_name:
          type: string
        account_number:
          type: string
        account_type:
          type: string
        address:
          type: string
        balance:
          type: number
        bank_address:
          type: string
        bank_code:
          type: string
        bank_name:
          type: string
        created_at:
          type: string
          format: date-time
        id:
          type: string
        pending_balance:
          type: number
        reference:
          type: string
        routing_number:
          type: string
        status:
          type: string
        total_received:
          type: number
        updated_at:
          type: string
          format: date-time
    UsererrorError:
      type: object
      properties:
        message:
          type: string
        values:
          type: object
          additionalProperties: {}
    TypesAdditionalInformation:
      type: object
      properties:
        account_designation:
          type: string
        account_type:
          type: string
        address:
          $ref: '#/components/schemas/TypesAddress'
        bank_statement:
          type: string
        date_of_birth:
          type: string
        document:
          $ref: '#/components/schemas/TypesDocument'
        employment_status:
          type: string
        income_band:
          type: string
        nin:
          type: string
        source_of_income:
          type: string
        tax_number:
          type: string
        utility_bill:
          type: string
    TypesAddress:
      type: object
      properties:
        city:
          type: string
        country:
          type: string
        state:
          type: string
        street:
          type: string
        zip_code:
          type: string
    TypesDocument:
      type: object
      properties:
        expiry_date:
          type: string
        issue_date:
          type: string
        number:
          type: string
        type:
          type: string
        urls:
          type: array
          items:
            type: string
          nullable: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````