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

# Start a session on a user's MTN line

> Sends an OTP by SMS to the user's MTN number. Only call this after the user has agreed to let your business move airtime from their line. Verify the code with `/airtime-cash/sessions/{id}/verify`.




## OpenAPI

````yaml /openapi.yaml post /airtime-cash/sessions
openapi: 3.0.3
info:
  title: OnePanel API
  version: 1.0.0
  description: API for OnePanel data vending and transaction management.
servers:
  - url: https://api.onepanel.ng/api/v1
    description: Production
security: []
tags:
  - name: Catalog
  - name: Purchases
  - name: Transactions
  - name: Account
  - name: Airtime Cash
paths:
  /airtime-cash/sessions:
    post:
      tags:
        - Airtime Cash
      summary: Start a session on a user's MTN line
      description: >
        Sends an OTP by SMS to the user's MTN number. Only call this after the
        user has agreed to let your business move airtime from their line.
        Verify the code with `/airtime-cash/sessions/{id}/verify`.
      operationId: createAirtimeCashSession
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSessionRequest'
            example:
              msisdn: '08031234567'
              consent: true
              consent_ref: consent-2026-11-09-8841
      responses:
        '201':
          description: OTP sent.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionStarted'
        '400':
          description: Invalid number, or `consent` is not true.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Too many codes requested for this number. Wait and try again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
components:
  schemas:
    CreateSessionRequest:
      type: object
      required:
        - msisdn
        - consent
      properties:
        msisdn:
          type: string
          description: The user's MTN number
          example: '08031234567'
        consent:
          type: boolean
          description: Must be true. The user agreed to this access.
          example: true
        consent_ref:
          type: string
          maxLength: 128
          description: Your own record of the user's consent.
    SessionStarted:
      type: object
      properties:
        session_id:
          type: string
          example: 3f1c2a9e-5b1d-4f0e-9a58-1d2b7c6e8a10
        status:
          type: string
          enum:
            - pending
            - active
        msisdn:
          type: string
          example: '2348031234567'
        message:
          type: string
    Error:
      type: object
      required:
        - message
      properties:
        message:
          type: string
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.