payware_operations_get_transaction_status
Checks the status of an ACTIVE transaction by ID so you can poll in-progress payments; use transaction history for completed or expired transactions.
Instructions
[Merchant] Get status of an ACTIVE transaction by ID (for completed/expired transactions use transaction history tool).
Endpoint: GET /transactions/{transactionId} Use Case: Check status of ACTIVE transactions only. This endpoint only returns transactions with ACTIVE status. Note: For transactions with final statuses (CONFIRMED, DECLINED, FAILED, EXPIRED, CANCELLED), use 'payware_operations_get_transaction_history' instead.
ā³ ACTIVE can outlast timeToLive. Never infer EXPIRED from the clock. Once the payer's institution has
started the payment (it locks the transaction immediately before the money moves, which you do not see),
the transaction stays ACTIVE past timeToLive until the money has moved: seconds for an instant or
internal transfer, days for a deferred one (a transaction created with deferredAllowed: true). Its
timeToLive then stops at the value it had when the payment started. Keep polling, or wait for the
callback: a transaction is EXPIRED only when payware says so, in the callback or in transaction history,
and one that is no longer returned here has a final status there.
šļø Product-originated transactions carry a nested product object. Since 2026-07-22 the
presentation fields are grouped under product rather than sitting flat on the response - the old
top-level imageUrl is gone. Discriminate a product-originated transaction by the presence of the
object, not by probing individual fields:
{ "transactionId": "pw7e4rCToG", "amount": "57.60", "currency": "EUR",
"product": { "productId": "pr7e4rCToG", "type": "ITEM", "name": "Cotton T-shirt, black",
"shortDescription": "...", "longDescription": "...",
"imageUrl": "https://...", "imageDigest": "9f86d081...", "imageContentType": "image/png",
"imageBytes": 20480, "termsUrl": "https://...", "termsText": "...",
"regularPrice": "63.36", "shippable": false, "quickPay": true, "shopName": "My shop" } }Three things about that object:
imageDigestis an obligation, not decoration. It is the SHA-256 payware pinned for the image atimageUrl. Fetch the image, verify its bytes against this digest before rendering it to a payer, and fall back to a neutral placeholder on mismatch. Present only whenimageUrlis the product's own image.regularPriceis display-only, and appears only when there is a genuine saving - i.e. when it is higher than the transactionamount. The top-levelamountandcurrencyare authoritative and are what the payer pays; the object does not repeat them.Availability follows the merchant's plan.
imageUrlandtermsUrlare Standard and above;termsTextand the descriptions are universal. A missing field is a plan boundary, not an error.
For a pr/ps product identifier the values are resolved live; for the resulting pw transaction
they are the snapshot frozen at creation, so the response always reflects what the payer could have
been shown at scan time.
š° Amounts follow the currency, not a fixed two decimals. amount, fee, payerAmount and
payeeAmount are decimal strings at the smallest unit their own currency can be paid in - none for
JPY, two for EUR, eight for BTC. Parse them with a decimal type; never compare them as strings, and
never assume two places. feeRate carries up to six decimals and feeFixed full stored precision:
both are informational, and recomputing the fee from them and submitting that at finalize is rejected
with ERR_FEE_MISMATCH. Echo fee back unchanged instead.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"transactionId": "<transactionId>"
},
"name": "payware_operations_get_transaction_status"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| partnerId | No | Partner ID from payware dashboard. Can use PAYWARE_PARTNER_ID env var as default. | partner_12345 |
| privateKey | No | RSA private key for JWT token creation. Can use PAYWARE_PRIVATE_KEY_PATH env var as default. | |
| useSandbox | No | Use sandbox environment for testing | |
| transactionId | Yes | Transaction ID to check status for |