---
title: "Deposit transitioned to pending"
method: POST
path: "deposit.pending"
---

# Deposit transitioned to pending

`POST deposit.pending` (webhook)

Deposit awaiting Pix payment (initial state). Creation does not emit a webhook; this event fires only on a reversal back to this state. Fires ONLY for operations attributed to an API key (human/SPA operations never dispatch) and only when the merchant has a default callback URL configured. Sandbox (sk_test_) operations create no rows, so they never fire webhooks. Outbound POST to the merchant's callback URL, signed with `X-DePix-Signature: t=<unix ts>,v1=<hex hmac-sha256>` where the HMAC is computed over `"${t}.${raw body}"` with the merchant webhook secret. Verify the signature and reject stale timestamps. Delivery is retried on failure: immediate → 1m → 10m → 1h → 4h → 12h (max 6 attempts); use `data.event_id` to deduplicate. Respond with any 2xx quickly to acknowledge.

## Headers

- `X-DePix-Signature` string, required
- `X-DePix-Event-Id` string, required

## Payload

- object: Envelope of the deposit.pending event.
  - `event` 'deposit.pending', required: Event name — fixed for this webhook.
  - `data` DepositWebhookData, required: Deposit event payload — same EN shape as GET /api/deposits/{id}, plus the delivery id.
    - `id` string, required: Deposit id (the id returned by POST /api/deposit).
    - `type` 'deposit', required: Resource discriminator — always "deposit".
    - `amount_cents` integer, required: Deposit amount in cents.
    - `status` union, required: Deposit lifecycle status — the enum below is the complete, closed set. `depix_sent` is the terminal SUCCESS state. Terminal states (safe to stop polling): depix_sent, refunded, canceled, expired.
      - 'pending': QR code generated; PIX not paid yet.
      - 'under_review': PIX paid; payment in pre-settlement review.
      - 'pending_pix2fa': PIX paid; waiting for the payer to complete PIX 2FA.
      - 'approved': PIX approved by the provider; DePix not yet sent.
      - 'delayed': Settlement held by the delay policy (new/high-value accounts).
      - 'will_refund': Refund flow started; the deposit will be refunded.
      - 'error': Upstream processing error. NOT terminal — the provider still owes an outcome, so keep polling: the deposit can still reach `depix_sent` or `refunded`.
      - 'depix_sent': TERMINAL — success: DePix delivered to the target Liquid address.
      - 'refunded': TERMINAL — deposit refunded to the payer.
      - 'canceled': TERMINAL — canceled upstream.
      - 'expired': TERMINAL — QR expired unpaid.
    - `created_at` string, required: Creation timestamp (RFC 3339 UTC).
    - `updated_at` string, required: Last update timestamp (RFC 3339 UTC).
    - `rejection_reasons` string[], required: Provider reasons a deposit was refused/held — e.g. PAYER_MISMATCH, PAST_DAILY_LIMIT, BLOCKED_USER, HIGH_VELOCITY. Empty array when the deposit was not refused. New reason codes may appear; display unknown codes as-is.
    - `event_id` string, required: Stable delivery id (evt_*) — identical across retries of the same event; use it for deduplication. Also sent as the X-DePix-Event-Id header.

## Acknowledgement `200`

Any 2xx acknowledges the delivery; anything else (or a timeout) schedules a retry.

---

[API](https://skmtc.dev/depixapp/apis/depix-api.md) · [All operations](https://skmtc.dev/depixapp/apis/depix-api/llms.txt) · [OpenAPI document](https://skmtc.dev/depixapp/apis/depix-api/revisions/04094536dd0f?raw)
