Skip to main content

Responses

All Shufti Travel Rule API responses follow a consistent JSON structure. This section describes response formats, transaction statuses, and verification statuses.

Standard Response Format​

FieldTypeDescription
errorbooleanfalse when successful, true on error.
statusstringOverall result: SUCCESS or ERROR.
messagestringHuman-readable result description.
dataobjectResponse payload. Structure varies by endpoint.

Success Response​

success-response
{
"error": false,
"status": "SUCCESS",
"message": "Operation completed successfully",
"data": { }
}

Error Response​

error-response
{
"error": true,
"status": "ERROR",
"message": "Descriptive error message",
"data": {}
}
note

The { error, status, message, data } envelope above applies to the management endpoints (/travel-rule/* read / detail / update / delete / wallets / VASP). The create flow (POST /) instead returns the standard Shufti envelope (reference, event, …) and delivers the result via Callbacks.

Callbacks​

Travel Rule screening is asynchronous. POST / returns request.pending immediately; the result is pushed to your callback_url as a signed callback. Every callback includes an sp_signature header — verify it as sha256(raw_json_body + secret_key), exactly as for other Shufti services.

EventWhenVerification result
request.pendingSynchronous response on create (not a callback)Pending
verification.acceptedTransaction reaches CONFIRMED, an OUTGOING transaction reaches DELIVERED, or a wallet is verifiedAccepted
verification.declinedTransaction reaches DECLINED / FAILED / CANCELLEDDeclined

The verification stays pending until the transaction reaches a final status — CONFIRMED → accepted; DECLINED / FAILED / CANCELLED → declined. DELIVERED depends on direction: an OUTGOING transaction is accepted at DELIVERED (the message was delivered; under the post-transaction model the counterparty's confirmation is not required), while an INCOMING transaction stays pending until you confirm or decline it. Use the Read / Detail endpoints to check the current status at any time.

Final callback​

verification.accepted-callback
{
"reference": "sp-tr-txn-001",
"event": "verification.accepted"
}

For a declined outcome the event is verification.declined (with declined_reason / declined_codes as for other services — see Declined Reasons).

Transaction Statuses​

Travel Rule transactions progress through these statuses during their lifecycle:

StatusDescriptionSet By
PENDINGCreated and waiting for further processing. Initial status of INCOMING transactions.System
DELIVEREDDelivered to the counterparty VASP. Initial status of OUTGOING transactions.System / beneficiary VASP
CONFIRMEDBeneficiary VASP reviewed and approved the transaction.Beneficiary VASP
DECLINEDBeneficiary VASP reviewed and rejected the transaction. status_reasoning required.Beneficiary VASP
FAILEDCould not be processed because of a system or API error.System
CANCELLEDTransaction cancelled.System / counterparty
info

DELIVERED, CONFIRMED, and DECLINED can be set via the Update Transaction endpoint for INCOMING transactions. See Status Lifecycle for how each status is reached per direction.

Wallet Verification Statuses​

StatusDescription
pendingVerification is pending review.
verifiedWallet ownership has been successfully verified.
failedVerification failed.

Risk Severity Levels​

SeverityDescription
lowLow risk entities.
mediumModerate risk entities.
highHigh risk entities requiring extra caution.