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.

📘

The transaction_data parameter, 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.

PropertyTypeDescription
recipientObjectRequiredThe recipient of the wire transfer.
sourceObjectRequiredThe funding source for the wire transfer.
amountFloatRequiredTransfer amount.
currencyStringRequiredCurrency code (e.g. USD).
memoStringOptionalMemo or reference note for the transfer.

recipient object:

PropertyTypeDescription
individual_nameStringOptionalName of the recipient individual.
institution_nameStringRequiredName of the recipient institution.
routing_numberStringRequiredRouting number of the recipient account.
account_numberStringRequiredAccount number of the recipient.
websiteStringOptionalWebsite of the recipient.

source object:

PropertyTypeDescription
individual_nameStringRequiredName of the source individual.
institution_nameStringOptionalName of the source institution.
account_numberStringRequiredAccount number of the source.
routing_numberStringRequiredRouting 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.

PropertyTypeDescription
payment_instrumentObjectRequiredThe payment instrument used for the mandate.
payeeObjectRequiredThe payee receiving the payment.
prompt_summaryStringRequiredSummary text displayed to the Holder for consent.
amountFloatRequiredPayment amount.
currencyStringRequiredCurrency code (e.g. USD).

payment_instrument object:

PropertyTypeDescription
typeStringRequiredType of payment instrument.
idStringRequiredIdentifier of the payment instrument.
instructionStringOptionalInstruction associated with the instrument.

payee object:

PropertyTypeDescription
idStringOptionalIdentifier of the payee.
nameStringRequiredName of the payee.
websiteStringOptionalWebsite 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.

PropertyTypeDescription
titleStringOptionalTitle of the payment.
descriptionStringOptionalDescription of the payment.
currencyStringRequiredCurrency code (e.g. USD).
itemsObject[]RequiredList of line items in the payment.

Each object in items:

PropertyTypeDescription
quantityIntegerRequiredQuantity of the item.
unit_costFloatRequiredCost per unit.
labelStringRequiredLabel 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.

PropertyTypeDescription
ip_addressStringRequiredIP address of the Holder.
device_idStringOptionalDevice 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