Transactions

Effortlessly Track and Verify Transactions with our API. Simplify the process of checking transaction details with our comprehensive API solution. Easily retrieve and verify transaction information, including payment status, amounts, and timestamps.


GET{{HOST}}/transactions?page=1&status=success&date=2025-02-29&type=cashIn

All Transactions

This is especially true when there's no message body to include. Hashing only the Project Key ensures a level of authentication between the client and the server.

  • Name
    page
    Type
    mandatory
    Description

    Default: 1

  • Name
    status
    Type
    mandatory
    Description

    'pending', 'success' .Default: 'success'

  • Name
    date
    Type
    mandatory
    Description

    Default: today with format Y-m-d

  • Name
    type
    Type
    mandatory
    Description

    'cashIn'/'receive', 'cashOut'/'send'


Request And Response All Transactions

# Signature 98Pays All Transactions For PHP Code
$xSignature =  hash_hmac('sha512',  $ClientKey, $ClientToken)

All Transactions

POST
{{HOST}}/transactions?page=1&status=success&date=2025-02-29&type=cashIn
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => '{{HOST}}/transactions?page=1&status=success&date=2025-02-29&type=cashIn',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
    'X-Client-Key: ',
    'X-Client-Token: ',
    'X-Signature: '
    ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

Response All Transactions

POST
{{HOST}}/transactions?page=1&status=success&date=2025-02-29&type=cashIn
{
    "responseCode": 200,
    "responseMessage": "success",
    "responseData": [
        {
            "id": "repellendus",
            "merchantRef": "nisi",
            "status": "pending",
            "feePayer": "merchant",
            "amount": 5930000,
            "fee": 3942077,
            "totalAmount": 5930000,
            "expiredDate": "2023-10-09T23:59:59+07:00",
            "paidDate": null,
            "settleDate": "2023-10-09T13:38:37+07:00",
            "additionalInfo": {
                "callback": null
            },
            "disbursement": {
                "bankCode": null,
                "recipientAccount": "5443020792443311",
                "recipientName": "Mr. Deangelo Robel IV"
            }
        },
        {
            "id": "dolorum",
            "merchantRef": "et",
            "status": "pending",
            "feePayer": "customer",
            "amount": 7420000,
            "fee": 4783777,
            "totalAmount": 12203777,
            "expiredDate": "2023-10-09T23:59:59+07:00",
            "paidDate": null,
            "settleDate": "2023-10-09T13:38:37+07:00",
            "additionalInfo": {
                "callback": null
            },
            "disbursement": {
                "bankCode": null,
                "recipientAccount": "4716296795643486",
                "recipientName": "Darrick Rath V"
            }
        }
    ],
    "responseExtra": {
        "currentPage": 1,
        "totalPages": 1,
        "totalRecords": 2
    }
}

GET{{HOST}}/check/:id?resendCallback=true

Check Single Transaction

This is especially true when there's no message body to include. Hashing only the Project Key ensures a level of authentication between the client and the server.

  • Name
    resendCallback
    Type
    opsional
    Description

    true/false, Determine we need to resend you the callback

  • Name
    id
    Type
    mandatory
    Description

    Transaction ID or Merchant Ref

Request And Response Check Single Transaction

# Signature 98Pays Check Balance For PHP Code
$xSignature =  hash_hmac('sha512',  $ClientKey, $ClientToken)

Request Check Single Transaction

GET
{{HOST}}/check/:id?resendCallback=true
<?php
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => '{{HOST}}/check/55612dbap-fb6a-4c4b-bc99-0928ca398a9d?resendCallback=true',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
    'X-Client-Key: ',
    'X-Client-Token: ',
    'X-Signature: '
    ),
));

$response = curl_exec($curl);
curl_close($curl);
echo $response;

Response Check Single Transaction

POST
{{HOST}}/check/:id?resendCallback=true
{
    "responseCode": 200,
    "responseMessage": "success",
    "responseData": {
        "id": "55612dbap-fb6a-4c4b-bc99-0928ca398a9d",
        "merchantRef": "REF12",
        "status": "pending",
        "feePayer": "customer",
        "amount": 10000,
        "fee": 3000,
        "totalAmount": 13000,
        "expiredDate": "2023-07-13T11:51:41+07:00",
        "additionalInfo": {
            "callback": "http://your-site-callback.com/notify"
        },
        "virtualAccount": {
            "bankCode": "014",
            "vaNumber": "666555440021",
            "viewName": "Merchant Name"
        }
    }
}

POST{{HOST}}/v1/transactions/status

Check Transaction Status

Retrieves transaction statuses in real time for one or more unique 98Pays transaction references.

  • Name
    partnerReferenceNo
    Type
    mandatory | array<string>
    Description

    One or more unique 98Pays transaction reference numbers. Duplicate values are not allowed.

$body = [
    'partnerReferenceNo' => [
        'TF_260409_IVCIMD1MTO6MCRA5HMYI',
    ],
];
$xSignature = hash_hmac(
    'sha512',
    $clientKey . json_encode($body),
    $clientToken,
);

Check Transaction Status

POST
{{HOST}}/v1/transactions/status
curl --request POST '{{HOST}}/v1/transactions/status' \
  --header 'Content-Type: application/json' \
  --header 'X-Client-Key: &lt;PROJECT_KEY&gt;' \
  --header 'X-Client-Token: &lt;PROJECT_TOKEN&gt;' \
  --header 'X-Signature: &lt;HMAC_SHA512_SIGNATURE&gt;' \
  --data '{
    "partnerReferenceNo": [
      "TF_260409_IVCIMD1MTO6MCRA5HMYI"
    ]
  }'

Response

200
application/json
{
  "code": "OK",
  "message": "Transaction status retrieved successfully.",
  "data": [
    {
      "partnerReferenceNo": "TF_260409_IVCIMD1MTO6MCRA5HMYI",
      "transactionId": "26ffe58b-331c-4b25-947d-21e39dddb320",
      "amount": 150000,
      "total_amount": 150000,
      "status": "SUCCESS",
      "paid_at": "2026-04-09T09:02:15Z",
      "payout_at": "2026-04-09T09:05:00Z"
    }
  ]
}

Response fields

  • Name
    partnerReferenceNo
    Type
    string
    Description
    The requested 98Pays reference number.
  • Name
    transactionId
    Type
    string
    Description
    Internal transaction identifier.
  • Name
    amount
    Type
    integer
    Description
    Transaction amount in the smallest IDR unit.
  • Name
    total_amount
    Type
    integer
    Description
    Final transaction amount after applicable fees.
  • Name
    status
    Type
    string
    Description
    Current transaction status, returned in uppercase.
  • Name
    paid_at
    Type
    string | null
    Description
    Payment timestamp in UTC ISO 8601 format.
  • Name
    payout_at
    Type
    string | null
    Description
    Payout processing timestamp in UTC ISO 8601 format.

Was this page helpful?