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

# Create a Direct Debit Mandate

> Creates a new direct debit mandate for a customer.



## OpenAPI

````yaml post /v1/direct-debits
openapi: 3.0.1
info:
  description: ''
  title: Vendor API
  version: 1.0.0
servers:
  - description: Production
    url: https://api.nomba.com
  - description: Sandbox
    url: https://sandbox.nomba.com
security: []
tags:
  - name: Authenticate
  - name: Accounts
  - name: Virtual Accounts
  - name: Online Checkout
  - name: Charge
  - name: Transfers
  - name: Direct Debits
  - name: Terminals
  - name: Transactions
  - name: Airtime and Data Vending
  - name: Electricity Vending
  - name: CableTV Subscription
  - name: Betting Vending
paths:
  /v1/direct-debits:
    post:
      tags:
        - Direct Debits
      summary: Create a Direct Debit Mandate
      description: Creates a new direct debit mandate for a customer.
      parameters:
        - name: accountId
          in: header
          required: true
          schema:
            type: string
          description: The vendor account ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateMandateRequest'
            example:
              customerAccountNumber: '0212343456'
              bankCode: '101'
              customerName: Kolapo Ojo
              customerAddress: maryland Ikeja computer village
              customerAccountName: Kolapo Ojo
              amount: 100
              frequency: WEEKLY
              narration: test e mandate response
              customerPhoneNumber: '08074332234'
              merchantReference: '12003074001'
              startDate: 2025-08-29T14:58
              endDate: 2025-08-30T10:40
              customerEmail: kolapo@gmail.com
              startImmediately: true
      responses:
        '200':
          description: Mandate created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateMandateResponse'
              example:
                responseMessage: Success
                responseCode: '00'
                data:
                  mandateId: e50b7835-502c-4cfe-9893-47657633d7a2
                  merchantReference: '12003074001'
                  phoneNumber: '08073345562'
                  description: >-
                    Welcome to NIBSS e-mandate authentication service, a
                    seamless and convenient authentication experience. Kindly
                    proceed with a token payment of N50.00 into account number
                    9880218357 with Paystack-Titan Bank. This payment will
                    trigger the authentication of your mandate. Thank You
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestError'
          description: The request body sent by merchant did not pass the validation checks
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticationError'
          description: >-
            The access_token provided to access the resource is missing or
            invalid.
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthorizationError'
          description: The client does not have the permissions to access this resource
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordNotFoundError'
          description: The record that the client is trying to access does not exist.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
          description: >-
            The client has maxed out the number of calls within a time period on
            this resource.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerError'
          description: Downstream system error.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestError'
          description: Resource not available
      security:
        - BearerAuth: []
components:
  schemas:
    CreateMandateRequest:
      type: object
      properties:
        customerAccountNumber:
          type: string
          example: '0174534423'
        bankCode:
          type: string
          example: '101'
        customerName:
          type: string
          example: Kolapo Ojo
        customerAddress:
          type: string
          example: maryland Ikeja computer village
        customerAccountName:
          type: string
          example: Kolapo Ojo
        amount:
          type: number
          format: double
          example: 100
        frequency:
          type: string
          enum:
            - VARIABLE
            - WEEKLY
            - EVERY_TWO_WEEKS
            - MONTHLY
            - EVERY_TWO_MONTHS
            - EVERY_THREE_MONTHS
            - EVERY_FOUR_MONTHS
            - EVERY_FIVE_MONTHS
            - EVERY_SIX_MONTHS
            - EVERY_SEVEN_MONTHS
            - EVERY_EIGHT_MONTHS
            - EVERY_NINE_MONTHS
            - EVERY_TEN_MONTHS
            - EVERY_ELEVEN_MONTHS
            - EVERY_TWELVE_MONTHS
          example: WEEKLY
        narration:
          type: string
          example: test e mandate response
        customerPhoneNumber:
          type: string
          example: '0807882343'
        merchantReference:
          type: string
          description: >-
            A NUMERIC string (0-9) used to track a transaction. It must be
            unique per transaction.
          example: '120030740017'
        startDate:
          type: string
          format: date-time
          example: 2025-08-29T14:58
        endDate:
          type: string
          format: date-time
          example: 2025-08-30T10:40
        customerEmail:
          type: string
          example: kolapo@gmail.com
        startImmediately:
          type: boolean
          example: true
      required:
        - customerAccountNumber
        - bankCode
        - customerName
        - customerAccountName
        - amount
        - frequency
        - merchantReference
        - startDate
        - endDate
        - customerEmail
    CreateMandateResponse:
      type: object
      properties:
        responseMessage:
          type: string
          example: Success
        responseCode:
          type: string
          example: '00'
        data:
          type: object
          properties:
            mandateId:
              type: string
              example: e50b7835-502c-4cfe-9893-47657633d7a2
            merchantReference:
              type: string
              example: '12003074001'
            phoneNumber:
              type: string
              example: '08073345562'
            description:
              type: string
              example: >-
                Welcome to NIBSS e-mandate authentication service, a seamless
                and convenient authentication experience. Kindly proceed with a
                token payment of N50.00...
          required:
            - mandateId
            - merchantReference
            - phoneNumber
            - description
      required:
        - responseMessage
        - responseCode
        - data
    RequestError:
      type: object
      description: Request Error response.
      properties:
        code:
          type: string
          description: API error code.
          example: '400'
        description:
          type: string
          description: Additional details about the error.
          example: Request failed.
    AuthenticationError:
      type: object
      description: Authentication Error response.
      properties:
        code:
          type: string
          description: API error code.
          example: '401'
        description:
          type: string
          description: Additional details about the error.
          example: Unauthorized
    AuthorizationError:
      type: object
      description: Permissions error response.
      properties:
        code:
          type: string
          description: API error code.
          example: '403'
        description:
          type: string
          description: Additional details about the error.
          example: Forbidden
    RecordNotFoundError:
      type: object
      description: Record-Not-Found error response.
      properties:
        code:
          type: string
          description: API error code.
          example: '404'
        description:
          type: string
          description: Additional details about the error.
          example: Record not found
    RateLimitError:
      type: object
      description: Rate-limit error response.
      properties:
        code:
          type: string
          description: API error code.
          example: '429'
        description:
          type: string
          description: Additional details about the error.
          example: Too many requests
    ServerError:
      type: object
      description: Server error response.
      properties:
        code:
          type: string
          description: API error code.
          example: '500'
        description:
          type: string
          description: Additional details about the error.
          example: Server error
  securitySchemes:
    BearerAuth:
      description: >-
        Nomba authenticates API calls with [OAuth2 HTTP bearer
        tokens](http://tools.ietf.org/html/rfc6750). There are two methods of
        authentication; [Client-Credentials
        method](https://www.rfc-editor.org/rfc/rfc6749) and [PKCE (Proof Key for
        Code Exchange)](https://www.rfc-editor.org/rfc/rfc7636) method. In each
        of the methods, You will get an `ACCESS_TOKEN`. You need to use an
        `"Authorization"` HTTP header to provide your `ACCESS_TOKEN`. For
        example: `Authorization: {ACCESS_TOKEN}`.
      scheme: bearer
      type: http
      bearerFormat: JWT

````