Hosted Accounts

A Hosted Account is an account created by a Merchant for one of their end customers. The merchant remains the legal owner of the account, but it operates on behalf of the customer.

Documentation Index

Fetch the complete documentation index at: https://developer-docs.paga.com/llms.txt Use this file to discover all available pages before exploring further.

Hosted Account Operations

HTTP Basic Authentication

For the requests, you will need to supply authentication credentials, using the HTTP Basic authentication (HTTP basic authentication requires an encoded HTTP header). The authentication credentials are your public key and secret key. Almost all web frameworks will provide a mechanism for supplying HTTP basic authentication credentials per the standard HTTP basic authentication header. See the following articles below for more information

HTTP Basic Authentication (Wikipedia)
HTTP Authentication: Basic and Digest Access Authentication (Specification)


📘

Test Base URL: https://beta-collect.paga.com/
Live Base URL: https://collect.paga.com/

1. Create Hosted Account

This endpoint allows a Merchant to create a Hosted (Delegate) Account on behalf of a customer.


Request Parameter

Parameter

Type

Description

Required?

referenceNumber

String

A unique reference number for this request.
This same reference number will be returned in the response.

Yes

phoneNumber

String

The phone number of the customer. This must be provided if the email is not provided.

No

accountName

String

The account name of the customer.

Yes

firstName

String

The first name of the customer

Yes

lastName

String

The last name of the customer

Yes

iifiNumber

String

The customer's Bank verification Number (BVN)

No

email

String

The email of your customer. This must be provided if the phoneNumber is not provided.

No

accountReference

String

This is a unique reference number provided by the Organization which identifies the persistent payment identifier. It should have a minimum length of 12 characters and a maximum length of 30 characters

Yes

callbackUrl

String

A custom callback URL for the payment webhook notifications for this specific account to be sent to. If provided, requests are sent to this URL exactly as provided. This allows you to set custom query parameters to the URL which you will be provided during webhook notifications for this specific account.

No

fundingDailyLimit

Float

The maximum amount that can be transferred to the Hosted account generated in a day. If an amount greater than the limit is transferred in a day, such transaction will be declined automatically by the senders bank.

fundingTransactionLimit

Float

The maximum amount that can be transferred to the Hosted account generated. If an amount greater than the limit is transferred, such transaction will be declined automatically by the senders bank

No

autosweep.destination

String

Takes two values - "VIRTUAL_ACCOUNT" and "BANK

No

autosweep.bankPublicId

String

If included, this is the public Id of the bank that you want deposits to be transferred directly to for every payment. You can get bank IDs HERE

No

autosweep.accountNumber

String

This must be provided if creditBankId is included in the request payload. It is the bank account number of the bank that you want deposits to be transferred to. This must be a valid account number for the bank specified by creditBankId

No

status

String

Indicates if an account is frozen or not. ACTIVE - unfrozen, DISABLED -frozen. When status=ACTIVE, account can receive funds and all operations are allowed but when status=DISABLED, the account is unable to receive funds and other operations are not allowed on it.
Default Value is active

No

Sample Request and Response

POST /hosted A HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
hash: hashed with SHA-512 algorithm of the appended params containing(referenceNumber + accountReference + iifiNumber + autoSweep.bankPublicId + autoSweep.destination + autoSweep.accountNumber + callbackUrl + hashkey)

{
  "referenceNumber": "REF-100005550002",
  "callbackUrl": "https://example.com/webhook",
  "accountReference": "PAGA-255026-NO-AUTOSWEEP",
  "accountName": "Test Hosted Account",
  "phoneNumber": "08012345678",
  "firstName": "Test",
  "lastName": "Customer",
  "email": "[email protected]",
  "iifiNumber": "22222132329",
  "fundingTransactionLimit": 500000.00,
  "fundingDailyLimit": 2000000.00,
  "status": "ACTIVE",
   "autoSweep": {
    "destination": "BANK",
    "bankPublicId": "7131F94B-C0AC-43FB-BF6A-3407D27F1806",
    "accountNumber": "0073141524"
  }
}
{
    "referenceNumber": "REF-100220777702222222225550002",
    "statusCode": "0",
    "statusMessage": "success",
    "accountNumber": "0750529406",
    "accountReference": "PAGA-20002ww2026-NO-AUTOSWEEP",
    "status": "ACTIVE",
    "balance": 0.0,
    "currency": "NGN"
}

Response Parameter

Argument

Type

Description

referenceNumber

String

The reference number that was provided in the request

statusCode

String

The status of the operation. See Status Codes section for details

statusMessage

String

A human readable status message

accountNumber

String

The Hosted account number for your customer.

accountReference

String

This is a unique reference number provided by the Organization which identifies the persistent payment identifier. It should have a minimum length of 12 characters and a maximum length of 30 characters

status

String

Indicates if an account is frozen or not. ACTIVE - unfrozen, DISABLED -frozen. When status=ACTIVE, account can receive funds and all operations are allowed but when status=DISABLED, the account is unable to receive funds and other operations are not allowed on it.
Default Value is active

balance

String

The hosted account balance

currency

String

The designated currency of the account- only NGN is currently supported.


2. Get Hosted Account

A method to query the properties associated with an existing Hosted Account.

ParameterTypeDescriptionRequired(Yes/No)
referenceNumberStringThe unique reference number representing the update persistent payment identifier request.Yes
accountIdentifierStringThe accountIdentifier can be either the NUBAN or the accountReference the customer provided when creating the accountYes

Sample Request and Response

GET /hosted-accounts/accountIdentifier?referenceNumber=REF-100220022252221hgdsahvfgahjdhjf HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: "Basic RkUxRjlCN0YtQkJDRS00NkEwLTk2ODUtMERDQUU5M0FDMjIyOlBhc3N3b3JkMQ=="
hash: hashed with SHA-512 algorithm of the appended params containing(referenceNumber + accountIdentifier+ hashkey)
{
    "referenceNumber": "REF-100220022252221hgdsahvfgahjdhjf",
    "statusCode": "0",
    "statusMessage": "success",
    "accountNumber": "3859568112",
    "accountReference": "PAGA-255222026-NO-AUTOSWEEP",
    "status": "ACTIVE",
    "balance": 0.0,
    "currency": "NGN",
    "accountName": "Adewale Merchant Bank",
    "phoneNumber": "08012345678",
    "firstName": "Adewale",
    "lastName": "Osobu",
    "email": "[email protected]",
    "iifiNumber": "22222132329",
    "fundingTransactionLimit": 500000.0,
    "fundingDailyLimit": 2000000.0,
    "callBackUrl": "https://example.com/webhook"
}

Parameter

Type

Description

referenceNumber

String

The same unique reference number provided in the request

statusCode

String

Status code of the response. 0 indicates a successful response

statusMessage

String

A human readable status message.

accountNumber

String

The Hosted account number for your customer.

accountReference

String

This is a unique reference number provided by the Organization which identifies the persistent account identifier. It should have a minimum length of 12 characters and a maximum length of 30 characters.

status

String

Indicates if an account is frozen or not. ACTIVE - unfrozen, DISABLED -frozen. When status=ACTIVE, account can receive funds and all operations are allowed but when status=DISABLED, the account is unable to receive funds and other operations are not allowed on it.
Default Value is active

balance

String

The hosted account balance

currency

String

The designated currency of the account- only NGN is currently supported.

accountName

String

The account name of the customer.

phoneNumber

String

The phone number of the customer.

firstName

String

The firstName of the customer.

lastName

String

The lastName of the customer

email

String

The email of your customer. This must be provided if the phoneNumber is not provided.

iifiNumber

String

The customer's Bank verification Number (BVN)

fundingDailyLimit

Float

The maximum amount that can be transferred to the Hosted account generated in a day. If an amount greater than the limit is transferred in a day, such transaction will be declined automatically by the senders bank.

fundingTransactionLimit

Float

The maximum amount that can be transferred to the Hosted account generated. If an amount greater than the limit is transferred, such transaction will be declined automatically by the senders bank

callbackUrl

String

A custom callback URL for the payment webhook notifications for this specific account to be sent to.


3. Update Hosted Account

This endpoint allows for changing any of the Hosted Account properties except the accountNumber (NUBAN) and the accountReference properties which cannot be changed.
Parameters (account properties) other than referenceNumber and accountIdentifier are optional. Any property provided will be updated. Omitted properties will remain as they were.
The accountIdentifier can be either the NUBAN or the accountReference provided when creating the account.


Request Parameter

Parameter

Type

Description

Required?

referenceNumber

String

A unique reference number for this request.
This same reference number will be returned in the response.

Yes

phoneNumber

String

The phone number of the customer. This must be provided if the email is not provided.

No

accountName

String

The account name of the customer.

Yes

firstName

String

The first name of the customer

Yes

lastName

String

The last name of the customer

Yes

iifiNumber

String

The customer's Bank verification Number (BVN)

No

email

String

The email of your customer. This must be provided if the phoneNumber is not provided.

No

accountReference

String

This is a unique reference number provided by the Organization which identifies the persistent payment identifier. It should have a minimum length of 12 characters and a maximum length of 30 characters

Yes

callbackUrl

String

A custom callback URL for the payment webhook notifications for this specific account to be sent to. If provided, requests are sent to this URL exactly as provided. This allows you to set custom query parameters to the URL which you will be provided during webhook notifications for this specific account.

No

fundingDailyLimit

Float

The maximum amount that can be transferred to the Hosted account generated in a day. If an amount greater than the limit is transferred in a day, such transaction will be declined automatically by the senders bank.

No

fundingTransactionLimit

Float

The maximum amount that can be transferred to the Hosted account generated. If an amount greater than the limit is transferred, such transaction will be declined automatically by the senders bank

No

autosweep.destination

String

Takes two values - "VIRTUAL_ACCOUNT" and "BANK

No

autosweep.bankPublicId

String

If included, this is the public Id of the bank that you want deposits to be transferred directly to for every payment. You can get bank IDs HERE

No

autosweep.accountNumber

String

This must be provided if creditBankId is included in the request payload. It is the bank account number of the bank that you want deposits to be transferred to. This must be a valid account number for the bank specified by creditBankId

No

status

String

Indicates if an account is frozen or not. ACTIVE - unfrozen, DISABLED -frozen. When status=ACTIVE, account can receive funds and all operations are allowed but when status=DISABLED, the account is unable to receive funds and other operations are not allowed on it.
Default Value is active

No

Sample Request and Response

PUT /hosted-accounts/accountIdentifier HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: "Basic RkUxRjlCN0YtQkJDRS00NkEwLTk2ODUtMERDQUU5M0FDMjIyOlBhc3N3b3JkMQ=="
hash: hashed with SHA-512 algorithm of the appended params containing(referenceNumber + accountIdentifier + iifiNumber  + autoSweep.destination + autoSweep.bankPublicId + autoSweep.accountNumber + callbackUrl + hashkey)

{
  "referenceNumber": "REF-GET-20260413-002",
  "accountReference": "PAGA-255222026-NO-AUTOSWEEP",
  "accountName": "St Jones School",
  "phoneNumber": "08010000009",
  "firstName": "Segun",
  "lastName": "Ednut",
  "email": "[email protected]",
  "iifiNumber": "22222132325",
  "fundingTransactionLimit": 50000.0,
  "fundingDailyLimit": 200000.0,
  "callbackUrl": "https://webhook.site/d1210f15-894d-4b93-8b8c-d44f63f26ea3",
   "autoSweep": {
    "destination": "BANK",
    "bankPublicId": "7131F94B-C0AC-43FB-BF6A-3407D27F1806",
    "accountNumber": "0073141524"
  },
  "status": "ACTIVE"
}
{
    "referenceNumber": "REF-GET-20260413-002",
    "statusCode": "0",
    "statusMessage": "success",
    "accountNumber": "0750529406",
    "accountReference": "PAGA-20002ww2026-NO-AUTOSWEEP",
    "status": "ACTIVE",
    "balance": 194900.0,
    "currency": "NGN",
    "accountName": "St Jones School",
    "phoneNumber": "08010000009",
    "firstName": "Segun",
    "lastName": "Ednut",
    "email": "[email protected]",
    "iifiNumber": "22222132325",
    "fundingTransactionLimit": 50000.0,
    "fundingDailyLimit": 200000.0,
    "callBackUrl": "https://webhook.site/d1210f15-894d-4b93-8b8c-d44f63f26ea3"
}

Response Parameter

Parameter

Type

Description

referenceNumber

String

The same unique reference number provided in the request

statusCode

String

Status code of the response. 0 indicates a successful response

statusMessage

String

The status of the request, this should just be an
acknowledgement that the request was received.

phoneNumber

String

The phone number of the customer. This must be provided if the email is not provided.

accountName

String

The account name of the customer.

firstName

String

The first name of the customer

lastName

String

The last name of the customer

iifiNumber

String

The customer's Bank verification Number (BVN)

email

String

The email of your customer. This must be provided if the phoneNumber is not provided.

accountReference

String

This is a unique reference number provided by the Organization which identifies the persistent payment identifier. It should have a minimum length of 12 characters and a maximum length of 30 characters

callbackUrl

String

A custom callback URL for the payment webhook notifications for this specific account to be sent to. If provided, requests are sent to this URL exactly as provided. This allows you to set custom query parameters to the URL which you will be provided during webhook notifications for this specific account.

fundingDailyLimit

Float

The maximum amount that can be transferred to the Hosted account generated in a day. If an amount greater than the limit is transferred in a day, such transaction will be declined automatically by the senders bank.

fundingTransactionLimit

Float

The maximum amount that can be transferred to the Hosted account generated. If an amount greater than the limit is transferred, such transaction will be declined automatically by the senders bank

status

String

Indicates if an account is frozen or not. ACTIVE - unfrozen, DISABLED -frozen. When status=ACTIVE, account can receive funds and all operations are allowed but when status=DISABLED, the account is unable to receive funds and other operations are not allowed on it.
Default Value is active

4. Hosted Account Charge(Withdrawal)

This endpoint allows merchant to charge a Hosted account. That is move funds from the Hosted Account to the merchants Account on Paga.

Request Parameter

ArgumentTypeDescriptionRequired (Yes/No)
referenceNumberStringThe unique reference number representing the update persistent payment account request.Yes
amountStringThe amount to be debited from the hosted account and moved to the merchant's position.Yes
currencyStringThe designated currency of the account- only NGN is currently supported.Yes
narrationStringThe description/remark attached to the transaction of the transaction.No

Sample Request and Response

POST /hosted-accounts/accountIdentifier/charge HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: "Basic RkUxRjlCN0YtQkJDRS00NkEwLTk2ODUtMERDQUU5M0FDMjIyOlBhc3N3b3JkMQ=="
hash: hashed with SHA-512 algorithm of the appended params containing(referenceNumber + amount + currency+ narration + hashkey)

{
  "referenceNumber": "REF-20260414-003232363636631",
  "amount": 1000.00,
  "currency": "NGN",
  "narration": "Hosted account Test charge"
}
{
    "referenceNumber": "REF-20260414-003232363636631",
    "statusCode": "0",
    "statusMessage": "success",
    "transactionId": "MPVAT-P_20260610214236118_4577638_JX438_qznml",
    "newBalance": 99000.0
}

Response Parameter

Parameter

Type

Description

referenceNumber

String

The same unique reference number provided in the request

statusCode

String

Status code of the response. 0 indicates a successful response

statusMessage

String

The status of the request, this should just be an
acknowledgement that the request was received.

transactionId

String

The unique transaction ID used to process the transaction

newBalance

Float

The Hosted account balance after the charge/withdrawal

5. Hosted Account Top Up

This endpoint allows a merchant fund a Hosted Account by moving funds from the merchant's position into the Hosted Account.

Request Parameter

ArgumentTypeDescriptionRequired (Yes/No)
referenceNumberStringThe unique reference number representing the update persistent payment account request.Yes
amountStringThe amount to be credited to the hosted account from the merchant's position.Yes
currencyStringThe designated currency of the account- only NGN is currently supported.Yes
narrationStringThe description/remark attached to the transaction of the transaction.No

Sample Request and Response

POST /hosted-accounts/accountIdentifier/topup HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: "Basic RkUxRjlCN0YtQkJDRS00NkEwLTk2ODUtMERDQUU5M0FDMjIyOlBhc3N3b3JkMQ=="
hash: hashed with SHA-512 algorithm of the appended params containing(referenceNumber + amount + currency+ narration + hashkey)

{
  "referenceNumber": "REF-20262636630414-001",
  "amount": 500.00,
  "currency": "NGN",
  "narration": "Hosted account top-up"
}
{
    "referenceNumber": "REF-20260414-003232363636631",
    "statusCode": "0",
    "statusMessage": "success",
    "transactionId": "MPVAT-P_20260610214236118_4577638_JX438_qznml",
    "newBalance": 99000.0
}

Response Parameter

Parameter

Type

Description

referenceNumber

String

The same unique reference number provided in the request

statusCode

String

Status code of the response. 0 indicates a successful response

statusMessage

String

The status of the request, this should just be an
acknowledgement that the request was received.

transactionId

String

The unique transaction ID used to process the transaction

newBalance

Float

The Hosted account balance after topup is completed


6. Hosted Account Transfer

This endpoint allows for transfer/movement of funds from one Hosted account to the other.

Request Parameter

ParameterTypeDescriptionRequired (Yes/No)
referenceNumberStringThe unique reference number representing the update persistent payment account request.Yes
sourceAccountIdentifierStringThis is the accountIdentifier of the Sender's Hosted Account. The accountIdentifier can be either the NUBAN or the accountReference of the customer provided when creating the account.Yes
destinationAccountIdentifierStringThis is the accountIdentifier of the Receiver's Hosted Account. The accountIdentifier can be either the NUBAN or the accountReference of the customer provided when creating the account.Yes
amountStringThe amount to be credited to the hosted account from the merchant's position.Yes
currencyStringThe designated currency of the account- only NGN is currently supported.Yes
narrationStringThe description/remark attached to the transaction of the transaction.No

Sample Request and Response

POST /hosted-accounts/transfer HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: "Basic RkUxRjlCN0YtQkJDRS00NkEwLTk2ODUtMERDQUU5M0FDMjIyOlBhc3N3b3JkMQ=="
hash: hashed with SHA-512 algorithm of the appended params containing(referenceNumber + sourceAccountIdentifier + destinationAccountIdentifier + amount + currency + narration + hashkey)

{
  "referenceNumber": "REF-202160420-021212025555",
  "sourceAccountIdentifier": "0750529406",
  "destinationAccountIdentifier": "3859568112",
  "amount": 1500.00,
  "currency": "NGN",
  "narration": "Transfer between hosted accounts"
}
{
    "referenceNumber": "REF-202160420-021212025555",
    "statusCode": "0",
    "statusMessage": "success",
    "transactionId": "MPVAT-P_20260610230032541_4577650_SMQDM_qznml",
    "source": {
        "accountIdentifier": "0750529406",
        "amount": 1500.0,
        "newBalance": 96500.0
    },
    "destination": {
        "accountIdentifier": "3859568112",
        "amount": 1500.0,
        "newBalance": 3000.0
    }
}

Response Parameter

Parameter

Type

Description

referenceNumber

String

The same unique reference number provided in the request

statusCode

String

Status code of the response. 0 indicates a successful response

statusMessage

String

The status of the request, this should just be an
acknowledgement that the request was received.

transactionId

String

The unique transaction ID used to process the transaction

source.accountIdentifier

String

This is the accountIdentifier of the Sender's Hosted Account. The accountIdentifier can be either the NUBAN or the accountReference of the customer provided when creating the account.

source.amount

String

The amount to be debited from the sender's Hosted Account.

source.newBalance

Float

The sender's Hosted account balance after the sender's account has been debited.

destination.accountIdentifier

String

This is the accountIdentifier of the Receiver's Hosted Account. The accountIdentifier can be either the NUBAN or the accountReference of the customer provided when creating the account.

destination.amount

String

The amount to be credited to the receiver's Hosted Account.

destination.newBalance

Float

The receiver's Hosted account balance after the receiver's account has been credited.

7. Hosted Account Balance

This endpoint allows you retrieve the balance on a hosted account.

Request Parameter

ArgumentTypeDescriptionRequired (Yes/No)
referenceNumberStringThe unique reference number representing the update persistent payment account request.Yes
accountIdentifierStringThe accountIdentifier can be either the NUBAN or the accountReference that was provided when creating the persistent payment accountYes

Sample Request and Response

POST /hosted-accounts/accountIdentifier/balance?referenceNumber=REF-100220022252221hgdsahvfgahjdhjf HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: "Basic RkUxRjlCN0YtQkJDRS00NkEwLTk2ODUtMERDQUU5M0FDMjIyOlBhc3N3b3JkMQ=="
hash: hashed with SHA-512 algorithm of the appended params containing(referenceNumber + accountIdentifier + hashkey)
{
    "referenceNumber": "REF-BAL-12322456",
    "statusCode": "0",
    "statusMessage": "success",
    "accountNumber": "0750529406",
    "accountReference": "0750529406",
    "balance": 98000.0,
    "currency": "NGN",
    "timeStamp": "2026-06-10T22:50:16"
}

Response Parameter

Argument

Type

Description

referenceNumber

String

The same unique reference number provided in the request

statusCode

String

Status code of the response. 0 indicates a successful response

statusMessage

String

The status of the request, this should just be an
acknowledgement that the request was received.

accountNumber

String

The Hosted account number for your customer.

accountReference

String

This is a unique reference number provided by the Organization which identifies the persistent account identifier. It should have a minimum length of 12 characters and a maximum length of 30 characters.

balance

Float

The receiver's Hosted account balance after the receiver's account has been credited.

currency

String

The designated currency of the account- only NGN is currently supported.

timeStamp

String

Timestamp in UTC indicating when the payment request action was performed


8. Hosted Account History

Get history of all activities for a period between to give start and end dates. The period window should not exceed 1 month.

Request Parameter

ArgumentTypeDescriptionRequired (Yes/No)
pageSizeIntegerNumber of records per PagaNo
pageNumberIntegerThe Page Number to be displayedNo
accountIdentifierStringThe accountIdentifier can be either the NUBAN or the accountReference that was provided when creating the persistent payment accountYes
startDateTimeUTCStringA timestamp representing the start of the transaction history request. Range must be less than or equal to 3 monthsYes
endDateTimeUTCStringA timestamp representing the end of the transaction history request. Range must be less than or equal to 3 monthsYes

Sample Request and Response

POST /hosted-accounts/accountIdentifier/history?startDateTimeUTC=2026-06-08T00:00:00&endDateTimeUTC=2026-06-11T23:59:59&pageSize=20&pageNumber=0 HTTP/1.1
Content-Type: application/json
Accept: application/json
Authorization: "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
hash: hashed with SHA-512 algorithm of the appended params containing(accountIdentifier + startDateTime + endDateTime + hashkey)

{
  "referenceNumber" : "12345",
  "startDateTimeUTC" : "2021-01-13T19:15:22",
  "endDateTimeUTC" : "2021-04-13T19:15:22"
}
{
    "referenceNumber": "9e339a1f-9ba3-4036-8756-cba6279f5ec1",
    "statusCode": "0",
    "statusMessage": "success",
    "itemCount": 11,
    "totalItems": 11,
    "totalPages": 1,
    "currentPage": 0,
    "transactions": [
        {
            "transactionType": "CREDIT",
            "amount": 1500.00,
            "transactionDate": "2026-06-11T10:22:16.920",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 900.00,
            "transactionDate": "2026-06-11T10:15:29.337",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 1000.00,
            "transactionDate": "2026-06-11T09:25:46.167",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 100000.00,
            "transactionDate": "2026-06-11T09:13:57.860",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 100000.00,
            "transactionDate": "2026-06-11T09:13:57.860",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 1500.00,
            "transactionDate": "2026-06-10T23:00:32.540",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 1500.00,
            "transactionDate": "2026-06-10T22:33:41.143",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 500.00,
            "transactionDate": "2026-06-10T22:11:00.227",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 1000.00,
            "transactionDate": "2026-06-10T21:42:36.117",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 100000.00,
            "transactionDate": "2026-06-10T21:41:43.287",
            "status": "SUCCESSFUL"
        },
        {
            "transactionType": "CREDIT",
            "amount": 100000.00,
            "transactionDate": "2026-06-10T21:41:43.287",
            "status": "SUCCESSFUL"
        }
    ]
}

Response Parameter

ParameterTypeDescription
statusCodeStringThe status of the operation. See Status Codes section for details
statusMessageStringA human readable status message
itemCountIntegerThe number of actions carried out within in the specified start and end date
totalItemsIntegerThe number of records returned
totalPagesIntegerThe number of pages returned.
currentPageIntegerThe Page number being displayed
transactionsArrayAn array representing all actions carried out within the time window
transactions[].transactionTypeStringThis indicates if the transaction is a "CREDIT" or "DEBIT" transaction.
transactions[].amountDoubleThe amount requested or paid depending of the action carried out.
transactions[].datetimeUTCStringTimestamp in UTC indicating when the transaction was performed
transactions.[].statusStringStatus of the action performed. See documentation on different statuses

Callback Sample

9.Hosted Account Funding Notification

This allows Paga to send to you deposit notifications that occur on a particular account. Execution of this service should trigger payment logic in your system and provide a response including success/fail result to Paga system.

📘

Please take note

The callback notification includes a hash parameter that is hashed using the pre-shared hash-key, so by verifying the hash, you can authenticate that the request came from us (as well as authenticating that the hashed parameters haven’t been tampered with).

Parameter

Type

Description

statusCode

Number

Status code of the response. 0 indicates a successful response

statusMessage

String

Human-readable description
about of response. 'Success'
for a successful response

transactionReference

String

The referenceNumber of the transaction

fundingTransactionReference

String

This represents the unique reference number of a transaction associated with funding a Hosted Account.

fundingPaymentReference

String

The payment reference from the original transfer/payment into the Hosted Account.

accountNumber

String

The Hosted account number for your customer.

accountName

String

The name of the customer that made the transaction

financialIdentificationNumber

String

The customer's Bank verification Number (BVN)

amount

String

The total amount of the transaction

clearingFeeAmount

String

The fee for receiving a payment into a Hosted Account.

payerDetails.paymentReferenceNumber

String

This represents the unique reference number of a transaction associated with funding a Hosted Account.

payerDetails.narration

String

Description provided when funding the account

payerDetails.paymentMethod

String

This represents the payment method used to fund the Hosted account.

payerDetails.payerName

String

This represents the name of the payer funding the Hosted account.

payerDetails.payerBankName

String

This represents the bank name of the payer funding the persistent payment account for payments done via bank transfer.

payerDetails.payerBankAccountNumber

String

This represents the bank account number of the payer funding the Hosted account for payments done via bank transfer.

narration

String

Description provided when funding the account

hash

String

The hash is formed as the SHA-512 hash consisting of the following parameters:  (externalReferenceNumber + transactionReference+ transactionDate + amount + accountNumber + hashKey)

transactionDate

String

Timestamp in UTC indicating when the Transaction was performed

Sample Request and Response

{
  "statusCode": "0",
  "statusMessage": "success",
  "transactionReference": null,
  "fundingTransactionReference": "DFB-U_20260611091357861_4577679_9T94G_qznml",
  "fundingPaymentReference": "IE51X91580508200876009",
  "accountNumber": "0750529406",
  "accountName": "Adewale Merchant Bank",
  "financialIdentificationNumber": "22222132329",
  "amount": 100000,
  "clearingFeeAmount": null,
  "payerDetails": {
    "paymentReferenceNumber": "IE51X91580508200876009",
    "narration": "Checkout Test",
    "paymentMethod": "BANK_TRANSFER",
    "payerName": null,
    "payerBankName": "Access Bank",
    "payerBankAccountNumber": null
  },
  "narration": "Checkout Test",
  "hash": "4ae886566c6552b970a316479b0f378f910b8ade59832b17be004a4e49a90ce721cfe83e5f6acd96194c2d02f7e9457552af7e8bb3450f58fe3c1d0de0b249e2",
  "transactionDate": "2026-06-11T08:13:57.86"
}
{
		"status":"SUCCESS",
}

**Response

Parameter

Type

Description

status

String

The status of the request, this should just be an
acknowledgement that the request was received.


10.Hosted Account Charge Notification

This notification is sent when a charge transaction occurs on the Hosted account.

📘

Please take note

The callback notification includes a hash parameter that is hashed using the pre-shared hash-key, so by verifying the hash, you can authenticate that the request came from us (as well as authenticating that the hashed parameters haven’t been tampered with).

Parameter

Type

Description

event

String

This indicates the type of notification being sent

notification_id

String

This is a unique identifier for each notification request sent.

statusCode

Number

Status code of the response. 0 indicates a successful response

statusMessage

String

Human-readable description
about of response. 'Success'
for a successful response

externalReferenceNumber

String

The referenceNumber of the transaction

transactionType

String

This indicates if the transaction is a "CREDIT" or "DEBIT" transaction.

transactionDate

String

Timestamp in UTC indicating when the Transaction was performed

accountReference

String

This is a unique reference number provided by the Organization which identifies the persistent account identifier. It should have a minimum length of 12 characters and a maximum length of 30 characters.

totalDebitAmount

Float

The total amount debited from the Hosted Account. totalDebitAmount = amount + Fee

fee

String

The fee for processing the charge request

amount

String

The total amount credited to the merchant.

accountNumber

String

The Hosted Account Number for your customer.

hash

String

The hash is formed as the SHA-512 hash consisting of the following parameters:       (externalReferenceNumber + transactionReference+ transactionDate + amount + accountNumber + hashKey)

Sample Request and Response

{
  "event": "HOSTED_ACCOUNT_CHARGE_COMPLETE",
  "notificationId": "57c5a081-b609-4d2c-88d6-0af16b4b8a72",
  "statusCode": "0",
  "statusMessage": "SUCCESS",
  "externalReferenceNumber": "REF-20260414-02203232363636631",
  "transactionType": "DEBIT",
  "transactionDate": "2026-06-11 09:25:46.167",
  "accountReference": "0750529406",
  "totalDebitAmount": 1000,
  "fee": 0,
  "amount": 1000,
  "accountNumber": "0750529406",
  "hash": "7f447d9fce0ae0350d4810a32da0c957152f9ca8990607167a2ed5aea5b6bbc1fc2b383a62ed95b2072c3078b82fe684742cc7f890d6635ecdca59b7b0337a46"
}
{
		"status":"SUCCESS",
}

Response Parameter

Parameter

Type

Description

status

String

The status of the request, this should just be an
acknowledgement that the request was received.


11.Hosted Account Top Up Notification

This notification is sent when top up transaction occurs on the Hosted account.

📘

Please take note

The callback notification includes a hash parameter that is hashed using the pre-shared hash-key, so by verifying the hash, you can authenticate that the request came from us (as well as authenticating that the hashed parameters haven’t been tampered with).

Parameter

Type

Description

event

String

This indicates the type of notification being sent

notification_id

String

This is a unique identifier for each notification request sent.

statusCode

Number

Status code of the response. 0 indicates a successful response

statusMessage

String

Human-readable description
about of response. 'Success'
for a successful response

externalReferenceNumber

String

The referenceNumber of the transaction

transactionType

String

This indicates if the transaction is a "CREDIT" or "DEBIT" transaction.

transactionDate

String

Timestamp in UTC indicating when the Transaction was performed

accountReference

String

This is a unique reference number provided by the Organization which identifies the persistent account identifier. It should have a minimum length of 12 characters and a maximum length of 30 characters.

totalDebitAmount

Float

The total amount from the merchant's position. totalDebitAmount = amount + Fee

fee

String

The fee for processing the top up request

amount

String

The total amount credited into the hosted account.

accountNumber

String

The Hosted Account Number for your customer.

hash

String

The hash is formed as the SHA-512 hash consisting of the following parameters:       (externalReferenceNumber + transactionReference+ transactionDate + amount + accountNumber + hashKey)

Sample Request and Response

{
  "event": "HOSTED_ACCOUNT_TOP_UP_COMPLETE",
  "notificationId": "fe2b8d29-9cc2-47ee-8a83-8be601633b74",
  "statusCode": "0",
  "statusMessage": "SUCCESS",
  "externalReferenceNumber": "REF-2026263663220414-001",
  "transactionType": "CREDIT",
  "transactionDate": "2026-06-11 10:15:29.337",
  "accountReference": "0750529406",
  "totalDebitAmount": 900,
  "fee": 0,
  "amount": 900,
  "accountNumber": "0750529406",
  "hash": "41217fb2081f137f6390c8971e5e6d5c4f6ccb744978780e1b39a04d3bc4b85c4ec1d1962298e6f99dd6991436d8322f39823c985a19c0a81ef3023525b98735"
}
{
		"status":"SUCCESS",
}

Response Parameter

Parameter

Type

Description

status

String

The status of the request, this should just be an
acknowledgement that the request was received.

12. Callback Hash Verification

📘

All the callbacks includes a hash to verify the authenticity of the request:

hash: A SHA-512 HMAC signature of the request payload, computed by concatenating the values of the following fields: externalReferenceNumber, transactionReference, transactionDate, amount, accountNumber.

Verification Steps:

  1. Extract the values of transactionReference, accountNumber, and amount from the incoming payload.
  2. Append the pre-shared hashKey as the final value.
  3. Concatenate the values as a single string - (externalReferenceNumber + transactionReference+ transactionDate + amount + accountNumber + hashKey)
  4. Compute a SHA-512 hash of the concatenated string - SHA512(externalReferenceNumber + transactionReference+ transactionDate + amount + accountNumber + hashKey)
  5. Compare the result against the value of hash in the request payload received. If they match, the request is authentic.