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

# Create a requisition

> Creates a requisition against a trust account and supports the account approval workflow.

Whether the requisition requires approval depends on the trust account configuration:
- If approvals are enabled, firm owners can create requisitions without approval, while all other users require approval.
- If approvals are disabled, the requisition is automatically approved upon creation.



## OpenAPI

````yaml /openapi.json post /bankaccounts/{id}/requisitions
openapi: 3.0.1
info:
  title: API
  version: '1.0'
servers:
  - url: https://api.smokeball.com
  - url: https://api.smokeball.com.au
  - url: https://api.smokeball.co.uk
  - url: https://stagingapi.smokeball.com
  - url: https://stagingapi.smokeball.com.au
  - url: https://stagingapi.smokeball.co.uk
security:
  - api-key: []
    token: []
paths:
  /bankaccounts/{id}/requisitions:
    post:
      tags:
        - Bank Accounts
      summary: Create a requisition
      description: "Creates a requisition against a trust account and supports the account approval workflow.\r\n\r\nWhether the requisition requires approval depends on the trust account configuration:\r\n- If approvals are enabled, firm owners can create requisitions without approval, while all other users require approval.\r\n- If approvals are disabled, the requisition is automatically approved upon creation."
      operationId: CreateRequisitionAsync
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json-patch+json:
            schema:
              allOf:
                - $ref: '#/components/schemas/RequisitionDto'
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/RequisitionDto'
          application/*+json:
            schema:
              allOf:
                - $ref: '#/components/schemas/RequisitionDto'
      responses:
        '202':
          description: When request is accepted. Returns requisition status and balances.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Requisition'
        '400':
          description: When an unsupported request is made.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '403':
          description: >-
            When bank account is not associated with authenticated client or
            client credentials are used.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: When bank account does not exist.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    RequisitionDto:
      required:
        - amount
        - matterId
        - payeeId
        - source
      type: object
      properties:
        matterId:
          minLength: 1
          type: string
          description: Unique identifier of the associated matter. Required.
          example: da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262
        approverUserId:
          type: string
          description: "Approver user ID.\r\n\r\nCannot be the same user ID as the user making the requisition request. If provided, must be a valid user ID in the system.\r\n\r\nOptional. If not provided, default approver will be used."
          nullable: true
          example: 18c05819-c321-4907-800c-d5a608729c5a
        payorId:
          type: string
          description: >-
            Unique identifier of the Payor/Contact ID. Required in US region
            only.
          nullable: true
          example: 18c05819-c321-4907-800c-d5a608729c5a
        payeeId:
          minLength: 1
          type: string
          description: >-
            Unique identifier of the person or organisation being paid.
            Required.
          example: 18c05819-c321-4907-800c-d5a608729c5a
        source:
          minLength: 1
          type: string
          description: "Payment source. Required.\r\nPossible values:\r\n- \"Bank Transfer\" - always available\r\n- \"Bank Check\" - available in AU and UK only\r\n- \"Trust Check\" - available in AU and UK only\r\n- \"Direct Debit\" - available in AU and UK only\r\n- \"Check\" - available in US only"
          example: Bank Transfer
        reference:
          type: string
          description: Payment reference.
          nullable: true
          example: REF123456
        amount:
          minimum: 0.01
          type: number
          description: The payment amount in dollars. Limited to 2 decimal places (cents).
          format: double
          example: 100.5
        effectiveDate:
          type: string
          description: Date of requisition.
          format: date-time
        accountName:
          type: string
          description: >-
            Account name. Required when Source is an electronic payment ('Bank
            Transfer' or 'Direct Debit') and transfer is expected to be via
            Direct Deposit (provide AccountName, BSB, and AccountNumber).
          nullable: true
          example: John Doe
        bsb:
          type: string
          description: >-
            BSB (Bank State Branch). Required when Source is an electronic
            payment ('Bank Transfer' or 'Direct Debit') and transfer is expected
            to be via Direct Deposit (provide AccountName, BSB, and
            AccountNumber).
          nullable: true
          example: '123456'
        accountNumber:
          type: string
          description: >-
            Account number. Required when Source is an electronic payment ('Bank
            Transfer' or 'Direct Debit') and transfer is expected to be via
            Direct Deposit (provide AccountName, BSB, and AccountNumber).
          nullable: true
          example: '12345678'
        organizationOrCompanyName:
          type: string
          description: >-
            Organization or company name. Required when Source is an electronic
            payment ('Bank Transfer' or 'Direct Debit') and transfer is expected
            to be via BPAY (provide OrganizationOrCompanyName, BillerCode, and
            BillerReference).
          nullable: true
          example: ACME Corporation
        billerCode:
          type: string
          description: >-
            Biller code. Required when Source is an electronic payment ('Bank
            Transfer' or 'Direct Debit') and transfer is expected to be via BPAY
            (provide OrganizationOrCompanyName, BillerCode, and
            BillerReference).
          nullable: true
          example: '12345'
        billerReference:
          type: string
          description: >-
            Biller reference. Required when Source is an electronic payment
            ('Bank Transfer' or 'Direct Debit') and transfer is expected to be
            via BPAY (provide OrganizationOrCompanyName, BillerCode, and
            BillerReference).
          nullable: true
          example: REF123456
        reason:
          type: string
          description: Reason for the payment. Free format string.
          nullable: true
          example: Payment for services rendered
        internalNote:
          type: string
          description: Internal note. Free format string.
          nullable: true
          example: Internal note about this payment
      additionalProperties: false
    Requisition:
      type: object
      properties:
        id:
          type: string
          description: Requisition ID if requisition requires approval.
          nullable: true
          example: 18c05819-c321-4907-800c-d5a608729c5a
        status:
          type: string
          description: Status of the requisition (e.g., Pending, Approved).
          example: Approved
        protectedBalance:
          type: number
          description: Protected balance after the requisition.
          format: double
          example: 1000
        availableBalance:
          type: number
          description: Available balance after the requisition.
          format: double
          example: 5000
        totalBalance:
          type: number
          description: Total balance after the requisition.
          format: double
          example: 6000
        pdfPaymentDetail:
          type: string
          description: Link to the PDF payment detail document.
          nullable: true
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
  securitySchemes:
    api-key:
      type: apiKey
      name: x-api-key
      in: header
    token:
      type: apiKey
      name: Authorization
      in: header
      x-amazon-apigateway-authtype: cognito_user_pools

````