Moniepoint · Arazzo Workflow

Moniepoint Collect Via Bank Transfer

Version 1.0.0

Initialize a collection, generate a one-time NUBAN to pay it, then poll the transaction until paid.

1 workflow 1 source API 1 provider
View Spec View on GitHub AfricaNigeriaPaymentsBankingFintechAcquiringPoint-of-SaleCollectionDisbursementsVirtual AccountsDirect DebitBills PaymentSMBWorking CapitalUnicornArazzoWorkflows

Provider

moniepoint

Workflows

collect-bank-transfer
Initialize a transaction, get a pay-with-transfer NUBAN, then poll to paid.
Create a pending transaction, generate a one-time NUBAN for bank-transfer payment, and poll the transaction status until it settles.
3 steps inputs: amount, contractCode, currencyCode, customerEmail, customerName, paymentDescription, paymentReference outputs: paymentStatus, transactionReference
1
initializeTransaction
Create a pending transaction and obtain its transactionReference and checkoutUrl.
2
payWithTransfer
Generate a one-time NUBAN the customer can pay into to complete the initialized transaction.
3
pollStatus
Poll the transaction status until it reaches a terminal payment state of PAID, FAILED, or EXPIRED.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Moniepoint Collect Via Bank Transfer
  summary: Initialize a collection, generate a one-time NUBAN to pay it, then poll the transaction until paid.
  description: >-
    Accept money from a customer by bank transfer. This workflow initializes a
    pending transaction to obtain a transactionReference, generates a one-time
    NUBAN for the customer to pay into, and then polls the transaction status
    until it reaches a terminal payment state of PAID, FAILED, or EXPIRED. Every
    step spells out its request inline so the flow can be read and executed
    without opening the underlying OpenAPI description.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-1340
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-1340
      capability_name: Payments & Card Management
      spec: moniepoint-transactions-api-openapi.yml
      confidence: 0.85
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: transactionsApi
  url: ../openapi/moniepoint-transactions-api-openapi.yml
  type: openapi
workflows:
- workflowId: collect-bank-transfer
  summary: Initialize a transaction, get a pay-with-transfer NUBAN, then poll to paid.
  description: >-
    Create a pending transaction, generate a one-time NUBAN for bank-transfer
    payment, and poll the transaction status until it settles.
  inputs:
    type: object
    required:
    - amount
    - customerName
    - customerEmail
    - paymentReference
    - paymentDescription
    - contractCode
    - currencyCode
    properties:
      amount:
        type: number
        description: Amount the customer should pay.
      customerName:
        type: string
        description: Name of the paying customer.
      customerEmail:
        type: string
        description: Email of the paying customer.
      paymentReference:
        type: string
        description: Unique merchant payment reference.
      paymentDescription:
        type: string
        description: Description shown for the payment.
      contractCode:
        type: string
        description: Monnify contract code the transaction is created under.
      currencyCode:
        type: string
        description: ISO currency code for the transaction (e.g. NGN).
  steps:
  - stepId: initializeTransaction
    description: >-
      Create a pending transaction and obtain its transactionReference and
      checkoutUrl.
    operationId: initializeTransaction
    requestBody:
      contentType: application/json
      payload:
        amount: $inputs.amount
        customerName: $inputs.customerName
        customerEmail: $inputs.customerEmail
        paymentReference: $inputs.paymentReference
        paymentDescription: $inputs.paymentDescription
        contractCode: $inputs.contractCode
        currencyCode: $inputs.currencyCode
        paymentMethods:
        - ACCOUNT_TRANSFER
    successCriteria:
    - condition: $statusCode == 200
    - condition: $.requestSuccessful == true
      context: $response.body
      type: jsonpath
    outputs:
      transactionReference: $response.body#/responseBody/transactionReference
      checkoutUrl: $response.body#/responseBody/checkoutUrl
  - stepId: payWithTransfer
    description: >-
      Generate a one-time NUBAN the customer can pay into to complete the
      initialized transaction.
    operationId: payWithBankTransfer
    requestBody:
      contentType: application/json
      payload:
        transactionReference: $steps.initializeTransaction.outputs.transactionReference
    successCriteria:
    - condition: $statusCode == 200
    - condition: $.requestSuccessful == true
      context: $response.body
      type: jsonpath
    outputs:
      paymentReference: $response.body#/responseBody/paymentReference
  - stepId: pollStatus
    description: >-
      Poll the transaction status until it reaches a terminal payment state of
      PAID, FAILED, or EXPIRED.
    operationId: getTransactionStatus
    parameters:
    - name: transactionReference
      in: query
      value: $steps.initializeTransaction.outputs.transactionReference
    successCriteria:
    - condition: $statusCode == 200
    - condition: $.responseBody.paymentStatus == 'PAID' || $.responseBody.paymentStatus == 'FAILED' || $.responseBody.paymentStatus == 'EXPIRED'
      context: $response.body
      type: jsonpath
    retryAfter: 5
    retryLimit: 12
    outputs:
      paymentStatus: $response.body#/responseBody/paymentStatus
      amount: $response.body#/responseBody/amount
  outputs:
    transactionReference: $steps.initializeTransaction.outputs.transactionReference
    paymentStatus: $steps.pollStatus.outputs.paymentStatus

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/moniepoint-collect-bank-transfer-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.