Skip to main content
GET
/
lbms-ingress
/
transaction-lm
/
API
/
Transaction
/
PollTransactionBatchStatus
Poll Batch Status
curl --request GET \
  --url https://loyalife-api.xoxoday.in/lbms-ingress/transaction-lm/API/Transaction/PollTransactionBatchStatus \
  --header 'Authorization: Bearer <token>'
{
  "results": {
    "IsSucessful": true,
    "ErrorCode": "000",
    "ExceptionMessage": "Success",
    "ReturnObject": {
      "batch_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "summary": {
        "total": 5,
        "success": 3,
        "failed": 1,
        "pending": 0,
        "on_hold": 1,
        "partial_hold": 0
      },
      "results": [
        {
          "request_id": "req-001",
          "status": "SUCCESS",
          "points": 150,
          "message": "Points awarded"
        },
        {
          "request_id": "req-002",
          "status": "FAILED",
          "error": "Invalid product code"
        },
        {
          "request_id": "req-003",
          "status": "ON HOLD",
          "message": "Points hold enabled — pending review"
        }
      ]
    },
    "Count": 0
  }
}

Documentation Index

Fetch the complete documentation index at: https://help-loyalife.xoxoday.com/llms.txt

Use this file to discover all available pages before exploring further.

Checks the processing status of a transaction batch submitted via Insert Transaction V2. Since V2 processing is asynchronous, your system must poll this endpoint until summary.pending reaches 0 to confirm all transactions have been evaluated. The response includes per-item outcomes so you can identify and handle any failures or holds individually. Use exponential backoff when polling to avoid rate limits.

Responses

PathTypeDescription
results.IsSucessfulbooleantrue
results.ReturnObject.batch_idstringThe batch UUID
results.ReturnObject.summary.totalintegerTotal transactions in batch
results.ReturnObject.summary.successintegerSuccessfully processed
results.ReturnObject.summary.failedintegerFailed count
results.ReturnObject.summary.pendingintegerStill processing — keep polling while > 0
results.ReturnObject.summary.on_holdintegerHeld for review
results.ReturnObject.summary.partial_holdintegerPartially awarded, remainder on hold
results.ReturnObject.results[].request_idstringPer-transaction reference
results.ReturnObject.results[].statusstringSUCCESS | FAILED | ON HOLD | PARTIAL HOLD | PENDING
results.ReturnObject.results[].pointsintegerPoints awarded — present for SUCCESS and PARTIAL HOLD
results.ReturnObject.results[].messagestringHuman-readable status message
results.ReturnObject.results[].errorstringError reason — present for FAILED only

Per-Item Status Values

StatusFields PresentMeaning
SUCCESSpoints, messageFully processed. points reflects the awarded amount.
FAILEDerrorProcessing failed. error contains the reason — check program logs for the request_id.
ON HOLDmessageThe Points Hold feature or an Anomaly Detection threshold is configured for your program. No points are awarded until the hold is reviewed and released in Loyalife Admin.
PARTIAL HOLDpoints, messageA transaction generated multiple reward events. Some were awarded immediately (points reflects those); the remainder are held because Points Hold or Anomaly Detection is active. Held rewards release after admin review.
PENDINGmessageStill processing. Poll again — use exponential backoff until no items remain in PENDING.
Keep polling until summary.pending === 0. Items in PENDING state are not yet finalized.

Authorizations

Authorization
string
header
required

JWT obtained from Generate Auth Token. Pass as Authorization: bearer {token}.

Query Parameters

pintProgramId
integer
required

Your loyalty program ID

Example:

19

batch_id
string<uuid>
required

UUID returned by InsertTransactionDataV2

Example:

"a1b2c3d4-e5f6-7890-abcd-ef1234567890"

Response

200 - application/json

Batch status

results
object