Skip to main content
GET
/
transactions
/
{id}
Get transaction
curl --request GET \
  --url https://api.palpluss.com/v1/transactions/{id} \
  --header 'Authorization: Basic <encoded-value>'
{
  "success": true,
  "data": {
    "transactionId": "fa98a577-95ea-4a8f-8467-1fbe74f5d6f4",
    "tenantId": "b6fbe75f-ce87-4d44-b318-6cfdb8b7de4d",
    "type": "STK",
    "status": "SUCCESS",
    "amount": 1000,
    "currency": "KES",
    "phone": "254712345678",
    "channelId": null,
    "accountReference": "INV-2024-001",
    "transactionDesc": "Payment for invoice #2024-001",
    "provider": "m-pesa",
    "providerRequestId": "29115-34620561-1",
    "providerCheckoutId": "ws_CO_191220191020363925",
    "resultCode": "0",
    "resultDesc": "The service request is processed successfully.",
    "createdAt": "2026-03-01T08:00:00.000Z",
    "updatedAt": "2026-03-01T08:01:30.000Z"
  },
  "requestId": "c1b2a3d4-0000-0000-0000-000000000000"
}
Retrieve a transaction by ID. Use this to confirm status, display details, or reconcile payments.
Use webhooks as your primary mechanism for receiving payment results. Poll this endpoint only when webhook delivery has failed.

When to use this endpoint

  • Confirm final status when webhooks are unavailable
  • Display transaction details in your application
  • Reconcile payments against internal records

Response fields

FieldTypeDescription
transaction_idstringTransaction UUID
typestringSTK or B2C
statusstringCurrent status — see transaction lifecycle
amountnumberTransaction amount in KES
currencystringAlways "KES"
phone_numberstringNormalised phone (254XXXXXXXXX)
external_referencestring | nullYour accountReference or reference
transaction_feenumberService wallet fee charged. Returned for PENDING and SUCCESS only — 0 for all other statuses.
provider_request_idstring | nullProvider request reference
provider_checkout_idstring | nullProvider checkout / conversation ID
result_codestring | nullProvider result code
result_descstring | nullProvider result description
created_atstringISO 8601 timestamp
updated_atstringISO 8601 timestamp

Polling strategy

After initiating an STK Push:
  1. Wait 15 seconds — most customers respond within this window.
  2. Poll every 10 seconds while status is PENDING or PROCESSING.
  3. Stop when a terminal state is reached: SUCCESS, FAILED, CANCELLED, or REVERSED.
  4. After 5 minutes without a terminal state, treat the transaction as likely failed.
Excessive polling consumes your rate limit. For real-time results, use webhooks.

Authorizations

Authorization
string
header
required

Use your API key as the username. Leave the password field empty.

Authorization: Basic <base64(apikey:)>

You can also pass the raw API key:

Authorization: Basic <apikey>

Path Parameters

id
string<uuid>
required

The transaction ID returned when the payment was initiated.

Response

Transaction details.

success
boolean
required
Example:

true

data
object
required

Response payload. Shape varies by endpoint.

requestId
string<uuid>
required

Unique identifier for this API request. Include in support tickets.

Example:

"c1b2a3d4-e5f6-7890-abcd-ef1234567890"