Skip to main content

Introduction

This document provides information about the Muda Payments API endpoints that are available for third-party integration. The API allows you to process payments, check balances, and manage transactions.


Authentication

The Auth Token method is used to authenticate a client to the New Age platform. The client provides their secret key and API key to receive an access token. This token is used for subsequent requests to the platform.

All API requests (except for login) require authentication using a JWT token. The token should be included in the Authorization header as a Bearer token.

Authorization: Bearer <your_jwt_token>

Base URL

https://api.muda.tech/v1

Muda Pay API Endpoints

Get Products

Get available payment products and their configurations.

Method: GET
Endpoint: /v1/payment/products

Response Example:

{
"status": 200,
"message": "products",
"data": [
{
"product_id": 10011,
"product_name": "Mobile Money push",
"product_code": "MOBILE_MONEY",
"transaction_type": "PUSH",
"status": "active",
"currency": "UGX",
"provider_fee": "1500.00",
"fee_type": "FLAT",
"fee_amount": "2000.0",
"requires_extra_data": 0,
"has_c_account": "no",
"min_amount": 500,
"max_amount": 2000000,
"created_at": "2025-02-17T12:31:44.000Z"
},
{
"product_id": 10012,
"product_name": "Mobile Money pull",
"product_code": "MOBILE_MONEY",
"transaction_type": "PULL",
"status": "active",
"currency": "UGX",
"provider_fee": "1.00",
"fee_type": "PERCENTAGE",
"fee_amount": "1.5",
"requires_extra_data": 0,
"has_c_account": "yes",
"min_amount": 500,
"max_amount": 2000000,
"created_at": "2025-02-17T12:31:44.000Z"
},
{
"product_id": 20011,
"product_name": "INTERACT Payouts",
"product_code": "INTERAC",
"transaction_type": "PUSH",
"status": "active",
"currency": "CAD",
"provider_fee": "2.00",
"fee_type": "FLAT",
"fee_amount": "2.0",
"requires_extra_data": 1,
"has_c_account": "no",
"min_amount": 1,
"max_amount": 2000000,
"created_at": "2025-02-17T12:31:44.000Z"
}
]
}

Authentication

Get access token using API credentials.

Method: POST
Endpoint: /v1/clients/oauth/token

Request Example:

{
"secret_key": "live_sec-ea22c631-6217-4bb5-8b52-5fe479c8fef44b63ee0a-cc65-4a41-a043-8aae0d5496dc",
"api_key": "live_key-98abb870-15d6-4ff1-b113-8897fcf2ef98"
}

Response Example:

{
"status": 200,
"message": "success",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnRJZCI6MTA4MTkwMzMsInVzZXJJZCI6ImxpdmVfa2V5LTk4YWJiODcwLTE1ZDYtNGZmMS1iMTEzLTg4OTdmY2YyZWY5OCIsImFwaUtleSI6ImxpdmVfa2V5LTk4YWJiODcwLTE1ZDYtNGZmMS1iMTEzLTg4OTdmY2YyZWY5OCIsInVzZXIiOiJBUEkiLCJyb2xlIjoiQVBJIiwiaWF0IjoxNzUyNjY4NDIwLCJleHAiOjE3NTI3MTE2MjB9._OxwJZiAksVQwB07tAPz024TagCluhQ6zMq7VSyBlmI",
"token_type": "Bearer",
"expires_in": 7200
}
}

Validate Request

Validate payment request before processing.

Method: POST
Endpoint: /v1/payment/validate-request

Request Example:

{
"reference_id":"abc12345678990",
"amount": 1000,
"trans_type":"PUSH",
"currency":"UGX",
"product_id":"10012",
"account_number":"256787719618"
}

Direct Payout

Send money to a recipient.

Method: POST
Endpoint: /v1/payment/direct-payout

Request Example:

{
"reference_id": "1234596789454380r06043459",
"amount": 5,
"trans_type": "PUSH",
"currency": "CAD",
"product_id": 20011,
"account_number": "mbonyeemma@myfx.ca",
"extra_data": {
"interact_email": "mbonyeemma@myfx.ca",
"interact_name": "mbonye emmanuel"
}
}

Response Example:

{
"status": 400,
"message": "Insufficient balance"
}

Direct Collection

Pull money from an account.

Method: POST
Endpoint: /v1/payment/direct-collection

Request Example:

{
"reference_id": "mda734596745430r064359",
"amount": 1000,
"trans_type": "PULL",
"currency": "UGX",
"product_id": 10012,
"account_number": "256704243736",
"phone":"256787719618",
"extra_data": {
"interact_email": "cashtella@myfx.ca",
"interact_name": "cashtella"
}
}

Response Example:

{
"status": 200,
"message": "Transaction created successfully",
"data": {
"trans_id": "2e223585-8e65-4c9d-9f2a-caa7bd04faed",
"reference_id": "mda734596745430r064359"
}
}

Get Transaction by Reference ID

Get transaction details using reference ID.

Method: GET
Endpoint: /v1/payment/transactionReferenceId/{reference_id}

Response Example:

{
"status": 200,
"message": "success",
"data": {
"trans_id": "2e223585-8e65-4c9d-9f2a-caa7bd04faed",
"client_id": "10368890",
"service_name": "MOBILE_MONEY",
"product_id": "10012",
"trans_type": "PULL",
"reference_id": "ynwgvEdi7G",
"amount": "500.00",
"currency": "UGX",
"sender_account": "256787719618",
"receiver_account": "10368890",
"status": "SUCCESS",
"fee": "10.00",
"created_at": "2025-06-27T09:07:10.000Z",
"narration": "c946821a-72bb-4637-baaf-923c20148a8d"
}
}

Liquidity Rail API Endpoints

Get All Services

Get enabled services information.

Method: GET
Endpoint: /accounts/services

Response Example:

[
{
"provider_service_id": 1,
"service_id": 1000,
"provider_id": 1,
"min_amount": 10,
"max_amount": 5000000,
"name": "Muda Ltd",
"created_at": "2024-04-11T10:34:19.000Z",
"approval_status": "active",
"rates_endpoint": "https://dev-api.muda-v2.com/getRate",
"auto_id": 1,
"service_code": "MOBILE_MONEY",
"service_name": "MOBILE MONEY",
"country": "UG",
"currency": "UGX",
"provider_type": "mobile"
}
]

Get Rate

Get currency pairs exchange rate.

Method: POST
Endpoint: /accounts/getRate

Request Example:

{
"symbol": "USDT",
"currency": "KES",
"amount": 300,
"provider_id": 1
}

Response Example:

{
"status": 200,
"message": "success",
"data": {
"from": "USDT",
"to": "KES",
"value": 39209.67,
"fiatAmount": 39209.67,
"transactionAmount": "38821.46",
"cryptoAmount": 300,
"fee": "388.21"
}
}

Get Providers

Get a list of available service providers.

Method: POST
Endpoint: /accounts/providers

Request Example:

{
"asset_code":"USDT",
"currency":"UGX"
}

Response Example:

[
{
"provider_service_id": 1,
"service_id": 1000,
"provider_id": 1,
"min_amount": 0,
"max_amount": 100000,
"name": "Muda Ltd",
"created_at": "2024-04-11T10:34:19.000Z",
"approval_status": "active",
"rates_endpoint": "https://dev-api.muda-v2.com/getRate",
"auto_id": 1,
"service_code": "MOBILE_MONEY",
"service_name": "MOBILE MONEY",
"country": "UG",
"currency": "UGX",
"provider_type": "mobile",
"rate": 3712.03
}
]

Generate Quote

Request a transaction quote.

Method: POST
Endpoint: /accounts/generateQuote

Request Example:

{
"provider_id": 1,
"reference_id": "REF987654321",
"asset_code": "USDT",
"receive_currency": "UGX",
"send_amount": 400.0,
"service_id": 1000,
"payment_method_id": "103382b71a39341f18c05d8fa86476efc",
"source": "exchange",
"sending_address": "TXYZabc1234567890address",
"company_id": 2
}

Response Example:

{
"status": 200,
"message": "Transaction record saved",
"data": "d523ad72c89940e5bb6091518c91c413"
}

Get Transaction

Get the transaction details.

Method: GET
Endpoint: /accounts/getTransaction/{id}

Response Example:

{
"status": 200,
"message": "success",
"data": {
"id": 72,
"transId": "d523ad72c89940e5bb6091518c91c413",
"provider_id": 2,
"company_id": 30,
"send_asset": "CUSD",
"send_amount": "10",
"receive_currency": "UGX",
"receive_amount": 35576,
"ex_rate": "3557.6205",
"account_number": "+256774343545",
"service_id": 1000,
"receiver_address": "0x6B407778C199987EFbD6470e34050b5588959B00",
"pay_in_status": "PENDING",
"status": "PENDING",
"sending_address": "0x8968cf62c9d951781065e4e18a9a40c08f7a6801",
"response_body": null,
"reason": null,
"created_on": "2025-03-25T12:26:53.000Z",
"bank_name": "",
"bank_code": "",
"provider_ref_id": "d523ad72c89940e5bb6091518c91c413",
"provider_address": "0x6B407778C199987EFbD6470e34050b5588959B5d",
"provider_memo": "",
"fee": "1425.954",
"narration": null,
"hash": null,
"name": "Kotani",
"created_at": "2024-04-11T10:34:19.000Z",
"approval_status": "active",
"rates_endpoint": null,
"auto_id": 1,
"service_code": "MOBILE_MONEY",
"service_name": "MOBILE MONEY",
"country": "UG",
"currency": "UGX",
"provider_type": "mobile"
}
}

Cancel Quote

Cancel a quote request.

Method: GET
Endpoint: /accounts/cancelQuote/{id}

Response Example:

{
"status": 200,
"message": "Quote cancelled"
}

Get Pending Quotes

Retrieve all pending quotes for the authenticated account.

Method: GET
Endpoint: /accounts/getPendingQuotes

Response Example:

[
{
"quote_id": "q1234567890",
"send_asset": "USDT",
"receive_currency": "UGX",
"send_amount": 100,
"receive_amount": 370500,
"status": "PENDING",
"created_at": "2024-05-16T12:00:00Z"
},
{
"quote_id": "q0987654321",
"send_asset": "USDC",
"receive_currency": "KES",
"send_amount": 50,
"receive_amount": 6500,
"status": "PENDING",
"created_at": "2024-05-16T12:05:00Z"
}
]

Payment Methods

See the Payment Methods section in the sidebar for details on adding, retrieving, and managing payment methods.