# List fiat instructions

Returns a paginated list of your fiat instructions, both buy (`CRYPTO` destination) and
redemption (`FIAT` destination). Deleted instructions are excluded.
`bankDetails` is identical on every instruction in the page - it is resolved from your
account, not from the instruction row.

Endpoint: GET /v1/stablecoin/fiat-instructions
Version: 1.0.0
Security: oauth2

## Security:

  - `oauth2` (unknown)
    oauth2 scopes: rlusd_customers:read

## Query parameters:

  - `page` (integer)
    Page number, 0-indexed (default 0)

  - `size` (integer)
    Page size (default 20)

  - `sort` (string)
    Sort field and direction (default `createdAt,desc`).

## Response 200:

  - `200` (unknown)
    Paginated list of instructions. A known customer with no instructions gets an empty
`content` array and `totalElements: 0`, not a `404`.

## Response 200 fields (application/json):

  - `content` (array)

  - `content.id` (string, required)
    Instruction identifier. You supply it in the `PUT` path for a buy instruction; Ripple
generates it for a redemption instruction.

  - `content.memo` (string, required)
    Routing memo that correlates a fiat payment back to this instruction - quote it verbatim
in the payment's reference field so the funds can be attributed. Assigned by Ripple and
globally unique: `RL` followed by 14 Crockford base32 characters, 16 in total. Crockford
base32 excludes `I`, `L`, `O` and `U` to avoid transcription ambiguity.
    Example: RL7Q3K9ZP2MTX4VB

  - `content.currency` (string)
    ISO-4217 fiat currency code. Always present on a buy instruction. May be absent on a
redemption instruction whose originating fiat payment carries no currency.
    Example: USD

  - `content.destination` (object, required)
    Where the RLUSD goes once the instruction is claimed.

  - `content.destination.type` (string, required)
    `CRYPTO` for a buy instruction - the RLUSD is minted to one of your wallets. `FIAT` only
ever appears on a redemption instruction, which Ripple creates for you and which cannot
be created through this API.
    Enum: "CRYPTO", "FIAT"

  - `content.destination.walletRipId` (string)
    Destination wallet ripId (e.g. `RIP0000001`). Required when `type` is `CRYPTO`;
absent when `type` is `FIAT`. Resolve valid ids with
[List wallets](#operation/listWallets).
    Example: RIP0000001

  - `content.status` (string, required)
    Lifecycle status. A new instruction is `UNUSED` and never expires; it becomes `USED` when
its fiat payment claims it, or `CANCELED` when Ripple cancels the payment behind it. Both
are terminal.
`DELETED` exists on the underlying record but is never served: the reads exclude deleted
instructions outright, so a deleted instruction returns
`404 FIAT_INSTRUCTION_NOT_FOUND` rather than a `DELETED` status.
    Enum: "UNUSED", "USED", "DELETED", "CANCELED"

  - `content.createdAt` (string, required)
    Timestamp when the instruction was created

  - `content.bankDetails` (object)
    The Ripple bank account to wire the fiat to. Resolved from the default bank account
registered against your stablecoin product, so it is the same on every instruction
rather than unique to one.
Absent when your account has no active default bank account on file, when that account
is not yet linked to a Ripple receiving bank, or when the details could not be
retrieved. The instruction and its `memo` are returned either way, so treat the field as
optional. [Get bank details](#operation/getFiatBankDetails) serves the same object on
its own and, unlike this field, reports why it is unavailable.

  - `content.bankDetails.bankName` (string, required)
    Name of the bank holding the account. May be an empty string.
    Example: ABC Bank

  - `content.bankDetails.accountName` (string, required)
    Name the account is held under - the Ripple legal entity you are paying. May be an empty
string.
    Example: RIPPLE LABS CAYMAN LTD.

  - `content.bankDetails.accountNumber` (string)
    Account number to wire to.
    Example: 000000

  - `content.bankDetails.iban` (string)
    IBAN to wire to, for accounts identified that way.

  - `content.bankDetails.swiftBicCode` (string)
    Example: ABCBUS33XXX

  - `content.bankDetails.routingNumber` (string)
    Example: 0000

  - `content.bankDetails.reference` (string)
    Reference Ripple wants quoted on transfers to this account. Distinct from the
instruction's `memo`, which is what actually attributes the payment - send both.

  - `content.bankDetails.bankAddress` (object)
    Postal address of the bank account.

  - `content.bankDetails.bankAddress.street` (string)
    Street address. Where the bank's address is recorded over two lines, both are returned
here joined by `, `.
    Example: 1 Example Street

  - `content.bankDetails.bankAddress.city` (string)
    Example: Singapore

  - `content.bankDetails.bankAddress.state` (string)
    State, province or region.
    Example: Singapore

  - `content.bankDetails.bankAddress.zipCode` (string)
    Example: 000000

  - `content.bankDetails.bankAddress.country` (string)
    Example: Singapore

  - `totalElements` (integer)
    Total number of matching instructions

  - `totalPages` (integer)

  - `size` (integer)

  - `number` (integer)
    Current page number (0-indexed)

## Response 401:

  - `401` (unknown)
    Missing or expired access token

## Response 401 fields (application/problem+json):

  - `type` (string)
    URI reference identifying the problem type

  - `title` (string)
    Short, human-readable summary of the problem

  - `status` (integer)
    HTTP status code

  - `code` (string)
    Machine-readable error code
    Enum: "TRANSACTION_NOT_FOUND", "TRANSACTION_INVALID_STATUS_TRANSITION", "TRANSACTION_DESTINATION_TYPE_IMMUTABLE", "FIAT_INSTRUCTION_NOT_FOUND", "FIAT_INSTRUCTION_ALREADY_EXISTS", "FIAT_INSTRUCTION_INVALID_STATUS_TRANSITION", "STABLECOIN_BANK_DETAILS_NOT_FOUND", "WALLET_NOT_FOUND", "WALLET_NOT_APPROVED", "FORBIDDEN", "UPSTREAM_UNAVAILABLE", "INVALID_REQUEST_BODY", "UNKNOWN_EXCEPTION"

## Response 403:

  - `403` (unknown)
    The access token lacks `rlusd_customers:read`, or Ripple holds no RLUSD customer record
for your tenant (`FORBIDDEN`). The latter is deliberately not an empty page: an unknown
tenant cannot have instructions by construction, so an empty `200` would be
indistinguishable from a known customer who has simply not created one yet.

## Response 403 fields (application/problem+json):

  - `type` (string)
    URI reference identifying the problem type

  - `title` (string)
    Short, human-readable summary of the problem

  - `status` (integer)
    HTTP status code

  - `code` (string)
    Machine-readable error code
    Enum: "TRANSACTION_NOT_FOUND", "TRANSACTION_INVALID_STATUS_TRANSITION", "TRANSACTION_DESTINATION_TYPE_IMMUTABLE", "FIAT_INSTRUCTION_NOT_FOUND", "FIAT_INSTRUCTION_ALREADY_EXISTS", "FIAT_INSTRUCTION_INVALID_STATUS_TRANSITION", "STABLECOIN_BANK_DETAILS_NOT_FOUND", "WALLET_NOT_FOUND", "WALLET_NOT_APPROVED", "FORBIDDEN", "UPSTREAM_UNAVAILABLE", "INVALID_REQUEST_BODY", "UNKNOWN_EXCEPTION"

## Response 500:

  - `500` (unknown)
    Unexpected server error

## Response 500 fields (application/problem+json):

  - `type` (string)
    URI reference identifying the problem type

  - `title` (string)
    Short, human-readable summary of the problem

  - `status` (integer)
    HTTP status code

  - `code` (string)
    Machine-readable error code
    Enum: "TRANSACTION_NOT_FOUND", "TRANSACTION_INVALID_STATUS_TRANSITION", "TRANSACTION_DESTINATION_TYPE_IMMUTABLE", "FIAT_INSTRUCTION_NOT_FOUND", "FIAT_INSTRUCTION_ALREADY_EXISTS", "FIAT_INSTRUCTION_INVALID_STATUS_TRANSITION", "STABLECOIN_BANK_DETAILS_NOT_FOUND", "WALLET_NOT_FOUND", "WALLET_NOT_APPROVED", "FORBIDDEN", "UPSTREAM_UNAVAILABLE", "INVALID_REQUEST_BODY", "UNKNOWN_EXCEPTION"

## Response 502:

  - `502` (unknown)
    An upstream system Ripple depends on could not be reached (`UPSTREAM_UNAVAILABLE`). Safe to
retry: these are reads with no side effects, and the one write that returns it —
`createFiatInstruction` — is idempotent on `id`.

## Response 502 fields (application/problem+json):

  - `type` (string)
    URI reference identifying the problem type

  - `title` (string)
    Short, human-readable summary of the problem

  - `status` (integer)
    HTTP status code

  - `code` (string)
    Machine-readable error code
    Enum: "TRANSACTION_NOT_FOUND", "TRANSACTION_INVALID_STATUS_TRANSITION", "TRANSACTION_DESTINATION_TYPE_IMMUTABLE", "FIAT_INSTRUCTION_NOT_FOUND", "FIAT_INSTRUCTION_ALREADY_EXISTS", "FIAT_INSTRUCTION_INVALID_STATUS_TRANSITION", "STABLECOIN_BANK_DETAILS_NOT_FOUND", "WALLET_NOT_FOUND", "WALLET_NOT_APPROVED", "FORBIDDEN", "UPSTREAM_UNAVAILABLE", "INVALID_REQUEST_BODY", "UNKNOWN_EXCEPTION"

