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

# Transfers and transactions

> How a transfer relates to the transactions it produces.

A Transfer is the payment instruction you create. It has a `transfer_intent_`
id, one rail-specific lifecycle, and the requested amount and endpoints.

A Transaction is one account impact produced by that instruction. It has an
`agg_tx_` id and appears in the transaction feed. One transfer can produce
several transactions:

* the debit from the sending balance
* the credit to another Slash balance for a book transfer
* a later credit when a network transfer is returned
* a separate fee

`Transfer.transactionIds` lists the resulting transaction ids. Each related
Transaction carries the same `transferId`, so you can move in either direction:

1. Create or retrieve the Transfer to follow the payment lifecycle.
2. Use [`GET /v2/transactions`](/api-reference/transactions/list) with
   `transferId` to reconcile every account impact.
3. [Retrieve a Transaction](/api-reference/transactions/retrieve) when you
   need the latest state of one leg.

Creating a transfer returns a Transfer, not one arbitrarily selected
Transaction.

## Which endpoint to use

* **ACH:** [`POST /v2/transfers/ach`](/api-reference/transfers/ach/create),
  [`GET /v2/transfers/ach`](/api-reference/transfers/ach/list),
  [`GET /v2/transfers/ach/{transferId}`](/api-reference/transfers/ach/retrieve),
  and
  [`POST /v2/transfers/ach/{transferId}/cancel`](/api-reference/transfers/ach/cancel).
* **Domestic wire:**
  [`POST /v2/transfers/wire`](/api-reference/transfers/wire/create),
  [`GET /v2/transfers/wire`](/api-reference/transfers/wire/list), and
  [`GET /v2/transfers/wire/{transferId}`](/api-reference/transfers/wire/retrieve).
* **International wire:**
  [`POST /v2/transfers/international-wire`](/api-reference/transfers/international-wire/create),
  [`GET /v2/transfers/international-wire`](/api-reference/transfers/international-wire/list),
  and
  [`GET /v2/transfers/international-wire/{transferId}`](/api-reference/transfers/international-wire/retrieve).
* **Realtime:**
  [`POST /v2/transfers/realtime`](/api-reference/transfers/realtime/create),
  [`GET /v2/transfers/realtime`](/api-reference/transfers/realtime/list), and
  [`GET /v2/transfers/realtime/{transferId}`](/api-reference/transfers/realtime/retrieve).
* **Book:**
  [`POST /v2/transfers/book`](/api-reference/transfers/book/create),
  [`GET /v2/transfers/book`](/api-reference/transfers/book/list), and
  [`GET /v2/transfers/book/{transferId}`](/api-reference/transfers/book/retrieve).

Use [`GET /v2/transfers`](/api-reference/transfers/list) to list across every
rail and
[`GET /v2/transfers/{transferId}`](/api-reference/transfers/retrieve) when you
have an id but do not know its rail.

If an id is sent to the wrong rail-specific retrieve endpoint, the API returns
`404 not_found`.

## Amounts and statuses

Transfer `amount` is the positive amount requested by the caller. Transaction
`amountCents` is signed from the containing account's perspective: a debit is
negative and a credit is positive.

A Transfer status answers whether the payment instruction is waiting,
submitted, settled, failed, canceled, or returned. A Transaction status
answers what happened to one account impact. Do not infer one from the other;
use each resource's documented status.
