> ## Documentation Index
> Fetch the complete documentation index at: https://api.hellosunset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Request a transfer

> 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.




## OpenAPI

````yaml POST /cases/{case_id}/transfers
openapi: 3.1.0
info:
  title: Sunset API
  description: >
    Estate and probate management platform API. Manage cases, track assets,
    handle bank accounts, and navigate probate proceedings across all US states
    and counties.


    ## Key Features


    - **Full Estate Lifecycle** — Case creation through final asset distribution

    - **Instant Inheritance** — Pull a deceased account holder's bank balance
    into the estate account without waiting on the bank

    - **Identity Verification** — Verify deceased (SSDI, vital records) and
    executor (government ID, KBA) identity

    - **Real Estate Valuations** — Automated property valuations with comparable
    sales and lien tracking

    - **Communication Tools** — Recorded phone calls, emails, faxes, and online
    notarization

    - **Probate Reference Data** — Requirements for all 50 states, DC, and US
    territories

    - **Multi-Estate Management** — Pro and Enterprise tiers for managing
    multiple cases


    ## API Quality


    - **Idempotency** — `Idempotency-Key` header on all POST endpoints to
    prevent duplicate operations

    - **Rate Limiting** — Tiered rate limits (Pro: 300/min, Enterprise:
    1,000/min)

    - **Conditional Requests** — ETag support with `If-None-Match` and
    `If-Match` headers

    - **Request Tracing** — `X-Request-Id` header on every response

    - **Cursor Pagination** — Optional cursor-based pagination for high-volume
    resources

    - **JSON Merge Patch** — All PATCH endpoints use JSON Merge Patch semantics
    (RFC 7396)
  version: 1.0.0
  contact:
    name: Sunset API Support
servers:
  - url: https://api.example.com/v1
    description: Production
  - url: https://staging-api.example.com/v1
    description: Staging
security: []
tags:
  - name: Cases
    description: Estate/probate case management
  - name: Deceased
    description: Deceased person information
  - name: Executor
    description: Estate executor information
  - name: Authority
    description: Authority verification
  - name: EIN
    description: Employer Identification Number
  - name: Financial Accounts
    description: Estate financial accounts and assets
  - name: Documents
    description: Case document management
  - name: Searches
    description: Asset and background searches
  - name: Persons
    description: Interested persons and beneficiaries
  - name: Goals
    description: Estate management goals
  - name: Bank Accounts
    description: Bank account management
  - name: Signers
    description: Bank account holders and signers
  - name: Transactions
    description: Bank account transactions
  - name: Recurring Payments
    description: Recurring payments and deposits
  - name: Account Beneficiaries
    description: POD/TOD beneficiary designations
  - name: Statements
    description: Bank account statements
  - name: Balance History
    description: Historical balance snapshots
  - name: Transfers
    description: Instant Inheritance transfers into the estate account
  - name: Probate Reference
    description: State and county probate reference data
  - name: Probate Forms
    description: State-level probate forms
  - name: Probate Case
    description: Case-level probate tracking
  - name: Probate Deadlines
    description: Probate deadlines and due dates
  - name: Probate Filings
    description: Court filings
  - name: Creditor Claims
    description: Creditor claims against the estate
  - name: Distributions
    description: Beneficiary distributions
  - name: Pro Users
    description: Pro user multi-estate management
  - name: Collaborators
    description: Multi-user collaboration and estate sharing
  - name: Closure
    description: Estate closure steps and status tracking
  - name: Institution Contacts
    description: Financial institution contact information and departments
  - name: Phone Calls
    description: Twilio-powered phone calls with recording and summarization
  - name: Emails
    description: Email tool for sending forms and attachments
  - name: Notarization
    description: DocuSign-powered online notarization
  - name: Faxes
    description: One-click fax sending with receipts
  - name: Identity Verification
    description: Verify deceased and executor identity
  - name: Real Estate Valuations
    description: Automated property valuations and tax assessments
  - name: Life Insurance
    description: Life insurance policies and claims
  - name: Credit Cards & Debts
    description: Credit cards, loans, and debt management
  - name: Retirement Accounts
    description: 401(k), IRA, pension, and retirement account management
  - name: Investment Accounts
    description: Brokerage, stocks, bonds, and investment accounts
  - name: Real Estate Properties
    description: Real estate ownership, titles, and property management
  - name: Unclaimed Property
    description: Unclaimed property search and claims
  - name: Vehicles
    description: Vehicles, boats, and titled property
  - name: Business Ownership
    description: Business entities, ownership interests, and succession
paths:
  /cases/{case_id}/transfers:
    parameters:
      - $ref: '#/components/parameters/CaseId'
    post:
      tags:
        - Transfers
      summary: Request a transfer
      description: >
        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.
      operationId: createTransfer
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransferCreate'
      responses:
        '201':
          description: Transfer requested.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Transfer'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          description: >-
            The account is not eligible, the amount exceeds the confirmed
            balance, or a transfer is already in flight.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error:
                  code: transfer_not_eligible
                  message: This account is not approved for Instant Inheritance.
components:
  parameters:
    CaseId:
      name: case_id
      in: path
      required: true
      schema:
        type: string
      description: Unique case identifier (ULID format).
      example: 01K5WF06MJ6T99HRYE78AN7XM8
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      schema:
        type: string
        maxLength: 255
      description: >-
        Unique key to ensure idempotent POST requests. If a request with the
        same key was already processed, the original response is returned. Keys
        expire after 24 hours.
      example: idem_01K9IK01AJ0T88HRYE78AN7YYY
  schemas:
    TransferCreate:
      type: object
      required:
        - bank_account_id
      properties:
        bank_account_id:
          type: string
          description: >-
            Bank account to pull from. Must have
            `instant_inheritance.eligibility` of `eligible`.
          example: 01K6BA01AJ9T66HRYE78AN7PQR
        amount:
          type: number
          format: double
          description: >
            Amount to transfer. Omit to transfer the full confirmed available
            balance.

            Must not exceed `max_transfer_amount`.
          example: 15230.5
        estate_account_id:
          type: string
          description: >-
            Destination estate account. Defaults to the case's primary estate
            account.
          example: 01K6BA07XJ9T66HRYE78AN7EST
        notes:
          type: string
          description: Internal note stored on the transfer record.
          example: Requested after Letters Testamentary were accepted.
    Transfer:
      type: object
      description: >-
        An Instant Inheritance transfer pulling funds from a deceased account
        holder's bank account into the case's estate account.
      properties:
        id:
          type: string
          example: 01K9TR01AJ0T55HRYE78AN7TRF
        case_id:
          type: string
          example: 01K5WF06MJ6T99HRYE78AN7XM8
        bank_account_id:
          type: string
          description: The deceased's bank account the funds are pulled from.
          example: 01K6BA01AJ9T66HRYE78AN7PQR
        estate_account_id:
          type: string
          description: The FDIC-insured Sunset estate account the funds land in.
          example: 01K6BA07XJ9T66HRYE78AN7EST
        method:
          type: string
          enum:
            - ach_debit
          description: Transfer rail. ACH debit is the only method at launch.
          example: ach_debit
        amount_requested:
          type: number
          format: double
          example: 15230.5
        amount_settled:
          type:
            - number
            - 'null'
          format: double
          description: >-
            Amount actually credited to the estate account. Null until the
            transfer settles.
          example: null
        currency:
          type: string
          default: USD
          example: USD
        status:
          type: string
          enum:
            - requested
            - verifying
            - approved
            - submitted
            - in_transit
            - completed
            - returned
            - rejected
            - cancelled
          example: in_transit
        status_reason:
          type:
            - string
            - 'null'
          description: Explanation for a `rejected`, `returned`, or `cancelled` transfer.
          example: null
        return_code:
          type:
            - string
            - 'null'
          description: NACHA return code when `status` is `returned`.
          enum:
            - R01
            - R02
            - R03
            - R04
            - R08
            - R10
            - R16
            - R20
            - R29
            - null
          example: null
        requested_by:
          type: string
          description: User who requested the transfer.
          example: 01K8PU01AJ0T77HRYE78AN7AAA
        requested_at:
          type: string
          format: date-time
          example: '2026-08-24T14:10:00Z'
        submitted_at:
          type:
            - string
            - 'null'
          format: date-time
          example: '2026-08-24T21:00:00Z'
        expected_settlement_date:
          type:
            - string
            - 'null'
          format: date
          description: Business day the funds are expected in the estate account.
          example: '2026-08-27'
        settled_at:
          type:
            - string
            - 'null'
          format: date-time
          example: null
        trace_number:
          type:
            - string
            - 'null'
          description: ACH trace number, available once submitted.
          example: '021000020000001'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: validation_error
            message:
              type: string
              example: The request body contains invalid fields.
            details:
              type: array
              items:
                type: object
                properties:
                  field:
                    type: string
                  message:
                    type: string
  responses:
    Forbidden:
      description: Insufficient permissions for this case or resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: forbidden
              message: You do not have permission to access this resource.
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: not_found
              message: The requested resource was not found.
    Conflict:
      description: Duplicate request detected via Idempotency-Key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: idempotency_conflict
              message: A different request body was sent with the same Idempotency-Key.

````