---
updatedAt: 2026-08-25T19:34:13.000Z
agentTools:
  projectIndex: https://loyaltyapi.yotpo.com/llms.txt
---

# Create Redemption

This endpoint will redeem a customer’s points for a particular redemption option. It will check to ensure the customer is eligible and has enough points for the selected redemption option and then it will deduct the points from their balance, generate the coupon code, and return it in the response.

## Delayed Points Deduction

When passing the `delay_points_deduction` param as `true`, take the coupon code returned in the `reward_text` param and pass it via the `coupon_code` param of the\ <a href="https://loyaltyapi.yotpo.com/reference/create-order" target="_blank">Create Order</a>endpoint.

This will deduct the points associated with that point redemption from the customer upon order creation.

For example, if `delay_points_dedcution` is passed as `true` and a customer redeems 10 loyalty points for a coupon/discount, those points would only be deducted from the customer's point balance upon creation and processing of the order containing the `coupon_code`.

![900](https://files.readme.io/92e0b10-screenshot-loyaltyapi.yotpo.com-2019.12.25-13-35-51.png "screenshot-loyaltyapi.yotpo.com-2019.12.25-13-35-51.png")

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "api-settings",
    "version": "2.0"
  },
  "servers": [
    {
      "url": "https://loyalty.yotpo.com"
    }
  ],
  "components": {
    "securitySchemes": {
      "X-API-KEY": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-KEY",
        "description": "Your account API key can be found in the \"Settings\" section of your Yotpo loyalty admin. See [Yotpo Authentication](https://loyaltyapi.yotpo.com/reference/authentication) to learn how to generate your API key."
      },
      "X-GUID": {
        "type": "apiKey",
        "in": "header",
        "name": "X-GUID",
        "description": "The Globally Unique Identifier found in the \"Settings\" section of your Yotpo loyalty admin. See [Yotpo Authentication](https://loyaltyapi.yotpo.com/reference/authentication) to learn how to generate your GUID."
      }
    }
  },
  "security": [
    {
      "X-API-KEY": [],
      "X-GUID": []
    }
  ],
  "paths": {
    "/api/v2/redemptions": {
      "post": {
        "summary": "Create Redemption",
        "description": "This endpoint will redeem a customer’s points for a particular redemption option. It will check to ensure the customer is eligible and has enough points for the selected redemption option and then it will deduct the points from their balance, generate the coupon code, and return it in the response.",
        "operationId": "create-redemption",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "customer_email",
                  "pos_account_id",
                  "phone_number",
                  "customer_id",
                  "redemption_option_id"
                ],
                "properties": {
                  "customer_email": {
                    "type": "string",
                    "description": "The email address of the customer redeeming points. Only required if no `phone_number` or `pos_account_id` is passed."
                  },
                  "pos_account_id": {
                    "type": "string",
                    "description": "The identifier used to uniquely identify the customer in your POS system. This is only required if no `customer_email` attribute or `phone_number` attribute is passed."
                  },
                  "phone_number": {
                    "type": "string",
                    "description": "The customer's phone number in E.164 format. e.g +14155552671. Must be an exact match. Only required if no `customer_email` or `pos_account_id` is passed."
                  },
                  "customer_id": {
                    "type": "string",
                    "description": "The identifier used to uniquely identify the customer in your system. Required if no customer_email, pos_account_id or phone_number is passed."
                  },
                  "redemption_option_id": {
                    "type": "integer",
                    "description": "The unique identifier of the redemption option being redeemed.",
                    "format": "int32"
                  },
                  "delay_points_deduction": {
                    "type": "boolean",
                    "description": "Passing a value of `true` indicates that points will only be deducted when the order containing the redemption is received. See the section below to learn more."
                  },
                  "currency": {
                    "type": "string",
                    "description": "The currency used (e.g. 'USD.') This is required if you're using multi currency. If nothing is passed, it will default to your base currency."
                  },
                  "points_to_redeem": {
                    "type": "integer",
                    "description": "Number of points to be redeemed in this transaction. This is required for generic variable redemption. If nothing is passed, error message will be returned.",
                    "format": "int32"
                  }
                }
              },
              "examples": {
                "Body Params": {
                  "value": {
                    "customer_email": "john@example.com",
                    "redemption_option_id": 12345,
                    "delay_points_deduction": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "200",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n  \"id\": 41567211,\n  \"created_at\": \"2021-11-23T15:21:09.000Z\",\n  \"updated_at\": \"2021-11-23T15:21:10.000Z\",\n  \"reward_text\": \"$5QUY0X4MK\",\n  \"approved\": true,\n  \"approved_at\": \"2021-11-23T15:21:10.000Z\",\n  \"is_admin\": false,\n  \"is_pos\": false,\n  \"at_checkout\": false,\n  \"amount\": null,\n  \"token\": \"YOUR_TOKEN\",\n  \"third_party_id\": \"11870425546932\",\n  \"third_party_rule_id\": \"1012813136052\"\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "integer",
                      "example": 41567211,
                      "default": 0
                    },
                    "created_at": {
                      "type": "string",
                      "example": "2021-11-23T15:21:09.000Z"
                    },
                    "updated_at": {
                      "type": "string",
                      "example": "2021-11-23T15:21:10.000Z"
                    },
                    "reward_text": {
                      "type": "string",
                      "example": "$5QUY0X4MK"
                    },
                    "approved": {
                      "type": "boolean",
                      "example": true,
                      "default": true
                    },
                    "approved_at": {
                      "type": "string",
                      "example": "2021-11-23T15:21:10.000Z"
                    },
                    "is_admin": {
                      "type": "boolean",
                      "example": false,
                      "default": true
                    },
                    "is_pos": {
                      "type": "boolean",
                      "example": false,
                      "default": true
                    },
                    "at_checkout": {
                      "type": "boolean",
                      "example": false,
                      "default": true
                    },
                    "amount": {},
                    "token": {
                      "type": "string",
                      "example": "YOUR_TOKEN"
                    },
                    "third_party_id": {
                      "type": "string",
                      "example": "11870425546932"
                    },
                    "third_party_rule_id": {
                      "type": "string",
                      "example": "1012813136052"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "400",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {}
                }
              }
            }
          },
          "404": {
            "description": "404",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n  \"errors\": {\n    \"redemption_option\": \"redemption option was not found\"\n    }\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "object",
                      "properties": {
                        "redemption_option": {
                          "type": "string",
                          "example": "redemption option was not found"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "423": {
            "description": "423",
            "content": {
              "application/json": {
                "examples": {
                  "Result": {
                    "value": "{\n    \"errors\": \"Resource is currently being processed. Please try again in a few seconds.\"\n}"
                  }
                },
                "schema": {
                  "type": "object",
                  "properties": {
                    "errors": {
                      "type": "string",
                      "example": "Resource is currently being processed. Please try again in a few seconds."
                    }
                  }
                }
              }
            }
          }
        },
        "x-internal": false
      }
    }
  },
  "x-readme": {
    "headers": [
      {
        "value": "application/json",
        "key": "Content-Type"
      }
    ],
    "explorer-enabled": true,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
```

# Sibling pages

* [Approve Redemption Cancellation](https://loyaltyapi.yotpo.com/reference/approve-redemption-cancellation.md)