payware_operations_simulate_callback
Simulate webhook callback scenarios to generate the payload a merchant callbackUrl receives, enabling you to build and test handlers against real callback shapes and retry behavior.
Instructions
[Merchant] Simulate callback scenarios for testing webhook handling.
Generates the payload a merchant's callbackUrl actually receives, so a handler can be built and
tested against the real shape. Four properties of that shape are easy to get wrong:
1. Absent means absent, not zero. The payload omits properties with no value rather than sending
null or 0. statusMessage, passbackParams, fee, feeFixed and feeRate are all simply
missing when they do not apply. A missing fee means the fee is unknown for that transaction - it
does not mean the transaction was free. Do not write a handler that reads payload.fee as a number
without checking it is there.
2. finalized is absent on EXPIRED. An expired transaction is closed by the platform's expiry
sweep, which sets no finalization moment. Every other status carries one.
3. EXPIRED is a non-payment, not a failure. The payer never paid within timeToLive. Release
the order or the stock, as you would for a cancellation - do not treat it as an error to retry.
4. Deduplicate on (transactionId, callbackType). payware retries a callback up to 15 times,
backing off from about a second to at most 5 minutes between attempts, until the endpoint answers any
2xx. That pair is stable across every retry of the same event, and it is the key payware guarantees.
A handler that does not deduplicate will eventually process one payment twice.
Not on this payload: deliveryAddress (removed 2026-08-07 - fetch it from
payware_operations_get_transaction_history, which is authenticated and tenant-scoped),
producerPartnerId, transactionType and initiatedBy (the last two are carried on
TRANSACTION_PROCESSED, which merchants do not receive).
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_simulate_callback"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fee | No | payware's fee on this transaction plus VAT where it applies, at the currency's smallest payable unit (e.g. '0.29'). The payer's institution transfers it to payware alongside the merchant's payment, and amount is net of it. Not always two decimals - it follows the currency. Pass null to model the anomaly case, where a transaction has no recorded fee and the server OMITS the property entirely; that is deliberately distinguishable from a genuine '0.00'. | |
| poiId | No | Set to simulate a POI sale: the callback then carries the poiId of the POI that created the transaction | |
| amount | No | Transaction amount (e.g., '57.60') | 57.60 |
| feeVat | No | The VAT included in fee (fee minus feeVat is payware's fee excluding VAT), at the same scale; zero when no VAT applies (reverse charge, or a merchant outside the EU). Present exactly when fee is (server TransactionCallbackPayload). Defaults to zero. | |
| status | No | Transaction status to simulate | CONFIRMED |
| feeRate | No | Variable rate of the applicable fee configuration, e.g. '0.0150' = 1.5%. Informational, same as feeFixed. Pass null to model a transaction with no fee configuration. | 0.0150 |
| currency | No | Transaction currency | EUR |
| feeFixed | No | Fixed fee component of the applicable fee configuration, e.g. '0.1000'. Informational, for reconciliation. Present on FINALIZED callbacks since 2026-08-21 - before that a merchant got the total fee but not the breakdown that produced it. Pass null to model a transaction with no fee configuration, where it is omitted. | 0.1000 |
| callbackUrl | No | URL where callback would be sent (for simulation only) | |
| paymentMethod | No | Payment method chosen by customer. A2A = direct transfer. CARD_FUNDED = card-linked account. BNPL = buy now pay later. INSTANT_CREDIT = credit line. | |
| statusMessage | No | Custom status message for the transaction callback | |
| transactionId | Yes | Transaction ID to simulate callback for |