Airtm Bulk Payouts API

# Bulk Payouts Process multiple payouts efficiently in a single batch operation. Ideal for payroll, affiliate payments, or mass distributions. ## Overview Bulk payouts allow you to submit hundreds or thousands of payout instructions and process them as a coordinated batch, providing better performance and easier management than individual payouts. ## How It Works 1. **Prepare** your payout data with recipient emails and amounts 2. **Submit** the bulk payout request 3. **Validation** - System validates all payouts and checks balance 4. **Processing** - Individual payouts are processed in parallel 5. **Track** progress and handle any failures ## Validation Rules ### Amount Validation - Minimum amount: $0.01. If the recipient is a US resident, the minimum amount may be larger. - Maximum 2 decimal places allowed - Enterprise fee cannot equal or exceed payout amount (unless negative for bonuses) - Airtm fee cannot equal or exceed net amount (amount - enterprise fee) ### Data Validation - Email addresses must be valid format and correspond to active Airtm accounts - Notes field is required and cannot exceed 255 characters - No malicious patterns allowed in text fields (SQL injection protection) - URLs must be valid format when provided ### Batch Validation - No duplicate payouts within batch (based on email + amount + notes) - Total batch amount cannot exceed available account balance

Operations 3

POST /bulk-payouts Create a bulk payout #
GET /bulk-payouts List bulk payouts #
GET /bulk-payouts/{id} Get bulk payout #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/airtm-bulk-payouts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

airtm-bulk-payouts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Airtm Enterprise API V2 Bulk Payouts API
  version: 1.155.0
  description: '# Introduction


    The Airtm Enterprise API enables organizations to send and receive payments globally through a simple REST API.'
  contact:
    name: Airtm Enterprise
    email: enterprise@airtm.com
    url: https://www.airtm.com
servers:
- url: https://api.enterprise.airtm.com/v2
- url: https://api.stg.enterprise.airtm.com/v2
tags:
- name: Bulk Payouts
  description: '# Bulk Payouts


    Process multiple payouts efficiently in a single batch operation.'
paths:
  /bulk-payouts:
    post:
      operationId: CreateBulkPayout
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkPayout'
        default:
          description: Error
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: 'Machine-friendly error code


                      See the API error code catalog in the documentation for the endpoint surface you are using.'
                    example: '415096'
                  message:
                    type: string
                    description: Human-readable error message
                    example: Invalid email address
                  data:
                    $ref: '#/components/schemas/Record_string.unknown_'
                    description: Additional data related to the error
                    example:
                      email: invalid@address
                required:
                - code
                - message
                type: object
      description: 'Create a new bulk payout. You will receive a response with the id of your bulk payout, and the

        processing will start asynchronously after you receive your response.


        You can check in with the progress of your ongoing bulk payout by using the `GET /bulk-payouts/{id}` endpoint.


        If you want to cancel payouts, use the Cancel Payout endpoint.'
      summary: Create a bulk payout
      tags:
      - Bulk Payouts
      security:
      - basicAuth: []
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkPayoutRequest'
    get:
      operationId: ListBulkPayouts
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Paginated_BulkPayout_'
        default:
          description: Error
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: 'Machine-friendly error code


                      See the API error code catalog in the documentation for the endpoint surface you are using.'
                    example: '415096'
                  message:
                    type: string
                    description: Human-readable error message
                    example: Invalid email address
                  data:
                    $ref: '#/components/schemas/Record_string.unknown_'
                    description: Additional data related to the error
                    example:
                      email: invalid@address
                required:
                - code
                - message
                type: object
      description: Endpoint to receive all bulk payouts associated with your account.
      summary: List bulk payouts
      tags:
      - Bulk Payouts
      security:
      - basicAuth: []
      parameters:
      - description: Gets results before the specified cursor.
        in: query
        name: before
        required: false
        schema:
          type: string
      - description: Gets results after the specified cursor.
        in: query
        name: after
        required: false
        schema:
          type: string
      - description: The maximum number of items to fetch.
        in: query
        name: perPage
        required: false
        schema:
          default: 100
          format: int32
          type: integer
          minimum: 10
          maximum: 1000
      - in: query
        name: status
        required: false
        schema:
          $ref: '#/components/schemas/BulkPayoutStatus'
  /bulk-payouts/{id}:
    get:
      operationId: GetBulkPayout
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkPayout'
        default:
          description: Error
          content:
            application/json:
              schema:
                properties:
                  code:
                    type: string
                    description: 'Machine-friendly error code


                      See the API error code catalog in the documentation for the endpoint surface you are using.'
                    example: '415096'
                  message:
                    type: string
                    description: Human-readable error message
                    example: Invalid email address
                  data:
                    $ref: '#/components/schemas/Record_string.unknown_'
                    description: Additional data related to the error
                    example:
                      email: invalid@address
                required:
                - code
                - message
                type: object
      description: 'Endpoint to retrieve the details of an existing bulk payout. The status `RUNNING` is the default

        after you have posted your bulk payout. It means that the individual payouts are being

        processed and not all of them have been processed yet. Once that has happened, the status will

        switch to `DONE`.


        To list all payouts associated with a specific bulk payout, use the List Payouts

        endpoint and pass the bulk payout id as the `bulkPayoutId` query parameter.'
      summary: Get bulk payout
      tags:
      - Bulk Payouts
      security:
      - basicAuth: []
      parameters:
      - description: The bulk payout id
        in: path
        name: id
        required: true
        schema:
          type: string
components:
  schemas:
    Pick_CreatePayoutRequest.Exclude_keyofCreatePayoutRequest.commit__:
      properties:
        airtmUserEmail:
          type: string
          description: The recipient's email address that is associated with their Airtm account
        amount:
          type: number
          format: double
          description: The payment amount in USD.
          minimum: 0.01
        code:
          type: string
          description: 'A unique code used to identify the payout.

            Populate this value with the identifier on your system.


            > [!important]

            > It must be unique across all existing payouts.'
        enterpriseFee:
          type: number
          format: double
          description: The enterprise fee to apply to the payout
          minimum: 0
        notes:
          type: string
          description: 'An arbitrary string describing the payment.

            This information is displayed to the recipient.

            It''s recommended that the string summarizes the purpose of the payment.'
        internalNote:
          type: string
          description: The description of the payout; visible to internal users
        requireIdVerified:
          type: boolean
          description: Set this to true to require that the recipient is ID-verified
          default: false
      required:
      - airtmUserEmail
      - amount
      - notes
      type: object
      description: From T, pick a set of properties whose keys are in the union K
    Record_string.unknown_:
      properties: {}
      additionalProperties: {}
      type: object
      description: Construct a type with a set of properties K of type T
    BulkPayoutStatus:
      description: 'The current status of the bulk payout


        - `PENDING`: The bulk payout was received, but it has yet to be started

        - `IN_PROGRESS`: Our system is currently processing all the individual payouts contained in this bulk payout.

        - `COMPLETED`: This doesn''t mean all payouts were completed successfully, it may have guest or failed items. It means only that the processing, validations and creation of operations related to that task is completed.

        - `REJECTED`: The enterprise rejected the bulk payout

        - `UNCOMPLETED`: Reserved for future use'
      enum:
      - PENDING
      - IN_PROGRESS
      - UNCOMPLETED
      - COMPLETED
      - REJECTED
      type: string
      x-enum-varnames:
      - PENDING
      - IN_PROGRESS
      - UNCOMPLETED
      - COMPLETED
      - REJECTED
    Paginated_BulkPayout_:
      description: Represents a paginated collection of items.
      properties:
        items:
          items:
            $ref: '#/components/schemas/BulkPayout'
          type: array
          description: The items in the current page.
        startCursor:
          type: string
          description: The cursor for the first item in the current page.
        endCursor:
          type: string
          description: The cursor for the last item in the current page.
      required:
      - items
      type: object
      additionalProperties: false
    BulkPayout:
      properties:
        updatedAt:
          type: string
          format: date-time
          description: Timestamp of the last update made to the payout.
        executionDate:
          type: string
          format: date-time
          description: Timestamp of when the payout was executed.
        createdAt:
          type: string
          format: date-time
          description: Timestamp of when the payout was created.
        paidAmount:
          type: number
          format: double
          description: Aggregated amount of all individual payouts in this bulk that were paid
          example: 24
        totalAmount:
          type: number
          format: double
          description: Aggregated amount of all individual payouts in this bulk
          example: 1234.56
        total:
          type: number
          format: double
          description: Number of individual payouts in this bulk
          example: 24
        status:
          $ref: '#/components/schemas/BulkPayoutStatus'
        originalFileName:
          type: string
          description: The name of the file if the bulk payout was created uploading a CSV
        enterpriseUserId:
          type: string
          description: Unique identifier of the enterprise who created this bulk payout
          format: uuid
        id:
          type: string
          description: Unique identifier
          format: uuid
      required:
      - updatedAt
      - createdAt
      - paidAmount
      - totalAmount
      - total
      - status
      - enterpriseUserId
      - id
      type: object
    Omit_CreatePayoutRequest.commit_:
      $ref: '#/components/schemas/Pick_CreatePayoutRequest.Exclude_keyofCreatePayoutRequest.commit__'
      description: Construct a type with the properties of T except for those in type K.
    CreateBulkPayoutRequest:
      properties:
        payouts:
          items:
            $ref: '#/components/schemas/Omit_CreatePayoutRequest.commit_'
          type: array
          description: A list of individual payouts to process in bulk
      required:
      - payouts
      type: object
      additionalProperties: false
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
x-tagGroups:
- name: Payout Operations
  tags:
  - Payouts
  - Bulk Payouts
  - Users
- name: Payin Operations
  tags:
  - Payins
- name: Account
  tags:
  - Me
  - Deposits
  - Reports
- name: Direct Withdrawal
  tags:
  - External Bank Account
  - External Crypto Account
  - Withdrawals
- name: Webhooks
  tags:
  - Webhooks