Treasury Events
Treasury operations emit webhook events when the status of deposits, withdrawals, and transfers changes.
Event types
Section titled “Event types”| Event | Fires when |
|---|---|
treasury.deposit.completed | Deposit funds have been credited to a wallet. |
treasury.deposit.failed | Deposit processing failed. |
treasury.withdrawal.completed | Withdrawal has been sent to the bank account. |
treasury.withdrawal.failed | Withdrawal processing failed. |
treasury.transfer.completed | Inter-wallet transfer completed. |
treasury.transfer.failed | Transfer processing failed. |
treasury.payout.completed | Payout to a beneficiary completed. |
treasury.payout.failed | Payout processing failed. |
Webhook payload
Section titled “Webhook payload”{ "type": "treasury.deposit.completed", "data": { "object": { "id": "dep_abc123", "wallet_id": "wal_xyz789", "from_amount": 100000, "from_currency_id": "ZAR", "to_amount": 100000, "to_currency_id": "ZAR", "status": "completed", "reference": "DEP-001", "created_at": "2026-06-01T10:30:00Z" } }}Handling treasury events
Section titled “Handling treasury events”@app.route("/webhooks/turnstay", methods=["POST"])def turnstay_webhook(): event = request.get_json() event_type = event["type"]
if event_type == "treasury.deposit.completed": deposit = event["data"]["object"] update_deposit_status(deposit["id"], "completed") elif event_type == "treasury.withdrawal.completed": withdrawal = event["data"]["object"] update_withdrawal_status(withdrawal["id"], "completed")
return jsonify({"ok": True}), 200