# Get bank details

Returns the Ripple bank account to wire fiat to when buying stablecoin - the same object
embedded as `bankDetails` on every fiat instruction, served on its own.
The bank belongs to your account rather than to any one instruction, so this is the endpoint
to call when you want the wire destination without creating or listing an instruction:
rendering a "where to send funds" panel, caching the details, or checking them on a
schedule.
**This endpoint does not return a memo.** A memo is per-payment and comes only from a fiat
instruction; the bank details alone are not enough to have a payment attributed. Create an
instruction for every payment you intend to send.
Unlike the embedded `bankDetails` field, which is simply absent on any failure so that the
instruction and its memo still come back, this endpoint keeps its failures apart: a `404` is
a settled answer and retrying will not change it, a `502` is transient.

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

## Security:

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

## Response 200:

  - `200` (unknown)
    The Ripple bank account to wire fiat to

## Response 200 fields (application/json):

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

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

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

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

  - `swiftBicCode` (string)
    Example: ABCBUS33XXX

  - `routingNumber` (string)
    Example: 0000

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

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

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

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

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

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

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

## 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 at all (`FORBIDDEN`) - the tenant is not entitled to this API. Settled
rather than transient; raise it with your Ripple contact rather than retrying.

## 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 404:

  - `404` (unknown)
    There is no bank to return - no active default bank account on file, no link from it to
a Ripple receiving bank, or a linked bank that cannot be paid
(`STABLECOIN_BANK_DETAILS_NOT_FOUND`). Distinct from the `403` by status alone: the
customer exists, but has no Ripple bank linked yet. Also settled rather than transient.

## Response 404 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"

