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

# Submit Niobi Unified Payments

> Handles payment processing for Niobi, supporting multiple payment methods.

<Note>
  Please make sure to generate a new `signature` whenever you are creating a new payment.
</Note>

### List of Supported Countries

| Country Id | Country       | Country Code | Currency | Payment Method type                         | Required Fields       |
| ---------- | ------------- | ------------ | -------- | ------------------------------------------- | --------------------- |
| 1          | Kenya         | 254          | KES      | till number, pay bill, pesalink, send money | country\_id, currency |
| 2          | Benin         | 229          | XOF      | mtn, Moov                                   | country\_id, currency |
| 3          | Cote D'Ivoire | 225          | XOF      | mtn, Orange                                 | country\_id, currency |
| 4          | Cameroon      | 237          | XAF      | mtn, Orange                                 | country\_id, currency |
| 9          | Senegal       | 221          | XOF      | Orange, Free                                | country\_id, currency |
| 10         | Tanzania      | 255          | TZS      | Airtel, Halotel, Tigo                       | country\_id, currency |
| 11         | Uganda        | 256          | UGX      | mtn, Airtel                                 | country\_id, currency |
| 12         | Zambia        | 260          | ZMW      | Zamtel, mtn, Airtel                         | country\_id, currency |
| 13         | Sierra Leone  | 232          | SLE      | Orange                                      | country\_id, currency |

### List of Supported Kenyan Banks

| id | bank\_name                  | niobi\_bank\_code |
| -- | --------------------------- | ----------------- |
| 1  | Kenya Commercial Bank       | 1                 |
| 2  | Standard Chartered          | 2                 |
| 3  | Absa Bank Kenya             | 3                 |
| 4  | Ncba Bank Kenya             | 7                 |
| 5  | Prime Bank                  | 10                |
| 6  | Cooperative Bank            | 11                |
| 7  | National Bank of Kenya      | 12                |
| 8  | Citibank N.A Kenya          | 16                |
| 9  | Middle East Bank Kenya      | 18                |
| 10 | Bank of Africa Kenya        | 19                |
| 11 | Credit Bank Limited         | 25                |
| 12 | CFC Stanbic Kenya           | 31                |
| 13 | Paramount Bank              | 50                |
| 14 | Jamii Bora Bank             | 51                |
| 15 | Guaranty Trust Bank         | 53                |
| 16 | Guardian Bank               | 55                |
| 17 | I\&M Bank                   | 57                |
| 18 | Diamond Trust Bank          | 63                |
| 19 | Sidian Bank                 | 66                |
| 20 | Equity Bank Kenya           | 68                |
| 21 | Family Bank Limited         | 70                |
| 22 | Gulf African Bank           | 72                |
| 23 | First Community Bank        | 74                |
| 24 | Kenya Women's Finance Trust | 78                |


## OpenAPI

````yaml post /api/v3/niobi-unified-payments
openapi: 3.0.0
info:
  title: Niobi Application API
  description: Niobi List API
  version: 1.0.0
servers:
  - url: https://sandbox.users.niobi.co
    description: Live API Server
security: []
tags:
  - name: Niobi
    description: API Endpoints of Niobi
paths:
  /api/v3/niobi-unified-payments:
    post:
      tags:
        - payment
      summary: Niobi unified payment version-3
      description: >-
        Handles payment processing for Niobi, supporting multiple payment
        methods.
      operationId: V3NiobiUnifiedPayments
      requestBody:
        description: Payload required for initiating a Niobi payment transaction.
        required: true
        content:
          application/json:
            schema:
              required:
                - client_id
                - params
                - salt
                - sender
                - timestamp
                - signature
              properties:
                client_id:
                  description: >-
                    The Client id is your public key which is generated when you
                    are creating a new API integration from our app.
                  type: string
                  example: K1PoY1WYricSpXh6Wm24twnk6ecPJOWrHGsqiKJr
                params:
                  required:
                    - amount
                    - currency
                    - payment_reference
                    - first_name
                    - last_name
                    - mobile
                    - email
                    - country_id
                    - city
                    - postal_code
                    - line1
                    - client_callback_url
                    - payment_method_type
                  properties:
                    amount:
                      description: >-
                        The amount to be transferred. Please note this value
                        should be in standard units(x100)
                      type: integer
                      example: 1000
                    customer_identifier:
                      description: Customer identifier for sub-wallet.
                      type: integer
                      example: 1234
                    currency:
                      description: Currency of the transaction.
                      type: string
                      example: KES
                    payment_reference:
                      description: >-
                        Any information you can use to reference this
                        transaction later.
                      type: string
                      example: TRANS-123456789
                    first_name:
                      description: First name of the payee.
                      type: string
                      example: John
                    last_name:
                      description: Last name of the payee.
                      type: string
                      example: Doe
                    mobile:
                      description: Mobile number of the payee.
                      type: string
                      example: '254123456789'
                    email:
                      description: Email of the payee.
                      type: string
                      example: john@doe.com
                    country_id:
                      description: Country Id can be used from above table.
                      type: integer
                      example: '1'
                    city:
                      description: City of the payee.
                      type: string
                      example: Nairobi
                    postal_code:
                      description: Postal code of the payee.
                      type: string
                      example: '001001'
                    line1:
                      description: Street address of the payee.
                      type: string
                      example: abc, xyz
                    description:
                      description: >-
                        This is the description or message from payer who is
                        paying out
                      type: string
                      example: abc, xyz
                    client_callback_url:
                      description: Callback URL for payment confirmation response.
                      type: string
                      example: https://your-domain.com/niobi/result
                    third_party_reference_1:
                      description: customer internal transaction reference
                      type: string
                      format: string
                    third_party_reference_2:
                      description: customer external transaction reference
                      type: string
                      format: string
                    payment_method_type:
                      description: Preferred payment method.
                      type: string
                      enum:
                        - mtn
                        - Orange
                        - Vodacom
                        - Airtel
                        - at
                        - Vodafone
                        - tnm
                        - Zamtel
                        - Halotel
                        - Tigo
                        - Free
                        - send money
                        - till number
                        - pay bill
                        - pesalink
                      example: send money
                    mtn:
                      description: >-
                        Using mtn method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    Orange:
                      description: >-
                        Using Orange method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    Vodacom:
                      description: >-
                        Using Vodacom method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    Airtel:
                      description: >-
                        Using Airtel method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    at:
                      description: >-
                        Using at method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    Vodafone:
                      description: >-
                        Using Vodafone method needs a recipient's phone number
                        of payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    tnm:
                      description: >-
                        Using tnm method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    Zamtel:
                      description: >-
                        Using Zamtel method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    Halotel:
                      description: >-
                        Using Halotel method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    Tigo:
                      description: >-
                        Using Tigo method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    Free:
                      description: >-
                        Using Free method needs a recipient's phone number of
                        payment method
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: >-
                              Enter the recipient's mobile number. Be sure to
                              use the right fomatting
                            type: string
                            format: phone_number
                            example: '254123456789'
                        type: object
                    sendmoney:
                      description: Details for the send money payment method.
                      type: array
                      items:
                        required:
                          - phone_number
                        properties:
                          phone_number:
                            description: Recipient's mobile number for send money method.
                            type: string
                            example: '254123456789'
                        type: object
                    paybill:
                      description: Details for the pay bill payment method.
                      type: array
                      items:
                        required:
                          - paybill_number
                          - account_number
                        properties:
                          paybill_number:
                            description: Paybill number for the transaction.
                            type: string
                            example: '123456'
                          account_number:
                            description: Account number for the transaction.
                            type: string
                            example: '123456789'
                        type: object
                    tillnumber:
                      description: Details for the till number payment method.
                      type: array
                      items:
                        required:
                          - till_number
                        properties:
                          till_number:
                            description: Till number for the transaction.
                            type: string
                            example: '123456'
                        type: object
                    pesalink:
                      description: Details for the pesalink payment method.
                      type: array
                      items:
                        required:
                          - bank_name
                          - bank_code
                          - branch_name
                          - account_name
                          - account_number
                        properties:
                          bank_name:
                            description: Bank name for the pesalink transfer.
                            type: string
                            example: ABC
                          bank_code:
                            description: Bank code for the pesalink transfer.
                            type: string
                            example: '00'
                          branch_name:
                            description: Branch name for the pesalink transfer.
                            type: string
                            example: ABC
                          account_name:
                            description: Account name for the pesalink transfer.
                            type: string
                            example: ABC
                          account_number:
                            description: Account number for the pesalink transfer.
                            type: string
                            example: '123456789'
                        type: object
                  type: object
                salt:
                  description: >-
                    Salt is used for security purposes. This is a random string
                    and can be unique value for each request or always the same.
                  type: string
                  example: justrandomstring
                sender:
                  description: >-
                    The Sender is the title of the API Integration created
                    through our app.
                  type: string
                  example: John.co
                timestamp:
                  description: Timestamp of the request.
                  type: integer
                  example: 1709363033
                signature:
                  description: Signature for verifying the request.
                  type: string
                  example: >-
                    2193d01d50d4bd5da234ac0e0add5d4ccb40907a1b1ab27a12d2c1d88a5d5807
              type: object
      responses:
        '200':
          description: Payment process initiated successfully.
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: 'true'
                  message:
                    type: string
                    example: Payment process initiated successfully.
                  data:
                    type: object
                    example: ''
                  res:
                    type: object
                    example: ''
                type: object
        '400':
          description: >-
            Country was not found or Niobi user not found or Payment process
            initiation failed.
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: >-
                      Country was not found or Niobi user not found or Payment
                      process initiation failed.
                type: object
        '403':
          description: >-
            Entity integration record not found or Client id not matched or
            Request was not verified.
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: >-
                      Entity integration record not found or Client id not
                      matched or Request was not verified.
                type: object
        '404':
          description: User not found
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: User not found.
                type: object
        '500':
          description: Internal Server Error

````