---
title: "Transaction Data Profiles"
description: "Configure transaction data types for OpenID4VP authorization requests using transaction-data-profiles.conf."
stack: "Community Stack (open source) — version 0.21.0"
stack_version: "0.21.0"
stack_comparison: https://docs.walt.id/community-vs-enterprise.md
canonical_url: https://docs.walt.id/community-stack/verifier2/configurations/config-files/transaction-data-profiles
generated: 2026-07-08
---
# Transaction Data Profiles

`transaction-data-profiles.conf` defines the transaction data types the verifier and wallet recognize for binding presentations to specific actions (e.g., payment authorization, account access).

Transaction data types act as namespaces that:
- Enforce which types the wallet will accept in authorization requests
- Define the structure and fields for UI/discovery endpoints
- Are validated by the wallet's `TransactionDataTypeRegistry`

The `transaction-data-profiles` feature is enabled by default for Verifier2 and backs the runtime discovery endpoint:

`GET /transaction-data-profiles`

The same profile format is also used by the walt.id Wallet API, which exposes:

`GET /wallet-api/transaction-data-profiles`

## Fields

### `transactionDataProfiles`

_Array of Objects_ — List of recognized transaction data types. Each profile defines:

| Field | Type | Description |
|---|---|---|
| `type` | String | **Required.** The transaction data type identifier. Used as the `type` field in transaction data entries and as the namespace for mdoc DeviceSigned binding. Example: `"org.waltid.transaction-data.payment-authorization"` |
| `displayName` | String | Human-readable name for this type. Used in UIs and discovery endpoints. Defaults to `type` if not specified. |
| `fields` | Array | List of expected field names for this type. Used for documentation and UI generation. Example: `["amount", "currency", "payee"]` |

## Built-in Profiles

The default configuration includes two profiles:

```editorconfig[transaction-data-profiles.conf]
transactionDataProfiles = [
  {
    type = "org.waltid.transaction-data.payment-authorization"
    displayName = "Payment Authorization"
    fields = ["amount", "currency", "payee"]
  },
  {
    type = "org.waltid.transaction-data.account-access"
    displayName = "Account Access"
    fields = ["account_identifier", "access_scope"]
  }
]
```

## Adding Custom Types

To add a custom transaction data type:

1. Add a new entry to the `transactionDataProfiles` array in both the verifier and wallet config files:
   - Verifier: `waltid-services/waltid-verifier-api2/config/transaction-data-profiles.conf`
   - Wallet: `waltid-services/waltid-wallet-api/config/transaction-data-profiles.conf`

2. Restart both services to load the new configuration

**Example:** Adding a subscription authorization type:

```editorconfig[transaction-data-profiles.conf]
transactionDataProfiles = [
  {
    type = "org.waltid.transaction-data.payment-authorization"
    displayName = "Payment Authorization"
    fields = ["amount", "currency", "payee"]
  },
  {
    type = "org.waltid.transaction-data.account-access"
    displayName = "Account Access"
    fields = ["account_identifier", "access_scope"]
  },
  {
    type = "org.example.subscription-authorization"
    displayName = "Subscription Authorization"
    fields = ["service_name", "billing_cycle", "price"]
  }
]
```

**Info:**

**Important:** Transaction data types must be configured on **both** the verifier and wallet. Mismatched configurations will cause the wallet to reject authorization requests with unknown types.

## Usage in Verification Requests

Once configured, use the `type` in your verification session transaction data:

```json
{
  "flow_type": "cross_device",
  "core_flow": {
    "dcql_query": { ... }
  },
  "openid": {
    "transactionData": [
      {
        "type": "org.example.subscription-authorization",
        "credential_ids": ["pid"],
        "require_cryptographic_holder_binding": true,
        "transaction_data_hashes_alg": ["sha-256"],
        "service_name": "Premium Streaming",
        "billing_cycle": "monthly",
        "price": "12.99"
      }
    ]
  }
}
```

See [Transaction Data Authorization](https://docs.walt.id/community-stack/verifier2/credential-verification/sd-jwt-vc-oid4vp.md#transaction-data-authorization) for complete usage details.
