Moniepoint · Arazzo Workflow

Moniepoint Virtual Account With Limit Profile

Version 1.0.0

Define a transaction limit profile, then reserve a virtual account bound to that profile.

1 workflow 1 source API 1 provider
View Spec View on GitHub AfricaNigeriaPaymentsBankingFintechAcquiringPOSCollectionsDisbursementsVirtual AccountsDirect DebitBills PaymentSMBWorking CapitalUnicornArazzoWorkflows

Provider

moniepoint

Workflows

virtual-account-with-limit
Create a limit profile and reserve a virtual account bound to it.
Define a reusable limit profile, then create a reserved account that references the profile by limitProfileCode, and confirm the account by reading it back.
3 steps inputs: accountName, accountReference, contractCode, currencyCode, customerEmail, dailyTransactionValue, dailyTransactionVolume, limitProfileName, singleTransactionValue outputs: accountReference, accounts, limitProfileCode, status
1
createLimitProfile
createLimitProfile
Define a limit profile that caps single-transaction value and daily transaction volume and value.
2
reserveAccountWithLimit
reserveAccountWithLimit
Reserve a permanent NUBAN virtual account pre-assigned to the limit profile created above.
3
confirmAccount
getReservedAccountV2
Read the reserved account back by its accountReference to confirm creation and surface the issued NUBAN details.

Source API Descriptions

Arazzo Workflow Specification

moniepoint-virtual-account-with-limit-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Moniepoint Virtual Account With Limit Profile
  summary: Define a transaction limit profile, then reserve a virtual account bound to that profile.
  description: >-
    Create a per-account limit profile that caps single-transaction value and
    daily transaction volume, then reserve a permanent NUBAN virtual account
    that is pre-assigned to that limit profile, and read the account back to
    confirm it was created. 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
sourceDescriptions:
- name: reservedAccountsApi
  url: ../openapi/monnify-reserved-accounts-api-openapi.yml
  type: openapi
workflows:
- workflowId: virtual-account-with-limit
  summary: Create a limit profile and reserve a virtual account bound to it.
  description: >-
    Define a reusable limit profile, then create a reserved account that
    references the profile by limitProfileCode, and confirm the account by
    reading it back.
  inputs:
    type: object
    required:
    - limitProfileName
    - singleTransactionValue
    - dailyTransactionVolume
    - dailyTransactionValue
    - accountReference
    - accountName
    - currencyCode
    - contractCode
    - customerEmail
    properties:
      limitProfileName:
        type: string
        description: Human-readable name for the limit profile.
      singleTransactionValue:
        type: number
        description: Maximum value allowed for a single inbound transaction.
      dailyTransactionVolume:
        type: integer
        description: Maximum number of transactions allowed per day.
      dailyTransactionValue:
        type: number
        description: Maximum total transaction value allowed per day.
      accountReference:
        type: string
        description: Unique merchant reference identifying the reserved account.
      accountName:
        type: string
        description: Display name for the reserved account.
      currencyCode:
        type: string
        description: ISO currency code for the account (e.g. NGN).
      contractCode:
        type: string
        description: Monnify contract code the account is created under.
      customerEmail:
        type: string
        description: Email address of the customer the account is reserved for.
  steps:
  - stepId: createLimitProfile
    description: >-
      Define a limit profile that caps single-transaction value and daily
      transaction volume and value.
    operationId: createLimitProfile
    requestBody:
      contentType: application/json
      payload:
        limitProfileName: $inputs.limitProfileName
        singleTransactionValue: $inputs.singleTransactionValue
        dailyTransactionVolume: $inputs.dailyTransactionVolume
        dailyTransactionValue: $inputs.dailyTransactionValue
    successCriteria:
    - condition: $statusCode == 200
    - condition: $.requestSuccessful == true
      context: $response.body
      type: jsonpath
    outputs:
      limitProfileCode: $response.body#/responseBody/limitProfileCode
  - stepId: reserveAccountWithLimit
    description: >-
      Reserve a permanent NUBAN virtual account pre-assigned to the limit
      profile created above.
    operationId: reserveAccountWithLimit
    requestBody:
      contentType: application/json
      payload:
        accountReference: $inputs.accountReference
        accountName: $inputs.accountName
        currencyCode: $inputs.currencyCode
        contractCode: $inputs.contractCode
        customerEmail: $inputs.customerEmail
        limitProfileCode: $steps.createLimitProfile.outputs.limitProfileCode
    successCriteria:
    - condition: $statusCode == 200
    - condition: $.requestSuccessful == true
      context: $response.body
      type: jsonpath
    outputs:
      accountReference: $response.body#/responseBody/accountReference
      status: $response.body#/responseBody/status
  - stepId: confirmAccount
    description: >-
      Read the reserved account back by its accountReference to confirm
      creation and surface the issued NUBAN details.
    operationId: getReservedAccountV2
    parameters:
    - name: accountReference
      in: path
      value: $steps.reserveAccountWithLimit.outputs.accountReference
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/responseBody/status
      accounts: $response.body#/responseBody/accounts
  outputs:
    limitProfileCode: $steps.createLimitProfile.outputs.limitProfileCode
    accountReference: $steps.reserveAccountWithLimit.outputs.accountReference
    status: $steps.confirmAccount.outputs.status
    accounts: $steps.confirmAccount.outputs.accounts