Activity History

Query and filter transaction history.

Before You Start

Read the following guides before proceeding:

GuideWhy
Getting StartedPlatform overview and setup
Api BasicsRequired headers and request configuration
AuthenticationHow to obtain access tokens
OnboardingUser and wallet registration

Overview

The activity feed provides paginated access to all user transactions. Activities can be filtered by type (e.g., only card transactions) or by subject (e.g., all transactions for a specific card).


Get Activity Feed

Retrieve user activities with optional filtering.

Endpoint

GET /api/v1/activity/feed

Query Parameters

ParameterTypeRequiredDescription
page_numberintegerNoPage number (default: 1)
page_sizeintegerNoResults per page (default: 25)
typesstring[]NoFilter by activity types (comma-separated)
subjectstringNoFilter by subject (card ID, wallet address, or account reference)

The types and subject parameters are mutually exclusive.

Response

{
  "activities": [
    {
      "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
      "user_address": "0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE",
      "type": "CardTransaction",
      "direction": "Outbound",
      "status": "Completed",
      "source": {
        "type": "Cards",
        "card": {
          "id": "00000000-0000-0000-0000-000000000001",
          "pan_last": "4242",
          "payment_system": "Visa"
        }
      },
      "destination": {
        "type": "Merchant",
        "merchant": {
          "id": "00000000-0000-0000-0000-000000000002",
          "name": "Coffee Shop",
          "category": "Food & Drink"
        }
      },
      "source_amount": {
        "amount": 5.50,
        "token_symbol": "WEUR",
        "token_address": "0x..."
      },
      "destination_amount": {
        "amount": 5.50,
        "currency": "EUR"
      },
      "rate": {
        "ticker": "EUR/WEUR",
        "rate": 1.0
      },
      "created_at": "2024-01-15T10:30:00Z",
      "activity_steps": [
        {
          "type": "Initiated",
          "status": "Completed",
          "created_at": "2024-01-15T10:30:00Z",
          "completed_at": "2024-01-15T10:30:01Z"
        },
        {
          "type": "CryptoOut",
          "status": "Completed",
          "created_at": "2024-01-15T10:30:01Z",
          "completed_at": "2024-01-15T10:30:02Z"
        },
        {
          "type": "CardOut",
          "status": "Completed",
          "created_at": "2024-01-15T10:30:02Z",
          "completed_at": "2024-01-15T10:30:05Z"
        },
        {
          "type": "Completed",
          "status": "Completed",
          "created_at": "2024-01-15T10:30:05Z",
          "completed_at": "2024-01-15T10:30:05Z"
        }
      ]
    }
  ],
  "pagination": {
    "page_number": 1,
    "page_size": 25,
    "total_count": 150
  }
}

Activity Types

TypeDirectionDescription
CryptoBothOn-chain crypto transfer
ExchangeInternalToken exchange within wallet
CardTransactionBothCard transaction (purchase or refund)
CardTransferOutboundPush to card transfer
CardFeesPaymentOutboundCard-related fee payment
SepaBothSEPA bank transfer
AchPushBothACH push transfer
AchPullBothACH pull transfer
FasterPaymentBothUK Faster Payments transfer
SwiftBothSWIFT international transfer
YieldClaimInboundYield/reward claim

Activity Directions

DirectionDescription
InboundFunds received into user's wallet
OutboundFunds sent from user's wallet
InternalMovement within user's accounts (e.g., exchange)

Activity Statuses

StatusDescription
PendingTransaction in progress
CompletedTransaction successfully finished
FailedTransaction failed (see status_reason)

Activity Steps

Multi-step transactions include an activity_steps array showing progression through each processing stage.

Step TypeDescription
InitiatedTransaction started
CryptoInTokens credited to user wallet
CryptoOutTokens debited from user wallet
BankInFiat received from bank
BankOutFiat sent to bank
CardInFiat received from card network
CardOutFiat sent to card network
ReviewManual or compliance review
ReversalTransaction reversed
SyntheticWrapTokens wrapped to synthetic tokens
SyntheticUnwrapTokens unwrapped from synthetic tokens
CompletedTransaction finalized

Each step has its own status and timestamps for tracking progression.


Subject Types

Activities reference source and destination subjects that identify the parties involved.

Subject TypeDescriptionFields
WalletUser walletaddress
ExternalWalletExternal crypto addressaddress
CardsUser's cardid, pan_last, payment_system
ExternalCardExternal card (push to card)id, pan_last, payment_system
MerchantCard merchantid, name, category, full_address
SepaBankAccountSEPA bank accountiban, bic, owner_name
AchBankAccountACH bank accountaccount_number, routing_number, owner_name
FasterPaymentBankAccountUK bank accountaccount_number, sort_code, owner_name
SwiftBankAccountSWIFT bank accountiban, bic, owner_name

Filter Examples

Filter by Type

Get only card transactions:

GET /api/v1/activity/feed?types=CardTransaction

Get card and SEPA transactions:

GET /api/v1/activity/feed?types=CardTransaction,Sepa

Filter by Subject

Get all activities for a specific card:

GET /api/v1/activity/feed?subject=00000000-0000-0000-0000-000000000001

Get all activities for a specific wallet address:

GET /api/v1/activity/feed?subject=0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE

Activity Webhook

Activities are also delivered via webhook as they occur.

Endpoint: POST {base_url}/v2/webhooks/activities

{
  "id": "a1b2c3d4-e5f6-7890-1234-567890abcdef",
  "user_address": "0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE",
  "type": "Sepa",
  "direction": "Inbound",
  "status": "Completed",
  "source": {
    "type": "SepaBankAccount",
    "bank_account": {
      "iban": "DE89370400440532013000",
      "bic": "COBADEFFXXX",
      "owner_name": "Alex Grey",
      "is_business": false
    }
  },
  "destination": {
    "type": "Wallet",
    "wallet": {
      "address": "0xA7E41d5680dE394EaA2ed417169DFf56840Fb3EE"
    }
  },
  "source_amount": {
    "amount": 1000.00,
    "currency": "EUR"
  },
  "destination_amount": {
    "amount": 1000.00,
    "token_symbol": "WEUR",
    "token_address": "0x..."
  },
  "created_at": "2024-01-15T10:30:00Z",
  "activity_steps": [...]
}

Error Handling

Error ReasonIssueDescription
ErrorInvalidFieldinvalid_formatSubject is not a valid UUID or address
ErrorInvalidFieldinvalid_valueActivity type value is not recognized
ErrorInvalidFieldmutually_exclusiveBoth types and subject provided

Error Response Format

Invalid subject format:

{
  "error_reason": "ErrorInvalidField",
  "error_description": "Invalid format for subject",
  "error_category": {
    "category": "CategoryValidationFailure",
    "http_status_code": 400
  },
  "error_details": [
    {
      "key": "field",
      "details": "subject"
    },
    {
      "key": "issue",
      "details": "invalid_format"
    }
  ]
}

Mutually exclusive parameters:

{
  "error_reason": "ErrorInvalidField",
  "error_description": "Fields are mutually exclusive",
  "error_category": {
    "category": "CategoryValidationFailure",
    "http_status_code": 400
  },
  "error_details": [
    {
      "key": "fields",
      "details": "types,subject"
    },
    {
      "key": "issue",
      "details": "mutually_exclusive"
    }
  ]
}