Interswitch · Arazzo Workflow

Interswitch Validate Customer And Pay Bill

Version 1.0.0

Look up a biller's payment item, validate the customer, then submit a bill payment advice.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub PaymentsPayment InfrastructureCard NetworkVerveQuicktellerWebpayBills PaymentTransfersLendingFintechAfricaNigeriaArazzoWorkflows

Provider

interswitch

Workflows

validate-and-pay-bill
Resolve a payment item, validate the customer, and pay a Nigerian biller.
Reads the biller's payment items, validates the supplied customer identifier against the biller, and submits a payment advice for the validated customer.
3 steps inputs: accessToken, amount, billerId, customerEmail, customerId, customerMobile, paymentCode, requestReference outputs: customerName, responseCode, transactionRef
1
listPaymentItems
Read the supported payment items (packages, amounts, denominations) for the biller to confirm the paymentCode being charged is valid.
2
validateCustomer
Verify the customer reference with the biller before charging. The biller returns the customer's full name when the reference is recognised.
3
payBill
Submit the payment advice for the validated customer. responseCode 90000 indicates the payment was accepted.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Interswitch Validate Customer And Pay Bill
  summary: Look up a biller's payment item, validate the customer, then submit a bill payment advice.
  description: >-
    The canonical Quickteller bills-payment flow. The workflow first reads the
    payment items for a biller to obtain the paymentCode, validates the
    customer's reference (smartcard, meter, account, or phone) against the biller
    so value is never sent to a bad account, and only then submits the payment
    advice. Every step inlines its request and asserts the documented success
    code (90000) so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: customerValidationApi
  url: ../openapi/interswitch-customer-validation-api-openapi.yml
  type: openapi
- name: paymentItemsApi
  url: ../openapi/interswitch-payment-items-api-openapi.yml
  type: openapi
- name: paymentsApi
  url: ../openapi/interswitch-payments-api-openapi.yml
  type: openapi
workflows:
- workflowId: validate-and-pay-bill
  summary: Resolve a payment item, validate the customer, and pay a Nigerian biller.
  description: >-
    Reads the biller's payment items, validates the supplied customer identifier
    against the biller, and submits a payment advice for the validated customer.
  inputs:
    type: object
    required:
    - accessToken
    - billerId
    - paymentCode
    - customerId
    - customerEmail
    - customerMobile
    - amount
    - requestReference
    properties:
      accessToken:
        type: string
        description: Bearer access token from the Passport OAuth token endpoint.
      billerId:
        type: integer
        description: The biller whose payment items are being resolved (e.g. DSTV).
      paymentCode:
        type: string
        description: The biller payment code to charge (from the biller's payment items).
      customerId:
        type: string
        description: The customer reference at the biller (smartcard, meter, account, or phone).
      customerEmail:
        type: string
        description: Customer email for the payment receipt.
      customerMobile:
        type: string
        description: Customer mobile number.
      amount:
        type: integer
        description: Amount in minor currency units (kobo).
      requestReference:
        type: string
        description: Unique merchant request reference, prefixed with the merchant prefix.
  steps:
  - stepId: listPaymentItems
    description: >-
      Read the supported payment items (packages, amounts, denominations) for
      the biller to confirm the paymentCode being charged is valid.
    operationId: listBillerPaymentItems
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    - name: billerId
      in: path
      value: $inputs.billerId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      paymentItems: $response.body
  - stepId: validateCustomer
    description: >-
      Verify the customer reference with the biller before charging. The biller
      returns the customer's full name when the reference is recognised.
    operationId: validateCustomer
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    requestBody:
      contentType: application/json
      payload:
        paymentCode: $inputs.paymentCode
        customerId: $inputs.customerId
        amount: $inputs.amount
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      fullName: $response.body#/fullName
      validationResponseCode: $response.body#/responseCode
  - stepId: payBill
    description: >-
      Submit the payment advice for the validated customer. responseCode 90000
      indicates the payment was accepted.
    operationId: submitBillPaymentAdvice
    parameters:
    - name: Authorization
      in: header
      value: Bearer $inputs.accessToken
    requestBody:
      contentType: application/json
      payload:
        paymentCode: $inputs.paymentCode
        customerId: $inputs.customerId
        customerEmail: $inputs.customerEmail
        customerMobile: $inputs.customerMobile
        amount: $inputs.amount
        requestReference: $inputs.requestReference
    successCriteria:
    - condition: $statusCode == 200
    - condition: $response.body#/responseCode == "90000"
    outputs:
      transactionRef: $response.body#/transactionRef
      responseCode: $response.body#/responseCode
  outputs:
    customerName: $steps.validateCustomer.outputs.fullName
    transactionRef: $steps.payBill.outputs.transactionRef
    responseCode: $steps.payBill.outputs.responseCode

Work with this as data

Every workflow 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 arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • 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 workflow
curl "https://apis.io/api/v1/arazzo/interswitch-bill-payment-validate-and-pay-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?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.