---
title: "Initiate deposit"
method: POST
path: "/transfers/deposit"
tags: ["Transfers"]
---

# Initiate deposit

`POST /transfers/deposit`

Move funds from a linked bank account into a wallet

## Headers

- `Idempotency-Key` string, required
- `X-Agent-ID` string, nullable
- `X-Instance-ID` string, nullable

## Request body

- object
  - `data` object, required
    - `attributes` object, required
      - `amount` integer, required — Amount in cents.
      - `currency` 'USD' — Three-letter currency code. Currently USD.
      - `externalAccountId` string, required — External account ID (eac_*).
      - `walletId` string — Target wallet for the deposit. Defaults to your party's default wallet when omitted.
      - `description` string — Memo for the deposit.

## Response `200`

Successful Response

- object
  - `data` object, required
    - `type` 'transfer', required
    - `id` string, required
    - `attributes` object, required
      - `type` 'deposit' | 'withdrawal' | 'internal', required — Transfer type.
      - `amount` integer, required — Amount in cents.
      - `currency` string, required — Currency code.
      - `status` 'CREATED' | 'APPROVAL_DENIED' | 'PROCESSING' | 'IN_REVIEW' | 'COMPLETED' | 'FAILED' | 'RETURNED' | 'CANCELED', required — Transfer status.
      - `method` string, nullable, required — Requested delivery method, when available.
      - `rail` string, nullable, required — Executed transfer rail, when available.
      - `description` string, nullable, required — Transfer description.
      - `externalAccountDisplayMask` string, nullable, required — Masked external account number.
      - `expectedAvailableAt` string, nullable, required — Expected availability time, when known.
      - `failure` object, nullable, required — Failure details when this transfer failed.
        - `code` string, nullable, required — Failure code, when available.
        - `reason` string, nullable, required — Failure reason, when available.
      - `return` object, nullable, required — Return details when this transfer was returned.
        - `code` string, nullable, required — Return code, when available.
        - `reason` string, nullable, required — Return reason, when available.
        - `returnedAt` string, nullable, required — When this transfer returned.
      - `submittedAt` string, nullable, required — When this transfer was submitted.
      - `settledAt` string, nullable, required — When this transfer settled.
      - `createdAt` string, required — When this transfer was created.
      - `updatedAt` string, nullable, required — When this transfer was last updated.
    - `relationships` object, required
      - `party` object, required — Party that owns the transfer.
        - `data` object, required — Related resource identifier.
          - `type` 'party', required
          - `id` string, required
      - `wallet` object, required — Wallet for this transfer.
        - `data` object, required — Related resource identifier.
          - `type` 'wallet', required
          - `id` string, required
      - `destWallet` object — Destination wallet for internal transfers.
        - `data` object, nullable, required — Related resource identifier.
          - `type` 'wallet', required
          - `id` string, required
      - `externalAccount` object, required — External account used for this transfer, when available.
        - `data` object, nullable, required — Related resource identifier.
          - `type` 'externalAccount', required
          - `id` string, required
      - `transaction` object, required — Primary transaction for this transfer, when available.
        - `data` object, nullable, required — Related resource identifier.
          - `type` 'transaction', required
          - `id` string, required

## Other responses

- `400` — Validation Error
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found. Returned when the resource does not exist, or when it exists but is not accessible to your account. The two cases are intentionally indistinguishable, so that resource IDs cannot be enumerated by probing.
- `409` — Conflict
- `422` — Validation Error
- `428` — Precondition Required
- `429` — Too Many Requests
- `500` — Internal Server Error
- `501` — Not Implemented
- `502` — Bad Gateway
- `503` — Service Unavailable

---

[API](https://skmtc.net/natural/apis/natural-api.md) · [All operations](https://skmtc.net/natural/apis/natural-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/natural/natural-api/versions/0bb9c54b1f61/schema)
