---
title: "Request a transfer"
method: POST
path: "/cases/{case_id}/transfers"
tags: ["Transfers"]
---

# Request a transfer

`POST /cases/{case_id}/transfers`

## Request

- Base URL: `https://api.example.com/v1`
- URL: `https://api.example.com/v1/cases/{case_id}/transfers`
- Auth: none declared

Request an Instant Inheritance transfer from an eligible bank account into the case's estate account.

The bank account must already be `eligible` — read the `instant_inheritance` summary on the
bank account first. Requesting a transfer on an account that is not eligible returns `422`.

Only one transfer may be in flight per bank account. Send an `Idempotency-Key` header so a retried
request never moves money twice.

## Headers

- `Idempotency-Key` string

## Request body

- TransferCreate
  - `bank_account_id` string, required: Bank account to pull from. Must have `instant_inheritance.eligibility` of `eligible`.
  - `amount` number, double: Amount to transfer. Omit to transfer the full confirmed available balance. Must not exceed `max_transfer_amount`.
  - `estate_account_id` string: Destination estate account. Defaults to the case's primary estate account.
  - `notes` string: Internal note stored on the transfer record.

## Response `201`

Transfer requested.

- object
  - `data` Transfer: An Instant Inheritance transfer pulling funds from a deceased account holder's bank account into the case's estate account.
    - `id` string
    - `case_id` string
    - `bank_account_id` string: The deceased's bank account the funds are pulled from.
    - `estate_account_id` string: The FDIC-insured Sunset estate account the funds land in.
    - `method` 'ach_debit': Transfer rail. ACH debit is the only method at launch.
    - `amount_requested` number, double
    - `amount_settled` number, double, nullable: Amount actually credited to the estate account. Null until the transfer settles.
    - `currency` string
    - `status` 'requested' | 'verifying' | 'approved' | 'submitted' | 'in_transit' | 'completed' | 'returned' | 'rejected' | 'cancelled'
    - `status_reason` string, nullable: Explanation for a `rejected`, `returned`, or `cancelled` transfer.
    - `return_code` 'R01' | 'R02' | 'R03' | 'R04' | 'R08' | 'R10' | 'R16' | 'R20' | 'R29' | 'null', nullable: NACHA return code when `status` is `returned`.
    - `requested_by` string: User who requested the transfer.
    - `requested_at` string, date-time
    - `submitted_at` string, date-time, nullable
    - `expected_settlement_date` string, date, nullable: Business day the funds are expected in the estate account.
    - `settled_at` string, date-time, nullable
    - `trace_number` string, nullable: ACH trace number, available once submitted.
    - `created_at` string, date-time
    - `updated_at` string, date-time

## Other responses

- `403`: Insufficient permissions for this case or resource.
- `404`: Resource not found.
- `409`: Duplicate request detected via Idempotency-Key.
- `422`: The account is not eligible, the amount exceeds the confirmed balance, or a transfer is already in flight.

---

[API](https://skmtc.dev/hellosunset/apis/sunset-api.md) - [All operations](https://skmtc.dev/hellosunset/apis/sunset-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hellosunset/apis/sunset-api/revisions/f128e5526efe?raw)
