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

# Fulfilment Pending

> Fired when a non-monetary reward is waiting to be fulfilled by your application.

Your endpoint will receive this event right after a non-monetary reward (e.g., free months, credits) is attributed to a promoter. Use this event to trigger your own fulfilment logic.

## How to respond

The response status code your endpoint returns controls the fulfilment state in FirstPromoter:

| Status code      | Meaning                                                               |
| ---------------- | --------------------------------------------------------------------- |
| `200`            | Reward fulfilled — FirstPromoter marks it as complete.                |
| `2xx` (not 200)  | Keep as pending — FirstPromoter leaves the reward in `pending` state. |
| Any other status | Error — FirstPromoter retries up to 7 times throughout the day.       |

## Payload

<ResponseField name="event" type="object">
  <Expandable title="properties">
    <ResponseField name="id" type="number">
      Unique ID of the event.
    </ResponseField>

    <ResponseField name="type" type="string">
      Always `fulfilment_pending` for this event.
    </ResponseField>

    <ResponseField name="created_at" type="string">
      ISO 8601 timestamp of when the event occurred.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="properties">
    <ResponseField name="id" type="number">ID of the reward record.</ResponseField>
    <ResponseField name="status" type="string">Status of the reward. Will be `pending` at time of this event.</ResponseField>
    <ResponseField name="amount" type="number">Quantity of the reward (e.g., number of free months).</ResponseField>
    <ResponseField name="unit" type="string">Unit of the reward (e.g., `free_months`, `credits`).</ResponseField>
    <ResponseField name="created_at" type="string">Timestamp of when the reward was created.</ResponseField>
    <ResponseField name="has_issues" type="boolean">Whether any previous fulfilment attempts encountered errors.</ResponseField>

    <ResponseField name="reward" type="object">
      The reward rule that generated this reward.

      <Expandable title="properties">
        <ResponseField name="id" type="number">ID of the reward rule.</ResponseField>
        <ResponseField name="amount" type="number">Configured reward amount.</ResponseField>
        <ResponseField name="type" type="string">Reward type (e.g., `per_referral`, `per_promotion`).</ResponseField>
        <ResponseField name="unit" type="string">Reward unit.</ResponseField>
        <ResponseField name="name" type="string">Name of the reward rule.</ResponseField>
        <ResponseField name="per_of_sale" type="number">Percentage of sale, if commission-based.</ResponseField>
        <ResponseField name="default_promo_code" type="string">Default promo code associated with this reward rule.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="promoter" type="object">
      The promoter who earned this reward. See [Promoter Signs Up](/webhooks/promoter-signs-up) for the full promoter object structure.
    </ResponseField>

    <ResponseField name="campaign" type="object">
      The campaign the reward is associated with. See [Promoter Accepted](/webhooks/promoter-accepted) for the full campaign object structure.
    </ResponseField>
  </Expandable>
</ResponseField>

## Example

<ResponseExample>
  ```json Response theme={null}
  {
    "event": {
      "id": 13007875,
      "type": "fulfilment_pending",
      "created_at": "2023-08-23T11:06:02.663Z"
    },
    "data": {
      "id": 2429153,
      "status": "pending",
      "amount": 3,
      "date_paid": null,
      "due_date": null,
      "unit": "free_months",
      "created_at": "2023-08-23T11:06:02.607Z",
      "has_issues": false,
      "reward": {
        "id": 109465,
        "amount": null,
        "type": "per_promotion",
        "unit": "free_months",
        "name": "Free subscription months",
        "per_of_sale": 0,
        "default_promo_code": null
      },
      "promoter": {
        "id": 5272969,
        "status": "active",
        "cust_id": "",
        "email": "promoter@example.com",
        "created_at": "2023-02-08T06:25:28.004Z",
        "temp_password": null,
        "default_promotion_id": 5680057,
        "pref": "i790yc6",
        "default_ref_id": "referralid18",
        "note": null,
        "w8_form_url": null,
        "w9_form_url": null,
        "parent_promoter_id": null,
        "earnings_balance": { "cash": 882, "free_months": 3 },
        "current_balance": { "cash": 882, "free_months": 3 },
        "paid_balance": null,
        "auth_token": "2-5P1Shfk2nnKaZrYFZExh-sfCThGt-2",
        "profile": {
          "id": 5306304,
          "first_name": "Promoter",
          "last_name": "Name",
          "website": "",
          "company_name": "",
          "phone_number": "",
          "address": "",
          "vat_id": "",
          "country": "",
          "paypal_email": null,
          "avatar_url": "",
          "description": null,
          "social_accounts": {
            "twitter": { "url": "" },
            "youtube": { "url": "" },
            "facebook": { "url": "" },
            "linkedin": { "url": "" },
            "instagram": { "url": "" }
          }
        },
        "promotions": []
      },
      "campaign": {
        "id": 17476,
        "name": "Campaign Name",
        "landing_url": "https://www.your-company.com",
        "description": "Private campaign with 2 plans",
        "private": false,
        "color": "#42a5f5",
        "default_webhook_url": "https://your-webhook-url.com",
        "auto_approve_rewards": true,
        "auto_approve_promoters": false,
        "offer": null,
        "referral_reward": {
          "id": 90548,
          "amount": null,
          "type": "per_referral",
          "unit": "cash",
          "name": "35% recurring commission",
          "per_of_sale": 35,
          "default_promo_code": null
        },
        "promotion_reward": null,
        "target_reward": null
      }
    }
  }
  ```
</ResponseExample>
