In the case that there is a failed step in the sequence of a standing order (i.e. at the swap or withdrawal step), the following webhooks notify you of the failed step and a reason if available. In most cases you might simply have to call the "Resume Standing Order" API or the user may be ineligible for a withdrawal due to their KYC tier.
- Standing order failed during on-chain withdrawal -
{
"uid": "99fc021c-7d1a-4153-8bf2-e424bba0f786",
"type": "STANDING_ORDER_FAILED",
"sourceSyncedOwnerId": "b6510927-8e7f-4cdb-95c5-27157318b3f1",
"standingOrderId": "20d56f38-0dfc-44d0-a7b5-58b13cc72923",
"standingOrderDirection": "FIAT_TO_CRYPTO",
"standingOrderSpanId": "285621ee-e02a-485d-a39f-988fa39dd8e8",
"failureType": "ON_CHAIN_WITHDRAWAL_FAILED",
"ts": 1756992255311
}- Standing order failed during SEPA withdrawal -
{
"uid": "99225580-59fb-47c2-a87c-6e2aa48d6150",
"type": "STANDING_ORDER_FAILED",
"sourceSyncedOwnerId": "b6510927-8e7f-4cdb-95c5-27157318b3f1",
"standingOrderId": "7fbd5c59-8cd3-48a3-9937-a1a948dac9d1",
"standingOrderDirection": "CRYPTO_TO_FIAT",
"standingOrderSpanId": "1f486cbc-57c8-4ae4-8a0c-9599d9a4953c",
"failureType": "SEPA_WITHDRAWAL_FAILED",
"ts": 1756992421918
}- Standing order failed due to user limit exceeded -
{
"uid": "2440be48-0005-497c-801d-cf6dfe814084",
"type": "STANDING_ORDER_FAILED",
"sourceSyncedOwnerId": "b6510927-8e7f-4cdb-95c5-27157318b3f1",
"standingOrderId": "20d56f38-0dfc-44d0-a7b5-58b13cc72923",
"standingOrderSpanId": "43c93d99-afa0-47a0-a520-d9d2567ce9f1",
"standingOrderDirection": "FIAT_TO_CRYPTO",
"failureType": "USER_LIMIT_EXCEEDED",
"ts": 1756990900913
}- Standing order failed due to proposed rate validation failure -
{
"uid": "7d1d310f-577d-4374-b6cf-72e9c5b4f923",
"type": "STANDING_ORDER_FAILED",
"sourceSyncedOwnerId": "b6510927-8e7f-4cdb-95c5-27157318b3f1",
"standingOrderId": "8dd01aa2-26a4-4df4-b2e5-65dfd20178ed",
"standingOrderSpanId": "2c1f1cdc-9f99-47c8-bf8e-9c176f6d9b1f",
"standingOrderDirection": "CRYPTO_TO_FIAT",
"failureType": "PROPOSED_RATE_VALIDATION_FAILED",
"ts": 1757580026952
}
- Blocked by Travel Rule
For FIAT_TO_CRYPTO standing orders, Travel Rule is checked after the swap and before the on-chain withdrawal.
If the whitelisted payout address is not Travel Rule–compliant (e.g. undeclared address, pending wallet verification, or missing VASP user info), the flow stops. You still get the pay-in and swap webhooks; payout webhooks are not sent.
Instead you receive:
{
"type": "STANDING_ORDER_FAILED",
"failureType": "BLOCKED_BY_TRAVEL_RULE",
"standingOrderId": "9f00b87f-5a4d-421e-a8eb-fbc7041ccc8e",
"standingOrderSpanId": "71b8e49d-af3e-47f8-9f73-748f49ffcefb",
"standingOrderDirection": "FIAT_TO_CRYPTO",
"sourceSyncedOwnerId": "9957bc9f-a9e8-4edf-ad16-a9f241f961ce",
"ts": 1757681065000
}Funds: The swap completes; crypto stays in the user's wallet.
What to do: Notify the user, declare the counterparty (and complete verification if required)
Tip: Declare and verify the whitelisted address before creating the standing order to avoid this failure.
Refer: https://docs.striga.com/reference/travel-rule#for-standing-orders

