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

# Create Customer

> Creates a new customer in the Soap system

Creates a new customer with the provided information. The customer can then be used for creating checkouts and other operations.

<RequestExample>
  ```json Curl theme={null}
  curl -X POST "https://api-sandbox.paywithsoap.com/api/v1/customers" \
    -H "Authorization:  YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "email": "customer@example.com",
      "first_name": "John",
      "last_name": "Doe",
      "phone_number": "15551234567",
      "date_of_birth": "1990-01-01",
      "internal_id": "3f1b8c4e-7c2e-4c2c-8d2f-179cf0efb36b"
    }'
  ```

  ```ruby Ruby theme={null}
  require 'net/http'
  require 'uri'
  require 'json'

  uri = URI.parse('https://api-sandbox.paywithsoap.com/api/v1/customers')
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Post.new(uri.path)
  request['Authorization'] = 'YOUR_API_KEY'
  request['Content-Type'] = 'application/json'
  request.body = {
    email: 'customer@example.com',
    first_name: 'John',
    last_name: 'Doe',
    phone_number: '15551234567',
    date_of_birth: '1990-01-01',
    internal_id: '3f1b8c4e-7c2e-4c2c-8d2f-179cf0efb36b'
  }.to_json

  response = http.request(request)
  puts response.body
  ```

  ```javascript JavaScript theme={null}
  const axios = require('axios');

  const createCustomer = async () => {
    try {
      const response = await axios.post('https://api-sandbox.paywithsoap.com/api/v1/customers', {
        email: 'customer@example.com',
        first_name: 'John',
        last_name: 'Doe',
        phone_number: '15551234567',
        date_of_birth: '1990-01-01',
        internal_id: '3f1b8c4e-7c2e-4c2c-8d2f-179cf0efb36b'
      }, {
        headers: {
          'Authorization': 'YOUR_API_KEY',
          'Content-Type': 'application/json'
        }
      });
      
      console.log(response.data);
    } catch (error) {
      console.error(error);
    }
  };

  createCustomer();
  ```

  ```python Python theme={null}
  import requests
  import json

  url = "https://api-sandbox.paywithsoap.com/api/v1/customers"

  headers = {
      "Authorization": "YOUR_API_KEY",
      "Content-Type": "application/json"
  }

  data = {
      "email": "customer@example.com",
      "first_name": "John",
      "last_name": "Doe",
      "phone_number": "15551234567",
      "date_of_birth": "1990-01-01",
      "internal_id": "3f1b8c4e-7c2e-4c2c-8d2f-179cf0efb36b"
  }

  response = requests.post(url, headers=headers, json=data)
  print(response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "id": "cus_A3GuXEbThpqk2t6UTxEuoceVJyUEAX7V",
    "internal_id": "cust_123",
    "email": "customer@example.com",
    "first_name": "John",
    "last_name": "Doe",
    "phone_number": "1234567890",
    "date_of_birth": "1990-01-01",
    "created_at": "2025-03-10T16:08:14.427Z"
  }
  ```
</ResponseExample>


## OpenAPI

````yaml POST /api/v1/customers
openapi: 3.1.0
info:
  title: Soap API
  description: >-
    API documentation for Soap - AI-native payments infrastructure for complex,
    compliance-heavy payment flows
  license:
    name: MIT
  version: 1.4.0
servers:
  - url: https://api-sandbox.paywithsoap.com
security:
  - bearerAuth: []
paths:
  /api/v1/customers:
    post:
      tags:
        - Customers
      summary: Creates a customer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  example: john@acme.com
                first_name:
                  type: string
                  example: John
                last_name:
                  type: string
                  example: Doe
                phone_number:
                  type: string
                  description: >-
                    Phone number of the customer in ISO 8601 format (10 digits,
                    no hyphens, no country code)
                  example: '8008001234'
                date_of_birth:
                  type: string
                  format: date
                  description: >-
                    Date of birth of the customer in ISO 8601 format
                    (YYYY-MM-DD)
                  example: '1990-01-01'
                internal_id:
                  type: string
                  description: Internal ID of the customer in your system.
                  example: 3f1b8c4e-7c2e-4c2c-8d2f-179cf0efb36b
              required:
                - email
                - first_name
                - last_name
      responses:
        '200':
          description: Customer created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: >-
                      Unique identifier for the customer to be used for future
                      transactions.
                    example: cus_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK
                  internal_id:
                    type: string
                    example: 3f1b8c4e-7c2e-4c2c-8d2f-179cf0efb36b
                  email:
                    type: string
                    example: john@acme.com
                  first_name:
                    type: string
                    example: John
                  last_name:
                    type: string
                    example: Doe
                  phone_number:
                    type: string
                    example: '8008001234'
                  date_of_birth:
                    type: string
                    format: date
                    example: '1990-01-01'
                  created_at:
                    type: string
                    format: date-time
                    example: '2025-03-05T18:26:43.069Z'
        '401':
          description: Unauthorized - Invalid or missing API key
        '422':
          description: invalid request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication using your API key

````