Contents

POST /withdrawal-operation/$WITHDRAWAL_ID#

This endpoint is used by the GNU Taler wallet to supply additional details needed to complete a withdraw operation.

Request:

interface BankWithdrawalOperationPostRequest {

  // Reserve public key that should become the wire transfer
  // subject to fund the withdrawal.
  reserve_pub: EddsaPublicKey;

  // Full RFC 8905 (payto) address of the exchange account to be
  // credited for the withdrawal.
  selected_exchange: string;

  // Selected amount to be transferred. Optional if the
  // backend already knows the amount.
  // @since **v4**
  amount?: Amount;
}

Response:

200 OK:

The bank has accepted the withdrawal operation parameters chosen by the wallet. The response is a BankWithdrawalOperationPostResponse.

404 Not found:

The bank does not know about a withdrawal operation with the specified WITHDRAWAL_ID.

409 Conflict:
  • TALER_EC_BANK_UPDATE_ABORT_CONFLICT : the withdrawal has been aborted previously and can’t be modified.

  • TALER_EC_BANK_WITHDRAWAL_OPERATION_RESERVE_SELECTION_CONFLICT: The wallet selected a different exchange or reserve public key under the same withdrawal ID.

  • TALER_EC_BANK_DUPLICATE_RESERVE_PUB_SUBJECT: the reserve public key is already used.

  • TALER_EC_BANK_UNKNOWN_ACCOUNT: the selected exchange account was not found.

  • TALER_EC_BANK_ACCOUNT_IS_NOT_EXCHANGE: the selected account is not an exchange.

  • TALER_EC_BANK_AMOUNT_DIFFERS : the specified amount will not work for this withdrawal (since v4).

  • TALER_EC_BANK_UNALLOWED_DEBIT : the account does not have sufficient funds or the amount is too low or too high (since v4).

Details:

interface BankWithdrawalOperationPostResponse {
  // 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
  status: "selected" | "aborted" | "confirmed";

  // 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 withdrawal operation id
  confirm_transfer_url?: string;

  // @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;
}