---
title: "Transaction Data Profiles"
description: "Configure transaction data types for Enterprise Verifier2 using transaction-data-profiles.conf."
stack: "Enterprise Stack (commercial) — 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/enterprise-stack/setup/configurations/config-files/transaction-data-profiles
generated: 2026-07-20
---
# Transaction Data Profiles

`transaction-data-profiles.conf` defines the transaction data types your Enterprise Verifier2 service recognizes for
OpenID4VP `transaction_data` requests.

The `transaction-data-profiles` feature is enabled by default in the Enterprise API.

Transaction data types act as namespaces that:

- Enforce which `transaction_data.type` values the verifier accepts
- Define the fields exposed by the Verifier2 transaction-data discovery endpoint
- Drive the Enterprise Verifier2 creation UI, which renders transaction-data inputs from these profiles
- Define the DeviceSigned namespace used for `mso_mdoc` transaction-data binding

## File Location

The Enterprise Stack reads this configuration from:

`waltid-enterprise-api/config/transaction-data-profiles.conf`

## 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 `mso_mdoc` DeviceSigned binding. Example: `"org.waltid.transaction-data.payment-authorization"` |
| `displayName` | String | Human-readable name for this type. Used in the Enterprise Verifier2 UI and discovery endpoint responses. Defaults to `type` if not specified. |
| `fields` | Array | List of field names expected for this type. Used for UI generation and documentation. Example: `["amount", "currency", "payee"]` |

## Built-in Profiles

The default Enterprise 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"]
  }
]
```

## Discovery Endpoint

Enterprise Verifier2 exposes the configured profiles at:

`GET /v1/{target}/verifier2-service-api/transaction-data-profiles`

This endpoint requires the `CREATE_VERIFIER_SESSION` permission on the Verifier2 service target.

## Adding Custom Types

To add a custom transaction data type:

1. Add a new entry to `transactionDataProfiles` in `waltid-enterprise-api/config/transaction-data-profiles.conf`
2. Restart the Enterprise API so the new configuration is loaded
3. If your holders use a wallet you manage, ensure that wallet recognizes the same transaction-data type identifiers

**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:**

Only wallets that recognize the same transaction-data type identifiers can successfully present these requests. Keep your verifier and wallet type registries aligned.

## Usage in Verification Requests

Once configured, use the profile `type` in the verification session request:

```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/enterprise-stack/services/verifier2-service/credential-verification/sd-jwt-vc-oid4vp.md#transaction-data-authorization) for request constraints and end-to-end examples.
