Interswitch Paycode API

Cardless cash and merchant tokens (Pay with Mobile / Paycode). Generate single or bulk one-time tokens via `POST /api/v1/pwm/subscribers/{subscriberId}/tokens`, query token status, and cancel tokens at `/cardless-service/api/v1/cardless-services/cancel-token`. Powers ATM cardless withdrawal across the Interswitch-acquired ATM network.

Interswitch Paycode API is one of 12 APIs that Interswitch publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

This API exposes 1 machine-runnable capability that can be deployed as REST, MCP, or Agent Skill surfaces via Naftiko.

Tagged areas include Paycode, Cardless, Cash Withdrawal, Tokens, and Africa. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, and 1 Naftiko capability spec.

OpenAPI Specification

interswitch-paycode-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Interswitch Paycode API
  description: |
    Cardless cash and merchant tokens (Pay with Mobile / Paycode). Generate
    single or bulk one-time tokens, query token status, and cancel tokens.
    Powers cardless ATM withdrawal across the Interswitch-acquired ATM network.
  version: '2024-01-01'
servers:
  - url: https://sandbox.interswitchng.com
    description: Sandbox
  - url: https://saturn.interswitchng.com
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Tokens
paths:
  /api/v1/pwm/subscribers/{subscriberId}/tokens:
    post:
      tags: [Tokens]
      summary: Generate Paycode Token
      description: Create a one-time access code for a cardless transaction.
      operationId: generatePaycodeToken
      parameters:
        - in: path
          name: subscriberId
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [frontEndPartnerId, paymentMethodCode, amount, tokenLifeTimeInMinutes, oneTimePin]
              properties:
                frontEndPartnerId: { type: string, example: WEMA }
                paymentMethodCode: { type: string }
                amount: { type: integer }
                tokenLifeTimeInMinutes: { type: integer }
                oneTimePin: { type: string }
                ttid: { type: string, description: Use the same value as `transactionRef`. }
                transactionRef: { type: string }
      responses:
        '200':
          description: Token created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  payWithMobileToken: { type: string }
                  subscriberId: { type: string }
                  tokenLifeTimeInMinutes: { type: integer }
                  responseCode: { type: string }
  /api/v1/pwm/subscribers/{subscriberId}/tokens/status:
    get:
      tags: [Tokens]
      summary: Get Token Status
      operationId: getPaycodeTokenStatus
      parameters:
        - in: path
          name: subscriberId
          required: true
          schema: { type: string }
        - in: query
          name: token
          required: true
          schema: { type: string }
      responses:
        '200':
          description: Token status.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status: { type: string }
                  channel: { type: string }
                  surchargeAmount: { type: integer }
                  settlementCode: { type: string }
                  paymentMethodCode: { type: string }
  /cardless-service/api/v1/cardless-services/cancel-token:
    post:
      tags: [Tokens]
      summary: Cancel Paycode Token
      operationId: cancelPaycodeToken
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [referenceId, frontEndPartner]
              properties:
                referenceId: { type: string }
                frontEndPartner: { type: string }
      responses:
        '200':
          description: Cancellation response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  responseCode: { type: string }
                  responseMessage: { type: string }
  /api/v1/pwm/subscribers/{subscriberId}/tokens/bulk:
    post:
      tags: [Tokens]
      summary: Generate Bulk Paycode Tokens
      operationId: generateBulkPaycodeTokens
      parameters:
        - in: path
          name: subscriberId
          required: true
          schema: { type: string }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [frontEndPartnerId, items]
              properties:
                frontEndPartnerId: { type: string }
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      amount: { type: integer }
                      tokenLifeTimeInMinutes: { type: integer }
                      referenceId: { type: string }
      responses:
        '200':
          description: Bulk token batch.
          content:
            application/json:
              schema:
                type: object
                properties:
                  batchId: { type: string }
                  tokens:
                    type: array
                    items:
                      type: object
                      properties:
                        referenceId: { type: string }
                        payWithMobileToken: { type: string }
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer