> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veromerchants.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Protocol Overview

> The open standard behind Vero digital receipts

> [!NOTE]
>
> **Who this is for:** security reviewers, card issuers, brokerages, POS providers and developers. Merchants can start with the [Digital Receipts overview](https://docs.veromerchants.com/digital-receipts/overview.md) instead.

Vero digital receipts are built on the open [Digital Receipt Protocol (DRP)](https://www.digitalreceiptprotocol.org/), a standard for end-to-end encrypted, itemized receipts. Like OAuth standardized sign-in and HTTP standardized web traffic, DRP gives receipt data a standard layer that any bank, app or POS can implement.

## Design goals

* **The customer owns the data.** Receipts are encrypted to the customer's public key. Only the matching private key, held on the customer's device, can decrypt them.
* **Proof of authenticity.** Merchant and issuer each sign the receipt, so tampering is detectable.
* **Portability.** Receipts use a standard JSON-LD format, so they can move between banks, brokerages and apps without being rebuilt.
* **No lock-in.** The protocol is open, so any party can implement it.

## Technical foundation

| Area | Choice |
| - | - |
| Key pairs | RSA-2048 |
| Receipt encryption | AES-256-GCM, with the content key wrapped using RSA-OAEP-SHA256 |
| Private key storage | Device hardware (iOS Secure Enclave, Android KeyStore) |
| Authenticity | Dual signatures from merchant and card issuer |
| Data format | JSON-LD |
| Decrypt access | Short-lived tokens (2-3 minutes), logged for audit |

## Participants

| Participant | Role |
| - | - |
| **Merchant** | Produces and signs the itemized receipt, usually through their POS. |
| **POS provider** | Builds receipts from sale data, signs and encrypts them for merchants. |
| **Card issuer** | Countersigns the receipt and shows it in the banking app. |
| **Customer** | Holds the private key and decides who receipts are shared with. |
| **Authorized third parties** | Brokerages, expense, tax and finance apps that receive receipts the customer shares. |

## The flow

1. The customer pays at the merchant's POS.
2. The merchant's POS builds an itemized JSON-LD receipt and signs it with the merchant's private key.
3. The receipt is encrypted with the customer's public key and sent to the card issuer.
4. The issuer adds its signature and stores the encrypted receipt against the transaction.
5. The customer opens it in their banking app, which decrypts it on the device.

> [card] [See the sequence diagram](https://docs.veromerchants.com/api-reference/sequence-diagram.md)
>
> The full flow from payment intent through receipt viewing.

***

> [card] [Encryption and key ownership](https://docs.veromerchants.com/digital-receipts/protocol/encryption.md)
>
> Key generation, storage, signatures and recovery.

> [card] [Portability and sharing](https://docs.veromerchants.com/digital-receipts/protocol/portability.md)
>
> How receipts move to banks, brokerages and third parties.

> [card] [Card issuers](https://docs.veromerchants.com/digital-receipts/protocol/card-issuers.md)
>
> Add receipts to a banking app.

> [card] [POS systems](https://docs.veromerchants.com/digital-receipts/protocol/pos-systems.md)
>
> Send receipts for every merchant on your platform.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.