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

# Create a new transaction ( STABLE )

> Once authenticated, the client application can send a request to create a new transaction by providing relevant details such as the payment amount, sender and receiver. GrailPay will then return a UUID, which serves as the unique identifier and can be used to fetch the details and status of the transaction. Please note that only one transaction can be created per request.



## OpenAPI

````yaml https://api.grailpay.com/docs?api-docs.json post /3p/api/v1/transaction
openapi: 3.0.0
info:
  title: GrailPay ACH API
  description: API Documentation for moving funds via ACH using the GrailPay ACH API
  version: 2025.12.19.2
servers:
  - url: https://api.grailpay.com
    description: Production environment
  - url: https://api-sandbox.grailpay.com
    description: Sandbox environment
security: []
tags:
  - name: Users
    description: >-
      API Endpoints used for the onboarding and managing People, Businesses, and
      Merchants.
  - name: Transactions
    description: API Endpoints used for creating and managing transactions.
  - name: Payouts
    description: API Endpoints used for fetching payout information.
  - name: Refunds
    description: API Endpoints used for creating and retrieving refunds.
  - name: Bank Accounts
    description: API Endpoints used for adding and managing bank accounts.
  - name: Webhooks
    description: API Endpoints used for registering and de-registering webhooks.
  - name: Billing
    description: API Endpoints used for retrieving billing information.
  - name: Stable
    description: Stable, up-to-date APIs that are recommended for current integration.
  - name: Sunsetting
    description: Sunsetting APIs that are still supported but scheduled for deprecation.
  - name: Deprecated
    description: Deprecated APIs that are no longer supported and should be removed.
  - name: SUNSETTING
    description: SUNSETTING
paths:
  /3p/api/v1/transaction:
    post:
      tags:
        - Transactions
        - Stable
      summary: Create a new transaction ( STABLE )
      description: >-
        Once authenticated, the client application can send a request to create
        a new transaction by providing relevant details such as the payment
        amount, sender and receiver. GrailPay will then return a UUID, which
        serves as the unique identifier and can be used to fetch the details and
        status of the transaction. Please note that only one transaction can be
        created per request.
      operationId: f96034804914c77cf08a89c767ec8be4
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransaction'
      responses:
        '201':
          description: Transaction details
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: ''
                  data:
                    $ref: '#/components/schemas/V1TransactionResponse'
                  errors:
                    type: string
                    example: null
                  error_code:
                    type: string
                    example: null
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/Error401Unauthorized'
                  - $ref: '#/components/schemas/Error401InvalidTokenStructure'
                  - $ref: '#/components/schemas/Error401InvalidTokenData'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Forbidden
                  data:
                    type: string
                    example: ''
                  errors:
                    type: string
                    example: null
                  error_code:
                    type: string
                    example: null
                type: object
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Not Found
                  data:
                    type: string
                    example: ''
                  errors:
                    type: string
                    example: null
                  error_code:
                    type: string
                    example: null
                type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                properties:
                  status:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Unprocessable Entity
                  data:
                    type: string
                    example: ''
                  errors:
                    type: string
                    example: null
                  error_code:
                    type: string
                    example: null
                type: object
      security:
        - ApiToken: []
components:
  schemas:
    CreateTransaction:
      properties:
        payer_uuid:
          type: string
          example: 9c330a70-84de-46c3-a380-70b34799b1d3
        payee_uuid:
          type: string
          example: 9c330a70-84de-46c3-a380-70b34799b1d3
        processor_mid:
          type: string
          example: '234234234'
        amount:
          type: integer
          example: '100'
        transaction_fee:
          type: integer
          example: '1.2'
        client_reference_id:
          type: string
          example: adsssd
        payout_delay_days_min:
          type: integer
          example: '1'
        speed:
          type: string
          example: fast
        company_name:
          type: string
          example: Company-1
        description:
          type: string
          example: lladsdf asldfs
        addenda:
          type: string
          example: ''
        source_bank_account:
          properties:
            uuid:
              type: string
              example: 9c330a70-84de-46c3-a380-70b34799b1d3
            aggregator_type:
              type: string
              enum:
                - plaid
                - manual
                - bank_link
          type: object
        destination_bank_account:
          properties:
            uuid:
              type: string
              example: 9c330a70-84de-46c3-a380-70b34799b1d3
            aggregator_type:
              type: string
              enum:
                - plaid
                - manual
                - bank_link
          type: object
        failure_simulation:
          type: integer
          enum:
            - BeforePayout
            - AfterPayout
      type: object
    V1TransactionResponse:
      properties:
        uuid:
          type: string
          example: 9c330a70-84de-46c3-a380-70b34799b1d3
        payer_uuid:
          type: string
          example: 7d021f9a-b5f4-4668-8d78-0f448f55f984
        payee_uuid:
          type: string
          example: ec82930a-b59e-4ed2-83dd-0f041bfa5baa
        transaction_status:
          type: string
          example: PAYOUT_COMPLETE
        currency:
          type: string
          example: USD
        amount:
          type: integer
          example: 57163
        transaction_fee:
          type: integer
          example: 0
        client_reference_id:
          type: string
          example: stageN5@123
        payout_delay_days:
          type: integer
          example: 0
        company_name:
          type: string
          example: a-z, A-Z, 12-'3.
        description:
          type: string
          example: null
          nullable: true
        addenda:
          type: string
          example: null
          nullable: true
        type:
          type: string
          example: api
        spped:
          type: string
          example: sameday
        processor_mid:
          type: string
          example: '123131123'
        batch_payout_id:
          type: string
          example: 78e84f6a-c36e-4c9e-86bf-6ff4a492be90
        capture_status:
          type: string
          example: CAPTURE_COMPLETE
        payout_status:
          type: string
          example: PAYOUT_COMPLETE
        clawback_status:
          type: string
          example: null
          nullable: true
        reverse_payout_status:
          type: string
          example: null
          nullable: true
        failure_code:
          type: string
          example: null
          nullable: true
        failure_reason:
          type: string
          example: null
          nullable: true
        cancel_reason:
          type: string
          example: null
          nullable: true
        payer_bank_account:
          properties:
            uuid:
              type: string
              example: 9c3306a6-743f-4f8f-9a33-dcd081a06204
            aggregator_type:
              type: string
              example: bank_link
          type: object
        payee_bank_account:
          properties:
            uuid:
              type: string
              example: 9c33090b-c0fb-42ce-9ad8-921665d15a90
            aggregator_type:
              type: string
              example: bank_link
          type: object
        payout_ach_return_code:
          type: string
          format: date-time
          example: R01
        payout_failure_reason:
          type: string
          format: date-time
          example: Insufficient funds
        trace_ids:
          properties:
            capture_trace_id:
              type: string
              example: ach_92lhg3vbf76qxzp
            payout_trace_id:
              type: string
              example: ach_57ytkdw84mncxvq
            reverse_payout_trace_id:
              type: string
              example: ''
            refunds:
              type: array
              items:
                properties:
                  refund_uuid:
                    type: string
                    example: ''
                  refund_capture_trace_id:
                    type: string
                    example: ''
                  refund_payout_trace_id:
                    type: string
                    example: ''
                type: object
          type: object
        created_at:
          type: string
          format: date-time
          example: '2024-06-03 15:58:44'
        updated_at:
          type: string
          format: date-time
          example: '2024-06-04 18:30:30'
      type: object
    Error401Unauthorized:
      properties:
        status:
          type: boolean
          example: false
        message:
          type: string
          example: Invalid Token
        data:
          type: string
          example: null
        errors:
          type: string
          example: null
        error_code:
          type: string
          example: null
      type: object
    Error401InvalidTokenStructure:
      properties:
        status:
          type: boolean
          example: false
        message:
          type: string
          example: >-
            Invalid token format. The token should be in the following format:
            ID|TOKEN_VALUE. Example: 12345|abcdefg
        data:
          type: string
          example: null
        errors:
          type: string
          example: null
        error_code:
          type: string
          example: null
      type: object
    Error401InvalidTokenData:
      properties:
        status:
          type: boolean
          example: false
        message:
          type: string
          example: >-
            Invalid token format. The ID in the token must be an integer.
            Example: 12345|abcdefg
        data:
          type: string
          example: null
        errors:
          type: string
          example: null
        error_code:
          type: string
          example: null
      type: object
  securitySchemes:
    ApiToken:
      type: http
      description: >-
        Token-based authentication using Authorization: Bearer <YOUR_API_KEY>
        provided by the GrailPay Support Team.
      bearerFormat: Token
      scheme: bearer

````