# Email-Based Payouts

Fuul supports sending rewards to users identified by email address — no wallet required at the time of conversion. This enables incentive programs for audiences that are not crypto-native.

## How it differs from other reward types

|                                    | Tokens (onchain) | Points (offchain)       | Email-based                 |
| ---------------------------------- | ---------------- | ----------------------- | --------------------------- |
| **User identifier**                | Wallet address   | Wallet address or email | Email address               |
| **Wallet required at conversion?** | Yes              | No (if using email)     | No                          |
| **Wallet required to claim?**      | Yes              | No                      | Yes (mapped later)          |
| **Distribution**                   | Onchain voucher  | Automatic               | Held until wallet is mapped |

## How it works

1. **User performs a qualifying action** — identified by their email address
2. **Fuul calculates the reward** — a movement is created with the email as the recipient
3. **Movement enters "pending resolution"** — it stays in this state until a wallet address is mapped to the email
4. **Project creates an email-to-wallet mapping** — via the API or dashboard
5. **Rewards are resolved** — pending movements are asynchronously transferred to the mapped wallet address
6. **User claims** — the user can now claim their onchain rewards normally

## Setting up email-based payouts

Email-based payouts work with any trigger type. When sending custom events, use `email` as the `identifier_type`:

```json
{
  "name": "purchase_completed",
  "user": {
    "identifier": "user@example.com",
    "identifier_type": "email"
  },
  "dedup_id": "order-12345"
}
```

## Resolving email recipients

When rewards are created for email identifiers, they remain pending until you create a mapping. Use the recipient resolution endpoints to manage this:

Check which emails have pending payouts ([API reference](https://fuul.readme.io/reference/get_v1-payouts-pending-recipient-resolution)):

```typescript
// GET /v1/payouts/pending-recipient-resolution
// Returns: [{ email_identifier, pending_movements_count }]
```

Create mappings to resolve pending payouts to wallet addresses ([API reference](https://fuul.readme.io/reference/post_v1-payouts-recipient-mappings)):

```typescript
// POST /v1/payouts/recipient-mappings
// Body: {
//   mappings: [{
//     source_identifier: "user@example.com",
//     target_identifier: "0x1234...",
//     target_identifier_type: "evm_address"
//   }]
// }
```

{% hint style="info" %}
You can send up to 100 mappings per request. Once a mapping is created, pending movements for that email are asynchronously resolved to the target address.
{% endhint %}

## Use cases

| Use case                  | Description                                                                             |
| ------------------------- | --------------------------------------------------------------------------------------- |
| **Fintech & exchanges**   | Reward users who sign up or trade using their email, map wallets when they complete KYC |
| **CEX referral programs** | Track referrals by email, distribute token rewards after users create wallets           |
| **Pre-launch campaigns**  | Collect emails during waitlist phase, distribute rewards when users onboard             |
| **Non-crypto audiences**  | Run incentive programs for users who don't yet have wallets                             |

{% hint style="warning" %}
Email identifiers are normalized (lowercased) before processing. Ensure consistency when creating mappings.
{% endhint %}
