1. Bill Payments
Almara Pay Documentation
  • Introduction
  • Definitions
    • Data Types
    • Error Codes
    • MCCMNC Codes
  • Authorization
    • Overview
    • Token Request
      POST
    • Find Transaction Routes
      GET
    • Health Check
      GET
  • Payouts
    • Overview
    • Payment Order Request Information
    • Mobile Money Requests
      • Overview
      • Mobile Transfers- Safaricom (M-Pesa)
      • Mobile Transfers - Airtel Money
    • Payment Order Requests - Business Transfers
      POST
    • Payment Order Requests - Bank Transfers
      POST
    • Find Payment Order By OriginatorConversationId
      GET
    • Reject Order By OriginatorConversationId
      POST
  • Pay-Ins
    • Payment Links
      • Overview
      • Create Payment Link
      • Find Payment Links By Id
      • Update Payment Link
    • Express Deposits
      • Overview
      • Express Deposit Request
      • Find Express Deposit By OriginatorConversationId
    • C2B IPN (Callback)
      • C2B IPN Overview
  • Card Payments
    • Overview
    • Checkout Order Request
    • Query Checkout Request
    • Checkout Callback Request
  • Account Validation
    • Overview
    • Account Number Validation Request
    • Find KYC Status by SystemTraceAuditNumber
    • Account Validation
    • Find Account Validation Status by SystemTraceAuditNumber
  • Platform Services
    • Airtime Purchase
      • Overview
      • Airtime Purchase
      • Find Airtime Purchases By OriginatorConversationId
    • Customer Accounts
      • Balance Check
      • Find Charges By TransactionTypeId
    • Bill Payments
      • Overview
      • Bill Request Validation
        POST
      • Bill Request Payment
        POST
      • Find Bill Services
        GET
      • Find Bill Number By Service Id and Account Number
        GET
      • Find Bill Request By Originator Converstion Id
        GET
      • Bill Number
        POST
  1. Bill Payments

Bill Request Payment

POST
/v1/bill-payments
This is a POST request that is responsible for initiating a Bill Request Payment.
A callback is returned after a succesful request, find a sample callback below.
Note: The transactionType for this endpoint is 2
Note: A valid token is required for authentication as it expires after every hour. Refer to Token Request to generate a new token.

Sample request#

{
    "routeId": "068d89af-be67-f011-bb46-0e7d952d79b7",
    "ServiceId": "bc97d2b1-4828-f111-bc5a-0e7d952d79b7",
    "accountNumber": "1111111",
    "transactionType": 2,
    "transactionDesc": "Bill Payment NEW",
    "originatorConversationId": "{{$guid}}",
    "msisdn": "254710000000",
    "narration": "Testing",
    "amount": 15,
    "customerNames": "IRINA MUTHONI",
    "countryCode": "KE",
    "currencyCode": "KES",
    "saveBillerNumber": true,
    "callBackUrl": "https://bright-sparrow-356.webhook.cool"
}

Sample success response:#

{
    "message": {
        "appDomainName": "LIVE",
        "remarks": "Bill Payment submission accepted",
        "originatorConversationId": "J88TYG1SB3MAN64GYOQU",
        "systemConversationId": "7f520000-0e89-0ee0-e237-08d992be8d55",
        "timestamp": "2021-10-19T05:08:56.4798511Z",
        "dueDate": "-1",
        "dueAmount": -1.0,
        "currency": "KES",
        "customerName": "",
        "active": "Unknown",
        "statusCode": -1,
        "statusDescription": "Bill Payment submission accepted"
    }
}

Sample success callback response:#

{
  "originatorConversationId": "eb9d3597-1e6b-4339-8ce0-4c21532008be",
  "systemConversationId": "01000000-005c-0a00-9a73-08de9e9b1b7c",
  "accountNumber": "111832",
  "accountCustomerName": null,
  "msisdn": "254710000000",
  "amount": 220.00,
  "currencyCode": "KES",
  "countryCode": "KE",
  "narration": "QA Test",
  "dueDate": null,
  "dueAmount": 0.00,
  "savebillNumber": false,
  "callbackUrl": "https://bright-sparrow-35.webhook.cool",
  "billService": {
    "serviceId": "860a26ce-4828-f111-bc5a-0e7d952d79b7",
    "serviceCategory": 2,
    "serviceCategoryDescription": "ELECTRICITY",
    "serviceType": 2,
    "serviceTypeDescription": "KPLC POSTPAID"
  },
  "billRequestOutcome": {
    "status": 4,
    "statusDesc": "Completed",
    "responseCode": "0",
    "responseDesc": "000 - Success",
    "resultCode": "0",
    "resultDesc": "000 - Success",
    "thirdPartyPayload": {
      "responseCode": "0",
      "responseDesc": "000 - Success",
      "reference": "S575998",
      "extraData": {
        "RequestExtraData": null,
        "ResponseExtraData": null
      }
    }
  }
}
The json body contains :

serviceId: This is a number that represents the different services available. Check the table Services for the list of service Ids
accountNumber: Account number reference for pay bill transactions.
transactionType: For this endpoint its 2
msisdn: This is the mobile number of the customer doing the payment
transactionDesc: This is a brief description of the payment.
originatorConversationId: This is a unique identifier for each transaction.
amount: This is the bill amount to be paid.
customerNames: This is the customer who is making the bill payment.
countryCode: This is the country type of the bill, e.g. KE, US
currencyCode: This is the currency type of the bill, e.g KSH, USD
saveBillerNumber: This is a boolean that is set to save the payer's mobile number.
callBackUrl: This is your callback url.

Data definition#

Field NameData TypeOptions
serviceId
integer
Mandatory for all Transaction Types
accountNumber
string
Mandatory for all Transaction Types
msisdn
string
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)
transactionDesc
string
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)
originatorConversationId
string
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)
amount
integer
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)
customerNames
string
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)
countryCode
string
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)
currencyCode
string
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)
saveBillerNumber
boolean
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)
callBackUrl
string
Optional for Transaction Type 1 (Query Bill), 3 (Validate Account). Mandatory for Transaction Type 2 (Post Payment)

Request

Authorization
Body Params application/json

Examples

Responses

🟢200Success
application/json
Body

Request Request Example
Shell
JavaScript
Java
Swift
curl --location --request POST '/v1/bill-payments' \
--header 'Content-Type: application/json' \
--data-raw '{
    "serviceCode": "string",
    "accountNumber": "string",
    "transactionType": 0,
    "transactionDesc": "string",
    "originatorConversationId": "string",
    "msisdn": "string",
    "narration": "string",
    "amount": 0,
    "customerNames": "string",
    "countryCode": "string",
    "currencyCode": "string",
    "saveBillerNumber": true,
    "callBackUrl": "http://example.com"
}'
Response Response Example
{
    "message": {
        "appDomainName": "TEST",
        "remarks": "Bill Payment submission accepted",
        "originatorConversationId": "d695e5e7-8a3e-4d60-aae3-731bb81f95d1",
        "systemConversationId": "01000000-0011-0a00-e628-08de96df5787",
        "timestamp": "2026-04-10T08:58:32.9219936Z",
        "dueDate": null,
        "dueAmount": 0,
        "currency": "KES",
        "accountCustomerName": "",
        "active": "Unknown",
        "responseCode": null,
        "responseDesc": null
    }
}
Modified at 2026-04-30 05:53:25
Previous
Bill Request Validation
Next
Find Bill Services
Built with