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

# Initiate a payment

> Initiate a payment



## OpenAPI

````yaml POST /v1/payments
openapi: 3.0.0
info:
  title: Paycashless API
  version: 1.1.0
servers:
  - url: https://api.paycashless.com
    description: Production
security: []
paths:
  /v1/payments:
    post:
      tags:
        - payments
      description: Initiate a payment
      parameters:
        - schema:
            type: string
            minLength: 1
            description: SHA-512 HMAC signature of the request payload using the API secret
            example: >-
              5e73d044c44d733fcf819ad3409aaaddca840d421b69cb0b04e2c750fc62ece7526d36296237663ad1f06f62a730c0466516507196b3ce6567493cc52a7cf63d
          required: true
          description: SHA-512 HMAC signature of the request payload using the API secret
          name: Request-Signature
          in: header
        - schema:
            type: string
            pattern: ^\d{10}$
            description: UNIX timestamp when the request was created (in seconds)
            example: '1712336881'
          required: true
          description: UNIX timestamp when the request was created (in seconds)
          name: Request-Timestamp
          in: header
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                reference:
                  type: string
                paymentMethod:
                  type: string
                  enum:
                    - pay_with_transfer
                amount:
                  type: object
                  properties:
                    value:
                      type: integer
                      minimum: 50000
                    currency:
                      type: string
                      enum:
                        - NGN
                  required:
                    - value
                    - currency
                customer:
                  type: object
                  properties:
                    email:
                      type: string
                      format: email
                    name:
                      type: string
                  required:
                    - email
                    - name
                expiresIn:
                  type: number
                  description: The time in minutes before the payment expires (in seconds)
                  example: 1800
                callbackUrl:
                  type: string
                  format: uri
                metadata:
                  type: object
                  additionalProperties:
                    anyOf:
                      - type: string
                      - type: number
              required:
                - reference
                - paymentMethod
                - amount
                - customer
                - expiresIn
      responses:
        '200':
          description: Initiate a payment with transfer
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  reference:
                    type: string
                  accountName:
                    type: string
                  accountNumber:
                    type: string
                  bankName:
                    type: string
                  amount:
                    type: object
                    properties:
                      value:
                        type: integer
                      currency:
                        type: string
                    required:
                      - value
                      - currency
                  customer:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      email:
                        type: string
                      phoneNumber:
                        type: string
                        nullable: true
                      address:
                        type: string
                        nullable: true
                      reference:
                        type: string
                        nullable: true
                      isBlacklisted:
                        type: boolean
                      liveMode:
                        type: boolean
                    required:
                      - id
                      - name
                      - email
                      - phoneNumber
                      - address
                      - reference
                      - isBlacklisted
                      - liveMode
                  metadata:
                    type: object
                    additionalProperties:
                      anyOf:
                        - type: string
                        - type: number
                  liveMode:
                    type: boolean
                  expiresAt:
                    type: string
                    format: date-time
                required:
                  - id
                  - reference
                  - accountName
                  - accountNumber
                  - bankName
                  - amount
                  - customer
                  - liveMode
                  - expiresAt

````