Transactions

Overview

The Transactions API allows you to retrieve and analyze the financial movements affecting your accounts. Transactions represent the individual ledger entries that occur when money moves into, out of, or between accounts. Unlike Transfers, Deposits, or Conversions (which represent higher-level operations), Transactions give you visibility into the specific ledger movements these operations cause.

Key features of the Transactions API:

  • View detailed transaction history for all accounts
  • Filter transactions by multiple criteria
  • Get transaction-level balance change information
  • Link transactions to their originating operations (transfers, deposits, conversions)
  • Support for both credit (money in) and debit (money out) transaction types

The Transaction Object

PropertyTypeRequiredDescription
idstring (UUID)Unique identifier of the transaction.
account_idstring (UUID)Unique identifier of the account associated with the transaction.
stateenumCurrent state of the transaction (PENDING, COMPLETED).
created_datestring (datetime)Date and time when the transaction was created.
completion_datestring (datetime)Date and time when the transaction was completed.
amountobjectAmount of the transaction.
amount.valuenumberTransaction amount in minor units (kobo, cents, etc).
amount.currencystringCurrency code of the transaction (ISO 4217).
typeenumIndicates if the transaction is a credit or debit ("credit", "debit").
related_entityobjectDetails of the entity that triggered this transaction.
related_entity.typeenumType of the related entity ("deposit", "transfer", "conversion").
related_entity.idstring (UUID)Unique identifier of the related entity.
balance_beforeobjectBalance before the transaction. Available for COMPLETED transactions
balance_before.valuenumberBalance before in minor units (kobo, cents, etc).
balance_before.currencystringCurrency code of the balance. Available for COMPLETED transactions
balance_afterobjectBalance after the transaction.
balance_after.valuenumberBalance after in minor units (kobo, cents, etc).
balance_after.currencystringCurrency code of the balance.
actionenumWhat kind of action the transaction represents (e.g., "inbound_funds", "outbound_funds", "conversion_in", "conversion_out", "transfer_fee", etc.).
related_transaction_idstring (UUID)ID of a related transaction, e.g., for refunds or corrections.

Understanding Transactions

Key Concepts: Transaction Completion vs. Entity Settlement

When working with our banking API, it's essential to understand the distinction between transaction completion and entity settlement:

Transaction Completion

A transaction object in a "COMPLETED" state indicates that the ledger entry has been finalized and the account balance has been affected. This means:

  • The funds have been debited from or credited to the available balance
  • The transaction has been recorded in the ledger
  • The balance change is reflected in the account

Entity Settlement

The settlement status of the related entity (transfer, deposit, conversion) is separate from the transaction's completion status:

  • A completed transaction shows the balance has been affected
  • This does not necessarily mean the related operation (transfer, deposit, conversion) has been fully settled
  • The related entity might still be in process with external systems or banking partners

Important Clarification

For Accounts:

When you see a "COMPLETED" transaction in your transaction history, this means:

  • ✅ Your balance has been updated
  • ✅ The transaction has been recorded in your account
  • ❌ This does NOT guarantee funds have reached their final destination (for outbound transfers)
  • ❌ This does NOT guarantee that conversions have settled on the quote side


For Developers:

When implementing with our API:

  • Use transaction data to show accurate balance changes if needed
  • To determine if a transfer has been fully settled, check the state of the transfer entity itself via the Transfers API
  • To determine if a conversion has been fully settled, check the state of the conversion entity via the Conversions API
  • To track the complete lifecycle, use both transaction data and the related entity's data

Example Scenarios

Transfer to an External Bank

  1. You initiate a transfer to an external bank account
  2. A "COMPLETED" transaction immediately shows in your account
  3. Your available balance is reduced
  4. The actual settlement to the recipient bank would typically take some time
  5. During this time, the transfer entity would typically show "PROCESSING" state
  6. Once settled with the recipient bank, the transfer entity would show "COMPLETED" state

Currency Conversion Process (USD to EUR):

  1. You initiate a currency conversion from USD to EUR
  2. The process unfolds in these distinct stages:

Initial Stage (Immediate)

  • USD transaction shows as "COMPLETED" with action "conversion_out"
  • USD available balance is reduced immediately
  • EUR transaction appears as "PENDING" with action "conversion_in"
  • EUR balance is not yet increased
  • Conversion entity shows state "PROCESSING"

Completion Stage (After Processing)

  • USD transaction remains "COMPLETED" (no change)
  • EUR transaction updates to "COMPLETED"
  • EUR available balance is increased with the converted amount
  • Conversion entity updates to "COMPLETED" state

Transaction States During Conversion

CurrencyInitial StageCompletion Stage
Source (USD)COMPLETEDCOMPLETED (no change)
Destination (EUR)PENDINGCOMPLETED

Balance Effects

BalanceInitial StageCompletion Stage
USD AvailableDecreased immediatelyNo change
EUR AvailableNo change yetIncreased

Entity States

EntityInitial StageCompletion Stage
ConversionPROCESSINGCOMPLETED

Checking Settlement Status

To determine if a related entity is fully settled:

  1. Get the related_entity.id from the transaction
  2. Use this ID to query the appropriate endpoint based on the related_entity.type:
    • /v2/transfers/{id} for transfers
    • /v2/deposits/{id} for deposits
    • /v2/conversions/{id} for conversions
  3. Check the state field of the returned entity to determine its settlement status

Field Reference for Transaction vs. Settlement Status

Entity TypeTransaction State FieldStatus FieldWhere to Find Settlement Status
TransactionstateN/ATransaction object only shows balance impact
TransferN/Astate/v2/transfers/{id}
DepositN/Astate/v2/deposits/{id}
ConversionN/Astate/v2/conversions/{id}

Remember: Transaction completion (impact on balance) and entity settlement (completion of the full operation) are distinct concepts in our banking system.


Endpoints

List Transactions

Retrieve a paginated list of transactions for your institution.

GET /v2/transactions

Query Parameters

ParameterTypeRequiredDescription
account_idstring (UUID)Filter transactions by account ID.
currencystringFilter transactions by currency.
typeenumFilter by transaction type ("credit" or "debit").
related_entity_typeenumFilter by related entity type ("deposit", "transfer", "conversion").
related_entity_idstring (UUID)Filter by related entity ID.
date_fromstring (datetime)Filter transactions completed on or after this date.
date_tostring (datetime)Filter transactions completed on or before this date.
sort_byenumSort key for the transactions ("amount", "created_date", "completion_date"). Default: "created_date".
sort_orderenumSort order ("asc" or "desc"). Default: "desc".
actionenumFilter by transaction action.
pagenumberPage number for pagination. Default: 1.
limitnumberNumber of items per page. Default: 20.

Example Request

curl -X GET "https://api.sandbox.waza.co/lync/banking/v2/transactions?account_id=abcdef12-3456-7890-abcd-ef1234567890&type=credit" \
  -H "x-waza-api-key: your_api_key_here"

Example Response

{
  "data": {
    "items": [
      {
        "id": "abcdef12-3456-7890-abcd-ef1234567890",
        "account_id": "fedcba98-7654-3210-fedc-ba9876543210",
        "state": "COMPLETED",
        "created_date": "2023-05-14T10:30:45Z",
        "completion_date": "2023-05-14T10:35:22Z",
        "amount": {
          "value": 100000,
          "currency": "USD"
        },
        "type": "credit",
        "related_entity": {
          "type": "deposit",
          "id": "12345678-1234-1234-1234-123456789012"
        },
        "balance_before": {
          "value": 500000,
          "currency": "USD"
        },
        "balance_after": {
          "value": 600000,
          "currency": "USD"
        },
        "action": "inbound_funds"
      }
    ],
    "page": 1,
    "limit": 20,
    "totalItems": 1
  }
}

Get Transaction by ID

Retrieve details for a specific transaction.

GET /v2/transactions/{id}

Path Parameters

ParameterTypeRequiredDescription
idstring (UUID)Unique identifier of the transaction.

Example Request

curl -X GET "https://api.sandbox.waza.co/lync/banking/v2/transactions/abcdef12-3456-7890-abcd-ef1234567890" \
  -H "x-waza-api-key: your_api_key_here"

Example Response

{
  "data": {
    "id": "abcdef12-3456-7890-abcd-ef1234567890",
    "account_id": "fedcba98-7654-3210-fedc-ba9876543210",
    "state": "COMPLETED",
    "created_date": "2023-05-14T10:30:45Z",
    "completion_date": "2023-05-14T10:35:22Z",
    "amount": {
      "value": 100000,
      "currency": "USD"
    },
    "type": "credit",
    "related_entity": {
      "type": "deposit",
      "id": "12345678-1234-1234-1234-123456789012"
    },
    "balance_before": {
      "value": 500000,
      "currency": "USD"
    },
    "balance_after": {
      "value": 600000,
      "currency": "USD"
    },
    "action": "inbound_funds"
  }
}

Transaction Actions

The Transaction API uses the action field to indicate the specific type of financial activity:

ActionDescription
inbound_fundsFunds received into an account (deposits).
outbound_fundsFunds sent out from an account (outgoing transfers).
conversion_inFunds received as result of a currency conversion.
conversion_outFunds sent out as part of a currency conversion.
transfer_feeFee charged for a transfer.
transfer_failure_refundRefund when a transfer fails.
transfer_cancellationCancellation of a transfer.
transfer_failureFailed transfer.

Related Entities

Transactions are connected to higher-level operations through the related_entity field. This allows you to:

  1. Find all transactions related to a specific transfer, deposit, or conversion
  2. Understand how higher-level operations affect individual account balances
  3. Track the complete lifecycle of funds as they move through your accounts