Contents

GET /withdrawal-operation/$WITHDRAWAL_ID#

Query information about a withdrawal operation, identified by the WITHDRAWAL_ID.

Request:

Query Parameters:
  • timeout_msOptional. Timeout in milliseconds, for long-polling, to wait for operation state to be different from old_state. Since protocol v3.

  • old_stateOptional. Defaults to “pending”.

  • long_poll_msOptional. Deprecated in protocol v3. Use timeout_ms instead.

Response:

200 OK:

The withdrawal operation is known to the bank, and details are given in the BankWithdrawalOperationStatus response body.

404 Not found:

The operation was not found.

Details:

interface BankWithdrawalOperationStatus {
  // Current status of the operation
  // pending: the operation is pending parameters selection (exchange and reserve public key)
  // selected: the operations has been selected and is pending confirmation
  // aborted: the operation has been aborted
  // confirmed: the transfer has been confirmed and registered by the bank
  // @since **v1**
  status: "pending" | "selected" | "aborted" | "confirmed";

  // Currency used for the withdrawal.
  // MUST be present when amount is absent.
  // @since **v2**, may become mandatory in the future.
  currency?: string;

  // Amount that will be withdrawn with this operation
  // (raw amount without fee considerations).  Only
  // given once the amount is fixed and cannot be changed.
  // Optional since **v4**.
  amount?: Amount;

  // Suggestion for the amount to be withdrawn with this
  // operation.  Given if a suggestion was made but the
  // user may still change the amount.
  // Optional since **v4**.
  suggested_amount?: Amount;

  // Minimum amount that the wallet can choose to withdraw.
  // Only applicable when the amount is not fixed.
  // @since **v4**.
  min_amount?: Amount;

  // Maximum amount that the wallet can choose to withdraw.
  // Only applicable when the amount is not fixed.
  // @since **v4**.
  max_amount?: Amount;

  // The non-Taler card fees the customer will have
  // to pay to the bank / payment service provider
  // they are using to make the withdrawal in addition
  // to the amount.
  // @since **v4**
  card_fees?: Amount;

  // Bank account of the customer that is debiting, as a
  // full RFC 8905 payto URI.
  sender_wire?: string;

  // Base URL of the suggested exchange.  The bank may have
  // neither a suggestion nor a requirement for the exchange.
  // This value is typically set in the bank's configuration.
  suggested_exchange?: string;

  // Base URL of an exchange that must be used.  Optional,
  // not given *unless* a particular exchange is mandatory.
  // This value is typically set in the bank's configuration.
  // @since **v4**
  required_exchange?: string;

  // URL that the user needs to navigate to in order to
  // complete some final confirmation (e.g. 2FA).
  // Only applicable when status is selected or pending.
  // It may contain the withdrawal operation id.
  confirm_transfer_url?: string;

  // Wire transfer types supported by the bank.
  wire_types: string[];

  // Reserve public key selected by the exchange,
  // only non-null if status is selected or confirmed.
  // @since **v1**
  selected_reserve_pub?: EddsaPublicKey;

  // Exchange account selected by the wallet;
  // only non-null if status is selected or confirmed.
  // @since **v1**
  selected_exchange_account?: string;

  // If true, tells the wallet not to allow the user to
  // specify an amount to withdraw and to not provide
  // any amount when registering with the withdrawal
  // operation. The amount to withdraw will be set
  // by the final /withdrawals/$WITHDRAWAL_ID/confirm step.
  // @since **v5**
  no_amount_to_wallet?: boolean;

  // @deprecated since **v1**, use status instead
  // Indicates whether the withdrawal was aborted.
  aborted: boolean;

  // @deprecated since **v1**, use status instead
  // Has the wallet selected parameters for the withdrawal operation
  // (exchange and reserve public key) and successfully sent it
  // to the bank?
  selection_done: boolean;

  // @deprecated since **v1**, use status instead
  // The transfer has been confirmed and registered by the bank.
  // Does not guarantee that the funds have arrived at the exchange already.
  transfer_done: boolean;
}