---
title: "POST payout.update"
method: POST
path: "payout.update"
---

# POST payout.update

`POST payout.update` (webhook)

## Payload

- PayoutUpdateWebhookOut
  - `webhook_event` 'payout.update', required
  - `id` string, required
  - `status` 'processing' | 'failed' | 'refunded' | 'completed' | 'on_hold', required — Payout general status
  - `sender_wallet_address` string, required — Payout wallet address
  - `billing_fee_amount` number, nullable — Billing fee in cents (charged via invoice at the end of the month)
  - `transaction_fee_amount` number, nullable — Transaction fee in cents (percentage-based fee)
  - `partner_fee` integer — Payout partner fee amount in cents (can be negative for rebates)
  - `tracking_complete` object, required
    - `step` 'processing' | 'on_hold' | 'pending_review' | 'pending_refund_review' | 'completed', required — Complete step
    - `status` 'tokens_refunded' | 'paid', nullable — Complete status
    - `refund_reason` string, nullable — Reason for refund when tokens are returned to sender
    - `transaction_hash` string, nullable — Complete transaction hash
    - `provider_transaction_id` string, nullable — Provider-side handle for the refund transaction (e.g. Circle transaction id)
    - `completed_at` string, nullable — Complete completed date
  - `tracking_payment` object, required
    - `step` 'processing' | 'on_hold' | 'pending_review' | 'pending_refund_review' | 'completed', required — Payment step
    - `provider_name` 'Nvio Pagos' | 'Brex' | 'Stark Bank' | 'JPMorgan Chase' | 'HSBC' | 'Inter' | 'JP Morgan Chase' | 'Bitso' | 'Citi' | 'CFSB' | 'Triple A Technologies' | 'Portage Bank', nullable — Payment provider name
    - `provider_integration` 'veem' | 'zenus' | 'checkbook' | 'onemoney' | 'bitso' | 'starkbank' | 'triplea' | 'infinitus', nullable — Machine-readable integration that executed the fiat leg. Unlike provider_name (a client-facing bank label), this uniquely identifies the integration — e.g. zenus vs checkbook, which share the "JPMorgan Chase" label.
    - `provider_transaction_id` string, nullable — Payment provider transaction id
    - `provider_status` 'canceled' | 'failed' | 'returned' | 'sent', nullable — Payment provider status
    - `provider_error_reason` string, nullable — Provider error reason when payment fails (e.g. invalid_key, wrong_parameters)
    - `provider_uetr` string, nullable — Unique end-to-end transaction reference (UETR). Populated once the wire is confirmed by the network; null while the payment is in flight or when the rail does not expose it (e.g. ACH).
    - `provider_imad` string, nullable — Fed Input Message Accountability Data (IMAD). Domestic Fedwire payments only; null on ACH and SWIFT.
    - `provider_reference` string, nullable — Provider (JPMorgan/Zenus) payment reference captured from the ACCOUNT.ACCOUNT booking webhook (Zenus contractSource.sourceRef). Present for some ACH/wire payouts; a bank-side reference, not the formal ACH network trace number.
    - `provider_clearing_system` string, nullable — Clearing system that processed the payment (e.g. FED, CHIPS, ACH, SWIFT).
    - `forced_provider` 'zenus' | 'veem', nullable — Ops-set per-payout provider override (backoffice Reroute tab). When present it wins over the instance payment_route and default routing at send time. Left in place after the send as an audit marker of the forced route.
    - `recipient_name` string, nullable — Recipient name
    - `recipient_tax_id` string, nullable — Recipient tax id
    - `recipient_bank_code` string, nullable — Recipient bank code
    - `recipient_branch_code` string, nullable — Recipient branch code
    - `recipient_account_number` string, nullable — Recipient account number
    - `recipient_account_type` string, nullable — Recipient account type
    - `coelsa_id` string, nullable — COELSA transaction reference ID for ARS transfers (Argentine national banking system)
    - `end_to_end_id` string, nullable — BACEN Pix end-to-end transaction ID (govt Pix ID)
    - `estimated_time_of_arrival` '5_min' | '5_30_min' | '30_min' | '2_hours' | '1_business_day' | '2_business_days' | '5_business_days', nullable — Estimated time of arrival
    - `completed_at` string, nullable — Payment completed date
    - `refund_review_reason` 'amount_threshold' | 'time_window' | 'late_cancellation_no_live_run' | 'master_account_return', nullable — Why the payout was routed to the Pending Refunds review queue instead of auto-refunding after a provider cancellation
    - `refund_review_detected_at` string, nullable — When the provider cancellation was routed to the Pending Refunds review queue
    - `refund_review_actioned_at` string, nullable — Atomic claim marker: set the moment an operator approves a Pending Refunds entry, before the refund is sent, so a concurrent approve call cannot re-claim the same payout
  - `tracking_transaction` object, required
    - `step` 'processing' | 'on_hold' | 'pending_review' | 'pending_refund_review' | 'completed', required — Payout transaction step
    - `status` 'failed' | 'found', nullable — Payout transaction status
    - `transaction_hash` string, nullable — Blockchain transaction hash
    - `completed_at` string, nullable — Payout transaction completed date
    - `provider_transaction_id` string, nullable — Provider-side handle for the on-chain leg (e.g. Circle CPN payment id).
    - `provider_error_reason` string, nullable — Provider error reason when the crypto collection fails (e.g. erc20_allowance_insufficient, ESTIMATION_ERROR: execution reverted)
    - `ledger_in_transaction_id` string, nullable — Ledger transaction ID for the IN (crypto deposit) transaction
    - `ledger_out_transaction_id` string, nullable — Ledger transaction ID for the OUT (fiat withdrawal) transaction
  - `tracking_liquidity` object, nullable
    - `step` 'processing' | 'on_hold' | 'pending_review' | 'pending_refund_review' | 'completed', required — Payout liquidity step
    - `provider_transaction_id` string, nullable — Payment provider transaction id
    - `provider_status` 'deposited' | 'converted' | 'withdrawn', nullable — Payment provider status
    - `estimated_time_of_arrival` '5_min' | '5_30_min' | '30_min' | '2_hours' | '1_business_day' | '2_business_days' | '5_business_days', nullable — Estimated time of arrival
    - `completed_at` string, nullable — Payout transaction completed date
  - `tracking_documents` object, nullable
    - `step` 'processing' | 'on_hold' | 'pending_review' | 'pending_refund_review' | 'completed', required — Documents step
    - `status` 'waiting_documents' | 'compliance_reviewing', nullable — Documents status
    - `reviewed_by` string, nullable — Reviewer email/name
    - `completed_at` string, nullable — Documents completed date
  - `customer_id` string, nullable
  - `bank_account_id` string, nullable
  - `offramp_wallet_id` string, nullable
  - `payable_id` string, nullable — The payable this payout executes, when it pays a payable instead of a bank account.

## Acknowledgement `200`

Payout updated

---

[API](https://skmtc.dev/blindpay/apis/blindpay-api.md) · [All operations](https://skmtc.dev/blindpay/apis/blindpay-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/blindpay/blindpay-api/revisions/470de27afb7b/schema)
