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

# Send airtime

> Submit an airtime top-up request. Returns immediately with a transaction ID while disbursement is processed asynchronously.



## OpenAPI

````yaml /openapi/airtime.json post /v1/transfer
openapi: 3.0.3
info:
  title: Beem Airtime API
  version: 1.0.0
  description: >-
    Airtime top-up, transaction status, credit balance, and customer callbacks.
    Transfer and status endpoints are served by the Airtime API; credit balance
    is served by the shared Topup service (use app_name=AIRTIME or USSD).
  contact:
    name: Beem
    url: https://beem.africa
    email: support@beem.africa
servers:
  - url: https://apiairtime.beem.africa
    description: Airtime API — transfer & transaction status
  - url: https://apitopup.beem.africa/v1
    description: Topup API — credit balance (shared across products)
security: []
tags: []
paths:
  /v1/transfer:
    post:
      summary: Send airtime
      description: >-
        Submit an airtime top-up request. Returns immediately with a transaction
        ID while disbursement is processed asynchronously.
      operationId: transferAirtime
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                dest_addr:
                  description: Mobile number in international format without a leading +
                  anyOf:
                    - type: string
                    - type: number
                      format: float
                amount:
                  description: Airtime amount (up to 2 decimal places)
                  anyOf:
                    - type: string
                    - type: number
                      format: float
                reference_id:
                  description: Unique client reference ID for this transfer
                  anyOf:
                    - type: string
                    - type: number
                      format: float
                product_id:
                  description: Optional product ID for routed airtime products
                  type: integer
              additionalProperties: false
              required:
                - dest_addr
                - amount
                - reference_id
      responses:
        '202':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    description: Status code (114 = pending, 100 = success on callback)
                    type: integer
                  transaction_id:
                    description: Beem transaction ID — use for status checks and callbacks
                    anyOf:
                      - type: string
                      - type: number
                        format: float
                  message:
                    description: Human-readable status message
                    type: string
                additionalProperties: false
                required:
                  - code
                  - transaction_id
                  - message
        default:
          description: Successful response
      security:
        - basicAuth: []
        - accessToken: []
components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: 'Beem API credentials: API key as username, API secret as password.'
    accessToken:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Access token only. Send as Authorization: <token> — do not use a Bearer
        prefix.

````