Execute Transaction

Execute a transaction with a valid quote and matching source and destination details.

Execute a transaction with a valid quote so you can move funds from the source account to the destination.

When to use this page

Use this page only after you have a valid quoteId and the source and beneficiary account or destination values match the flow you priced.

Prerequisites

  1. Set your NadaPay API base URL in $baseUrl.
  2. Export your NadaPay API key as YOUR_API_KEY.
  3. Generate a unique idempotency key for the request.
  4. Generate a quote and keep the returned quoteId.

Before you continue

  • confirm the quote is still valid
  • confirm the source account has enough balance for the transaction
  • confirm the destination values match the quote you generated
  • confirm the business reason and description are correct for your internal records

Start with these values for the recommended flow

For the example below, fill in these values first:

  • quoteId
  • source.accountId
  • source.amount
  • destination.beneficiaryAccountId
  • reason

Step 1 — Execute the transaction

For the example below, fill in these values first:

  • quoteId
  • source.accountId
  • source.amount
  • destination.beneficiaryAccountId
  • reason

Step 1 — Execute the transaction

curl --request POST \
  --url $baseUrl/transactions/execute \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --header 'x-idempotency-key: YOUR_UNIQUE_UUID' \
  --data '{
    "quoteId": "string",
    "reason": "gift",
    "reasonDescription": "string",
    "metadata": {},
    "source": {
      "accountId": "string",
      "nadapayCode": "WAL-123",
      "amount": 1000000
    },
    "destination": {
      "beneficiaryAccountId": "string",
      "accountId": "string",
      "nadapayCode": "WAL-456"
    }
  }'

Use the quoteId from the quote step and make sure the source and destination values match the flow you priced.

Step 2 — Review the response

A successful response returns the transaction created from the quote.

What this step returns

  • the transaction created from the quote
  • the execution result you will monitor through your internal status workflow

Save the transaction identifiers returned by this step and use them for monitoring and reconciliation.

Common reasons this step fails

  • the quote is expired or invalid
  • the source account does not have enough balance
  • the source or beneficiary account or destination values do not match the quote you priced
  • the transaction is blocked by corridor or compliance conditions

Response — error:

{
  "statusCode": 500,
  "message": "Internal server error"
}

What success looks like

  • the transaction is created successfully from the quote
  • you save the returned transaction identifiers
  • your internal monitoring flow begins tracking the transaction outcome

Do not continue if

  • the quote is expired or invalid
  • the source account does not have enough balance
  • the beneficiary account or destination values do not match the quote you priced

Call this next