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

# User journey

> Program × Product Manager: how the Paylead integration works end to end.

Paylead is an [Embedded Loyalty](/program/user-journey/what-is-paylead) platform built on two domains: [Perks](/glossary#perks) (savings on everyday spending, delivered through [Cashback](/glossary#cashback), vouchers, and bookings) and [Loyalty](/glossary#loyalty) (an embedded loyalty wallet). Each domain has its own Consumer journey. This page walks through both, from sign-up to payout.

## At a glance

Both journeys start from the same platform foundation. The Consumer then opts in to a domain, which determines how they earn and receive value.

```mermaid theme={null}
flowchart TD
    subgraph Foundation["Platform foundation"]
        direction LR
        A["Create Consumer (consumer_id)"] --> B["Share transactions"]
    end

    B --> C{"Consumer opts in"}

    C -->|Perks| P1["Discover targeted Offers"]
    C -->|Loyalty| L1["Link retailer loyalty account"]

    subgraph Perks["Perks journey"]
        direction TB
        P1 --> P2["Use the Offer"]
        P2 --> P3["Reward created"]
        P3 --> P4["Pool and Ventilation"]
    end

    subgraph Loyalty["Loyalty journey"]
        direction TB
        L1 --> L2["Pay with bank card"]
        L2 --> L3["Automatic Earn"]
    end

    classDef neutral fill:#f1efe8,stroke:#888780,color:#2c2c2a
    classDef decision fill:#ffffff,stroke:#888780,color:#2c2c2a
    classDef primary fill:#e6f1fb,stroke:#0465ff,color:#042c53
    classDef accent fill:#e1f5ee,stroke:#0f6e56,color:#04342c

    class A,B neutral
    class C decision
    class P1,P2,P3,P4 primary
    class L1,L2,L3 accent

    style Foundation fill:transparent,stroke:#b4b2a9,color:#5f5e5a
    style Perks fill:transparent,stroke:#85b7eb,color:#185fa5
    style Loyalty fill:transparent,stroke:#5dcaa5,color:#0f6e56
```

## The platform foundation

Both journeys sit on a shared, **service-agnostic foundation**. Before a Consumer can use any service, the bank:

1. **Creates the Consumer at the platform level**: a unique **`consumer_id`**, the single identifier for that end user **across your whole Program** (not one per account). A Consumer can link **one or several bank accounts** under that same identifier.
2. **Manages the Consumer's transactions at the platform level**: typically the last 12 months of history shared at onboarding, then ongoing transactions. They are pushed once and reused by whichever service the Consumer later joins.

A Consumer then **opts in to a service**: Perks, Loyalty, or both. Opting in is what unlocks that service's features. **Consent and segmentation, for example, belong to Perks**, not to the platform foundation.

<Note>
  The `consumer_id` is the backbone of the integration. You reuse it to push transactions, authenticate the Consumer into the [WebApp](/program/user-journey/concepts/web-app), match incoming [Webhooks](/program/user-journey/concepts/webhooks), and (for support and operations) investigate a missing Reward or attribute a [Gift](/glossary#gift).
</Note>

## The Perks journey

In the Perks domain, every Perk is an [Offer](/glossary#offer): the [Consumer](/glossary#consumer) realizes a saving by **using** that Offer. Two things are common to every Perk: the saving for the Consumer, and the **targeting on transactional data**. Offers are matched and ranked from real spending habits, so each Consumer sees the ones that fit how they actually spend.

What changes from one Perk to the next is the **Perk type**: how the Consumer uses the Offer, and how the saving reaches them:

| Perk type                 | How the Consumer uses the Offer                                                                            | How the saving is delivered                                                                                                                              |
| ------------------------- | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Cashback by Paylead**   | Pays at an eligible [Brand](/glossary#brand) (fully automatic: no code, no coupon, no activation, no card) | [Cashback](/glossary#cashback) credited to the [pool](/glossary#pool) (cagnotte), paid out via [Ventilation](/program/user-journey/concepts/ventilation) |
| **Voucher**               | Buys a voucher up front, below its face value                                                              | Saving built into the purchase price                                                                                                                     |
| **Voucher as a cashback** | Buys the voucher at face value                                                                             | Discount credited to the pool (cagnotte)                                                                                                                 |

<Note>
  A [**Gift**](/glossary#gift) is the exception: a Reward the [Program Manager](/glossary#program-manager) grants directly, such as a welcome gift, a birthday reward, a special offer, or recognition for an action. It is neither purchase-driven nor targeted, but it is credited and paid out exactly like a Cashback (pool → Ventilation).
</Note>

The walkthrough below follows **Cashback by Paylead**, the fully automatic type. Every Perk type shares the first phases (opting in to Perks and targeted Offer discovery); they differ only in how the Consumer then uses the Offer.

<Steps>
  <Step title="Opt in to Perks">
    On top of the [platform foundation](#the-platform-foundation) (Consumer created, transactions shared), the Consumer **opts in to Perks** by consenting to Paylead using their banking data to receive matching Offers.

    Enrolling accepts the Program's terms and makes matching Offers available. The Consumer can optionally grant the `SMART_RANKING` consent to enable [Offer Smart Ranking](/glossary#offer-smart-ranking), and the Program can optionally place them in [Segments](/glossary#segment) to scope which Offers they see. See the [Consumer lifecycle](/program/user-journey/guides/manage-consumers) for both flows.

    Once opted in, the Consumer is eligible to receive Offers, ranked from the platform transaction data via [Offer Smart Ranking](/glossary#offer-smart-ranking).
  </Step>

  <Step title="Offer discovery">
    With the Consumer enrolled and their history shared, available Offers are surfaced inside your bank's loyalty section. Your Program chooses **how** to render them:

    * **Native rendering**: your app fetches Offers from the API and displays them with your own components.
    * **Embedded WebApp**: you embed Paylead's white-label [WebApp](/program/user-journey/concepts/web-app), a Paylead-hosted webview customized to blend into your bank's UX via webview redirection. Paylead renders Offer discovery, Reward history, and (for the Loyalty domain) the wallet; your app only provides the container and authenticates the Consumer with their `consumer_id`.

    Most Programs mix both: native entry points for tight integration, with the WebApp handling the richer flows. Embedding the WebApp also means **getting Paylead's new features first**: improvements ship inside the WebApp ahead of the API surface.

    Either way, Offers are curated by your team in [Shift](/glossary#shift) and carry the merchant's conditions: eligible Brand, Reward terms, validity period, and channel (in-store, online, or both).
  </Step>

  <Step title="Offer usage & matching">
    Once Offers are surfaced, the Consumer **uses** them, and Paylead detects that usage to trigger the Reward. How usage is captured depends on the Perk type.

    In every case, a validated usage becomes a Reward.

    <Tip>
      If the same purchase arrives from multiple sources (e.g. your core banking system and an account aggregator), the Reward Attribution engine prevents duplicate Rewards and selects the winning Program automatically.
    </Tip>
  </Step>

  <Step title="Reward payout">
    A matched transaction creates a Reward. For the **cashback-type** Perks (Cashback by Paylead, Voucher as a cashback, and Booking as a cashback), as well as for [**Gifts**](/glossary#gift), Paylead manages the Consumer's [pool](/glossary#pool) (the cagnotte).

    Once a Reward reaches `Validated`, Paylead guarantees the payout.
  </Step>
</Steps>

## The Loyalty journey

In the Loyalty domain, Paylead links the Consumer's bank account to their retailer loyalty accounts inside the banking experience. The Consumer earns Brand benefits automatically when they pay with their bank card. This is **Automatic Earn**: no loyalty card to present at checkout.

Like Perks, Loyalty sits on the [platform foundation](#the-platform-foundation) (Consumer created, transactions shared). Unlike Perks, it does **not** rely on transaction-analysis consent or segmentation; those are Perks-specific. For the full Loyalty journey, see [Loyalty journey](/program/user-journey/loyalty-journey).

<Steps>
  <Step title="Opt in to the Loyalty service">
    On top of the [platform foundation](#the-platform-foundation), the Consumer **opts in to the Loyalty service** from the bank app. Opting in runs in the Paylead [WebApp](/program/user-journey/concepts/web-app) and is reduced to accepting the Program's terms; the form is pre-filled from the known banking context.
  </Step>

  <Step title="Create or link a loyalty account">
    Having joined the service, the Consumer creates or links a **retailer loyalty account** (one per Brand) from the bank app, binding it to their bank card.
  </Step>

  <Step title="Pay">
    The Consumer pays with their bank card as their default payment instrument at a Loyalty Program eligible point of sale. No loyalty card or other authentication method is needed at checkout.
  </Step>

  <Step title="Earn">
    Loyalty benefits accrue automatically to the linked account. This is Automatic Earn.

    Webhooks are available to the Program to animate and engage Consumers at the right moment, such as when a new Loyalty reward is earned.
  </Step>

  <Step title="Engage">
    The Consumer manages their loyalty account from the bank app, not from separate merchant apps.

    Once a Consumer has linked a loyalty account, they gain access to a dedicated **Brand Hub** within the bank app for each connected Loyalty program. From this space, the Consumer can check their Loyalty balance and access additional services, depending on the Loyalty program's configuration.

    Depending on the type of Loyalty program, the Consumer has a Loyalty balance where earned Loyalty rewards accumulate. They can then Burn their Loyalty rewards by converting them into tangible merchandise or gifts. This part of the process also runs in the Paylead [WebApp](/program/user-journey/concepts/web-app).
  </Step>
</Steps>

## Key concepts

<CardGroup cols={2}>
  <Card title="Consumer" icon="user" href="/glossary#consumer">
    The end user registered in your Program and eligible to earn Rewards.
  </Card>

  <Card title="Offer" icon="tag" href="/glossary#offer">
    A published promotion tied to a Brand, a Cashback rate, and a validity period.
  </Card>

  <Card title="Reward" icon="gift" href="/glossary#reward">
    What a Consumer earns after a transaction matches an Offer's terms.
  </Card>

  <Card title="Ventilation" icon="hand-coins" href="/glossary#ventilation">
    The payout process that distributes Cashback amounts to Consumer accounts.
  </Card>
</CardGroup>

## What's next

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/program/user-journey/quickstart">
    Make your first authenticated API call in minutes.
  </Card>

  <Card title="Authentication" icon="key" href="/program/user-journey/authentication">
    Get your credentials and authenticate against the Paylead API.
  </Card>

  <Card title="Releases" icon="newspaper" href="/program/api/releases">
    See what changed in each API version.
  </Card>
</CardGroup>
