---
title: "Execute a transaction using an e-wallet"
method: POST
path: "/wallet/transaction/execute"
tags: ["plaid"]
---

# Execute a transaction using an e-wallet

`POST /wallet/transaction/execute`

Execute a transaction using the specified e-wallet.
Specify the e-wallet to debit from, the counterparty to credit to, the idempotency key to prevent duplicate transactions, the amount and reference for the transaction.
Transactions will settle in seconds to several days, depending on the underlying payment rail.

## Request body

- WalletTransactionExecuteRequest — WalletTransactionExecuteRequest defines the request schema for `/wallet/transaction/execute`
  - `client_id` string — Your Plaid API `client_id`. The `client_id` is required and may be provided either in the `PLAID-CLIENT-ID` header or as part of a request body.
  - `secret` string — Your Plaid API `secret`. The `secret` is required and may be provided either in the `PLAID-SECRET` header or as part of a request body.
  - `idempotency_key` string, required — A random key provided by the client, per unique wallet transaction. Maximum of 128 characters. The API supports idempotency for safely retrying requests without accidentally performing the same operation twice. If a request to execute a wallet transaction fails due to a network connection error, then after a minimum delay of one minute, you can retry the request with the same idempotency key to guarantee that only a single wallet transaction is created. If the request was successfully processed, it will prevent any transaction that uses the same idempotency key, and was received within 24 hours of the first request, from being processed.
  - `wallet_id` string, required — The ID of the e-wallet to debit from
  - `counterparty` WalletTransactionCounterparty, required — An object representing the e-wallet transaction's counterparty
    - `name` string, required — The name of the counterparty
    - `numbers` WalletTransactionCounterpartyNumbers, required — The counterparty's bank account numbers. Exactly one of IBAN or Bacs data is required.
      - `bacs` WalletTransactionCounterpartyBACS, nullable — An object containing a Bacs account number and sort code. If an IBAN is not provided or if you need to accept domestic GBP-denominated payments, Bacs data is required.
        - `account` string — The account number of the account. Maximum of 10 characters.
        - `sort_code` string — The 6-character sort code of the account.
      - `international` WalletTransactionCounterpartyInternational, nullable — International Bank Account Number for a Wallet Transaction
        - `iban` string — International Bank Account Number (IBAN).
    - `address` PaymentInitiationAddress, nullable — The optional address of the payment recipient's bank account. Required by most institutions outside of the UK.
      - `street` string[], required — An array of length 1-2 representing the street address where the recipient is located. Maximum of 70 characters.
      - `city` string, required — The city where the recipient is located. Maximum of 35 characters.
      - `postal_code` string, required — The postal code where the recipient is located. Maximum of 16 characters.
      - `country` string, required — The ISO 3166-1 alpha-2 country code where the recipient is located.
    - `date_of_birth` string, date, nullable — The counterparty's birthdate, in [ISO 8601](https://wikipedia.org/wiki/ISO_8601) (YYYY-MM-DD) format.
  - `amount` WalletTransactionAmount, required — The amount and currency of a transaction
    - `iso_currency_code` 'GBP' | 'EUR', required — An ISO-4217 currency code, used with e-wallets and transactions.
    - `value` number, double, required — The amount of the transaction. Must contain at most two digits of precision e.g. `1.23`.
  - `reference` string, required — A reference for the transaction. This must be an alphanumeric string with 6 to 18 characters and must not contain any special characters or spaces. Ensure that the `reference` field is unique for each transaction.
  - `originating_fund_source` OriginatingFundSource, nullable — The original source of the funds. This field is required by local regulation for certain businesses (e.g. money remittance) to send payouts to recipients in the EU and UK.
    - `full_name` string, required — The full name associated with the source of the funds.
    - `address` PaymentInitiationAddress, nullable, required — The optional address of the payment recipient's bank account. Required by most institutions outside of the UK.
      - `street` string[], required — An array of length 1-2 representing the street address where the recipient is located. Maximum of 70 characters.
      - `city` string, required — The city where the recipient is located. Maximum of 35 characters.
      - `postal_code` string, required — The postal code where the recipient is located. Maximum of 16 characters.
      - `country` string, required — The ISO 3166-1 alpha-2 country code where the recipient is located.
    - `account_number` string, required — The account number from which the funds are sourced.
    - `bic` string, required — The Business Identifier Code, also known as SWIFT code, for this bank account.

## Response `200`

OK

- WalletTransactionExecuteResponse — WalletTransactionExecuteResponse defines the response schema for `/wallet/transaction/execute`
  - `transaction_id` string, required — A unique ID identifying the transaction
  - `status` 'AUTHORISING' | 'INITIATED' | 'EXECUTED' | 'SETTLED' | 'BLOCKED' | 'FAILED', required — The status of the transaction. `AUTHORISING`: The transaction is being processed for validation and compliance. `INITIATED`: The transaction has been initiated and is currently being processed. `EXECUTED`: The transaction has been successfully executed and is considered complete. This is only applicable for debit transactions. `SETTLED`: The transaction has settled and funds are available for use. This is only applicable for credit transactions. A transaction will typically settle within seconds to several days, depending on which payment rail is used. `FAILED`: The transaction failed to process successfully. This is a terminal status. `BLOCKED`: The transaction has been blocked for violating compliance rules. This is a terminal status.
  - `request_id` string, required — A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.

## Other responses

- `default` — Error response

---

[API](https://skmtc.net/plaid/apis/the-plaid-api.md) · [All operations](https://skmtc.net/plaid/apis/the-plaid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/plaid/the-plaid-api/versions/64c4514ea59b/schema)
