Transaction Data Templates
Catalog of transaction_data templates Proof supports in OID4VP requests.
When a Relying Party requests a credential presentation, it can attach transaction_data to bind specific data into the presentation. The Key Binding JWT then carries a signed hash of that data. This page catalogs the templates supported by Proof.
Thetransaction_dataparameter, its base64url-encoded JSON object shape (type,credential_ids,payload), and the rules for passing multiple values are defined by the OID4VP specification . For where the parameter sits in the OID4VP authorization request, see Verify a Credential .
Wire Instructions
urn:proof:params:vc:transaction-data:wire-instructions:v1
Binds the recipient, source, amount, and reference of a wire transfer to the presentation. The Holder sees the wire details on the consent screen before signing.
| Property | Type | Description | |
|---|---|---|---|
recipient | Object | Required | The recipient of the wire transfer. |
source | Object | Required | The funding source for the wire transfer. |
amount | Float | Required | Transfer amount. |
currency | String | Required | Currency code (e.g. USD). |
memo | String | Optional | Memo or reference note for the transfer. |
recipient object:
| Property | Type | Description | |
|---|---|---|---|
individual_name | String | Optional | Name of the recipient individual. |
institution_name | String | Required | Name of the recipient institution. |
routing_number | String | Required | Routing number of the recipient account. |
account_number | String | Required | Account number of the recipient. |
website | String | Optional | Website of the recipient. |
source object:
| Property | Type | Description | |
|---|---|---|---|
individual_name | String | Required | Name of the source individual. |
institution_name | String | Optional | Name of the source institution. |
account_number | String | Required | Account number of the source. |
routing_number | String | Required | Routing number of the source account. |
{
"type": "urn:proof:params:vc:transaction-data:wire-instructions:v1",
"credential_ids": ["proof_credential"],
"payload": {
"recipient": {
"individual_name": "Darren Louie",
"institution_name": "First National Bank",
"routing_number": "021000089",
"account_number": "0123456789"
},
"source": {
"individual_name": "Jeremie Charrier",
"institution_name": "Acme Credit Union",
"routing_number": "323075880",
"account_number": "9876543210"
},
"amount": 12500.00,
"currency": "USD",
"memo": "September retainer"
}
}Payment Mandate
urn:proof:params:vc:transaction-data:payment-mandate:v1
Binds a payment mandate authorization to the presentation. Use this when a Holder is authorizing recurring or future-dated charges on a payment instrument.
| Property | Type | Description | |
|---|---|---|---|
payment_instrument | Object | Required | The payment instrument used for the mandate. |
payee | Object | Required | The payee receiving the payment. |
prompt_summary | String | Required | Summary text displayed to the Holder for consent. |
amount | Float | Required | Payment amount. |
currency | String | Required | Currency code (e.g. USD). |
payment_instrument object:
| Property | Type | Description | |
|---|---|---|---|
type | String | Required | Type of payment instrument. |
id | String | Required | Identifier of the payment instrument. |
instruction | String | Optional | Instruction associated with the instrument. |
payee object:
| Property | Type | Description | |
|---|---|---|---|
id | String | Optional | Identifier of the payee. |
name | String | Required | Name of the payee. |
website | String | Optional | Website of the payee. |
{
"type": "urn:proof:params:vc:transaction-data:payment-mandate:v1",
"credential_ids": ["proof_credential"],
"payload": {
"payment_instrument": {
"type": "card",
"id": "card_4242424242424242"
},
"payee": {
"name": "Acme Subscriptions",
"website": "https://acme.example"
},
"prompt_summary": "Authorize Acme Subscriptions to charge $19.99 monthly.",
"amount": 19.99,
"currency": "USD"
}
}Itemized Payment
urn:proof:params:vc:transaction-data:payment-itemized:v1
Binds an itemized payment summary to the presentation. Use this for checkout consent flows where the Holder is approving a specific basket of items.
| Property | Type | Description | |
|---|---|---|---|
title | String | Optional | Title of the payment. |
description | String | Optional | Description of the payment. |
currency | String | Required | Currency code (e.g. USD). |
items | Object[] | Required | List of line items in the payment. |
Each object in items:
| Property | Type | Description | |
|---|---|---|---|
quantity | Integer | Required | Quantity of the item. |
unit_cost | Float | Required | Cost per unit. |
label | String | Required | Label describing the item. |
{
"type": "urn:proof:params:vc:transaction-data:payment-itemized:v1",
"credential_ids": ["proof_credential"],
"payload": {
"title": "Order #A41-22198",
"currency": "USD",
"items": [
{ "quantity": 2, "unit_cost": 18.00, "label": "Stoneware mug" },
{ "quantity": 1, "unit_cost": 42.50, "label": "Organic coffee subscription, 1mo" }
]
}
}Session Data
urn:proof:params:vc:transaction-data:session-data
Binds session context (IP address, optional device identifier) to the presentation for risk and audit. Typically passed alongside another template (Wire Instructions, Payment Mandate, or Itemized Payment) rather than on its own.
| Property | Type | Description | |
|---|---|---|---|
ip_address | String | Required | IP address of the Holder. |
device_id | String | Optional | Device identifier of the Holder. |
{
"type": "urn:proof:params:vc:transaction-data:session-data",
"credential_ids": ["proof_credential"],
"payload": {
"ip_address": "203.0.113.42",
"device_id": "ios-9D8F7E6C-5B4A-3210"
}
}Custom templates
Need a template that's not here? Reach out to our Product team at [email protected] . We add new templates to fit specific RP use cases.
See also: Verify a Credential · Sign Transactions
Updated about 2 hours ago