Transactions

Get customer transactions

Retrieve deposit and withdrawal history for a customer.

GET
/api/v2/customers/{customerId}/transactions

Returns the transaction history for a specific customer. Only includes DEPOSIT and WITHDRAWAL transactions. For deposit transactions where developerFee is present, wallet receive amount = targetAmount - developerFee.amount.

For AUD-only customers, each AUD payment is a DEPOSIT with paymentRail: "AU_BANK_TRANSFER", sourceCurrency: "AUD" and payerName; payments on hold are reported as PROCESSING. A returned AUD payment reports PROCESSING while the return is in flight and REVERSED once it settles.

Authorization

bearerAuth
AuthorizationBearer <token>

Organization API key obtained on Settings > API Keys page in Compose UI.

In: header

Path Parameters

customerId*string

Unique identifier of the customer

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET 'https://compose.finance/api/v2/customers/{customerId}/transactions' \  -H 'Authorization: Bearer YOUR_API_KEY'

[
  {
    "id": "txn_dep_eur_001",
    "type": "DEPOSIT",
    "status": "COMPLETED",
    "paymentRail": "SEPA",
    "createdAt": "2024-01-15T10:30:00.000Z",
    "completedAt": "2024-01-15T10:35:00.000Z",
    "reference": "FLGVNY3H9F",
    "sourceCurrency": "EUR",
    "targetCurrency": "USDC",
    "sourceAmount": "1000",
    "targetAmount": "1167.95886",
    "exchangeRate": "1.1691279887",
    "fee": "1",
    "depositInstructions": {
      "accountType": "sharedAccount",
      "reference": "FLGVNY3H9F"
    },
    "walletAddress": "0x1234567890abcdef1234567890abcdef12345678",
    "developerFee": {
      "developerSpreadFeeBps": 100,
      "amount": "11.679589"
    },
    "txHash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  },
  {
    "id": "txn_dep_usd_002",
    "type": "DEPOSIT",
    "status": "COMPLETED",
    "paymentRail": "FEDWIRE",
    "createdAt": "2024-01-16T11:00:00.000Z",
    "completedAt": "2024-01-16T11:03:00.000Z",
    "reference": "USDREF12345",
    "sourceCurrency": "USD",
    "targetCurrency": "USDC",
    "sourceAmount": "750",
    "targetAmount": "748.5",
    "exchangeRate": "1",
    "fee": "1.5",
    "depositInstructions": {
      "accountType": "sharedAccount",
      "reference": "USDREF12345"
    },
    "walletAddress": "0x1234567890abcdef1234567890abcdef12345678",
    "developerFee": null,
    "txHash": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd"
  },
  {
    "id": "txn_wdr_eur_003",
    "type": "WITHDRAWAL",
    "status": "COMPLETED",
    "requiresUiAction": false,
    "paymentRail": "SEPA",
    "createdAt": "2024-01-20T14:00:00.000Z",
    "completedAt": "2024-01-20T14:12:00.000Z",
    "reference": null,
    "sourceCurrency": "USDC",
    "targetCurrency": "EUR",
    "sourceAmount": "500",
    "targetAmount": "430",
    "exchangeRate": "0.865",
    "fee": "2.5",
    "withdrawalBank": {
      "id": "bank_123abc",
      "beneficiaryName": "JOHN DOE",
      "currency": "EUR",
      "paymentRail": "SEPA",
      "iban": "DE89370400440532013000",
      "bic": "COBADEFFXXX"
    },
    "walletAddress": null,
    "developerFee": null,
    "txHash": "0xfedcba0987654321fedcba0987654321fedcba0987654321fedcba0987654321"
  },
  {
    "id": "txn_wdr_usd_004",
    "type": "WITHDRAWAL",
    "status": "PROPOSED",
    "requiresUiAction": true,
    "paymentRail": "FEDWIRE",
    "createdAt": "2024-01-22T09:15:00.000Z",
    "completedAt": null,
    "reference": null,
    "sourceCurrency": "USDC",
    "targetCurrency": "USD",
    "sourceAmount": "800",
    "targetAmount": "797.5",
    "exchangeRate": "1",
    "fee": "2.5",
    "withdrawalBank": {
      "id": "bank_789ghi",
      "beneficiaryName": "JOHN DOE",
      "currency": "USD",
      "paymentRail": "FEDWIRE",
      "accountNumber": "214033031443",
      "routingNumber": "101019644"
    },
    "walletAddress": null,
    "developerFee": null,
    "txHash": null
  }
]

{
  "error": "Unauthorized - Invalid or missing API key or session"
}
{
  "error": "Customers feature is not enabled for your organization"
}
{
  "error": "Customer not found"
}
{
  "error": "Rate limit exceeded. Please try again later."
}

{
  "error": "Internal server error"
}

Get customer transaction GET

Returns details for a specific customer transaction. Use this to check the current status of a withdrawal or deposit. For deposit transactions where `developerFee` is present, wallet receive amount = `targetAmount - developerFee.amount`. **Status Values** - `PROCESSING` — Transaction is being processed (an in-flight deposit return also reports PROCESSING) - `PROPOSED` — Awaiting approval in dashboard - `PARTIALLY_SIGNED` — If multiple approvers configured: requires more approvals. - `COMPLETED` — Successfully completed - `FAILED` — Transaction failed - `CANCELLED` — Cancelled by user - `EXPIRED` — Expired before completion - `REVERSED` — Deposit returned to the sender's bank account **Action Required** When `requiresUiAction` is `true`, the transaction needs user approval in the dashboard. For AUD-only customers, each AUD payment is a `DEPOSIT` with `paymentRail: "AU_BANK_TRANSFER"`, `sourceCurrency: "AUD"` and `payerName`; payments on hold are reported as `PROCESSING`. A returned AUD payment reports `PROCESSING` while the return is in flight and `REVERSED` once it settles. An AUD withdrawal that reached `COMPLETED` can later move to `FAILED` if the receiving bank returns the payment.

Verify Ethereum address POST

Validates an Ethereum address and provides information about its type. **Checks Performed** - Address format validation (EIP-55 checksum; all-lowercase addresses are accepted) - Contract detection (checks if address has deployed code on Base) - Safe wallet identification (checks if it's a Safe multisig on Base) **Use Cases** - Validate customer wallet addresses before saving - Detect if a recipient is a smart contract - Identify Safe wallets for display purposes