Punchh Redemptions API

The Redemptions API from Punchh — 2 operation(s) for redemptions.

Operations 3

GET /api2/dashboard/redemptions Search Redemption Code #
PATCH /api2/dashboard/redemptions Process Redemption #
POST /api2/dashboard/redemptions/force_redeem Force Redeem #

Documentation

Specifications

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/mobile-access-token-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/mobile-create-user-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/mobile-login-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/mobile-mark-offers-read-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/mobile-transaction-details-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/mobile-transaction-details-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/mobile-update-user-profile-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/mobile-user-session-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/mobile-access-token-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/mobile-create-user-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/mobile-login-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/mobile-mark-offers-read-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/mobile-transaction-details-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/mobile-transaction-details-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/mobile-update-user-profile-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/mobile-user-session-structure.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/online-ordering-online-order-checkin-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/online-ordering-online-order-checkin-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/online-ordering-online-order-redemption-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/online-ordering-online-order-redemption-response-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/online-ordering-online-order-checkin-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/online-ordering-online-order-checkin-response-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/online-ordering-online-order-redemption-request-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/online-ordering-online-order-redemption-response-structure.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-schema/platform-functions-redeemable-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-structure/platform-functions-redeemable-structure.json

Other Resources

🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/mobile-access-token-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/mobile-create-user-request-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/mobile-login-request-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/mobile-mark-offers-read-request-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/mobile-transaction-details-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/mobile-transaction-details-request-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/mobile-update-user-profile-request-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/mobile-user-session-example.json
🔗
JSONLD
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-ld/punchh-mobile-context.jsonld
🔗
PostmanCollection
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/collections/punchh-mobile.postman_collection.json
🔗
OpenCollection
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/collections/punchh-mobile.opencollection.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/online-ordering-online-order-checkin-request-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/online-ordering-online-order-checkin-response-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/online-ordering-online-order-redemption-request-example.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/online-ordering-online-order-redemption-response-example.json
🔗
JSONLD
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-ld/punchh-online-ordering-context.jsonld
🔗
PostmanCollection
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/collections/punchh-online-ordering.postman_collection.json
🔗
OpenCollection
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/collections/punchh-online-ordering.opencollection.json
🔗
Examples
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/examples/platform-functions-redeemable-example.json
🔗
JSONLD
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/json-ld/punchh-platform-functions-context.jsonld
🔗
PostmanCollection
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/collections/punchh-platform-functions.postman_collection.json
🔗
OpenCollection
https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/collections/punchh-platform-functions.opencollection.json

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/punchh-redemptions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

punchh-redemptions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Platform Functions Redemptions API
  version: '1.0'
  description: This API documentation is intended to provide comprehensive information for admin users of the Punchh platform. Many of the settings and available actions depend on an appropriate level of access to Platform Functions APIs.
  contact:
    name: Punchh DevSupport
    url: https://developers.punchh.com
servers:
- url: https://SERVER_NAME_GOES_HERE.punchh.com
tags:
- name: Redemptions
paths:
  /api2/dashboard/redemptions:
    get:
      responses:
        '200':
          $ref: '#/components/responses/redemption-detail'
        '401':
          $ref: '#/components/responses/401-unauthorized'
      summary: Search Redemption Code
      operationId: dashboard_search_redemption_code
      tags:
      - Redemptions
      parameters:
      - $ref: '#/components/parameters/authorization-header'
      - schema:
          type: string
        in: query
        name: location_id
        description: Unique ID of a particular location. This is generated by Punchh.
      - schema:
          type: string
        in: query
        name: redemption_code
        description: Redemption code of the user as generated on the app or web.
      x-stoplight:
        id: ac8e06639a62c
    patch:
      responses:
        '200':
          $ref: '#/components/responses/redemption-detail'
        '401':
          $ref: '#/components/responses/401-unauthorized'
      summary: Process Redemption
      description: Marks a redemption as processed
      operationId: dashboard_process_redemption
      tags:
      - Redemptions
      parameters:
      - $ref: '#/components/parameters/authorization-header'
      x-stoplight:
        id: d91b52fceaed2
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                redemption_code:
                  type: string
                  description: Redemption code of the user as generated on the app or web
                location_id:
                  type: integer
                  description: Unique ID of a particular business location. This is generated by Punchh.
                store_number:
                  type: string
                  description: Unique store number of a particular location, as provided by the business
            examples:
              default:
                value:
                  redemption_code: REDEMPTION_CODE_GOES_HERE
                  location_id: 304731
                  store_number: MNBVC
  /api2/dashboard/redemptions/force_redeem:
    post:
      operationId: dashboard_force_redeem
      tags:
      - Redemptions
      summary: Force Redeem
      parameters:
      - $ref: '#/components/parameters/authorization-header'
      responses:
        '201':
          $ref: '#/components/responses/redemption-object'
        '401':
          $ref: '#/components/responses/401-unauthorized'
      x-stoplight:
        id: 6d3f5e310b96d
      description: 'The Force Redemption API allows administrators (e.g., restaurant managers, support staff, or corporate team members) to override normal redemption flows and manually or programmatically redeem an offer or promotion on behalf of a guest. This functionality is particularly useful in various customer support, operational, and exception-handling scenarios.


        <b>Note</b>: The Force Redemption API is intended primarily for support-related scenarios where offers need to be redeemed on a limited scale. It should not be used for bulk expirations or large-scale force redemptions. For example, if a brand has distributed offers through a campaign and later runs out of stock for the promotion, this API should not be used to bulk-expire the offers already available to guests in order to discontinue the campaign.


        <b>Usage Limit</b>: Permissible usage is capped at 500 requests per minute (RPM), with a daily limit of up to 100,000 requests. If you need to process more than 100,000 requests in a single day, contact your Punchh representative.'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                user_id:
                  type: integer
                  description: ID that identifies the user
                redemption:
                  type: object
                  properties:
                    requested_punches:
                      type: integer
                    force_message:
                      type: string
                    reward_id:
                      type: integer
                      format: int64
                      description: Unique ID of the reward
                    fuel_redemption:
                      type: boolean
            examples:
              default:
                value:
                  user_id: 111111111
                  redemption:
                    requested_punches: 50
                    force_message: This is a test
components:
  responses:
    redemption-object:
      description: ''
      content:
        application/json:
          schema:
            type: object
            description: Returns the details of a redemption done by a user
            properties:
              redemption_status:
                type: string
                description: 'Status of the redemption. The values returned can be:

                  - redeemable: The redemption can be redeemed at the POS.

                  - expired: The redemption has expired and becomes unusable for the user.

                  - honored: The redemption has already been processed successfully and redeemed by the user at a POS.

                  - cancelled: The redemption can be voided by a user by approaching the POS if a redemption is done by mistake and the user wants to cancel it.'
              created_at:
                type: string
                description: Date/time when the redemption was created in the system, in ISO 8601 format
                format: date-time
              redeemable_id:
                type: integer
                description: Unique ID of the redeemable
              location_id:
                type: integer
                description: Location ID associated with redemption
              redeemable_name:
                description: Name of the redeemable
                type: string
              redeemed_value:
                type: number
                description: 'For a business with banked currency, a currency value will be returned (e.g., 10 would mean $10).


                  For a business without banked currency, a points value will be returned (e.g., 10 would mean 10 points).'
                format: float
              redemption_image_url:
                type: string
                description: URL of the image displayed in the app to depict the redeemable
              redemption_message:
                type: string
                description: A descriptive message that tells a user what the user has redeemed
              updated_at:
                type: string
                description: Date/time at which the redemption was updated in the system
                format: date-time
              redemption_id:
                type: integer
                description: Unique ID of the redemption that has been created
              redemption_tracking_code:
                type: string
                description: Code that a user must submit at the POS to receive the redeemed reward
              expiring_at:
                type: string
                description: Date/time when the redemption_tracking_code expires and the user cannot use it at the POS
                format: date-time
          examples:
            Force redeem:
              value:
                redemption_status: redeemable
                created_at: '2017-02-08T14:54:44Z'
                redeemable_id: null
                redemption_image_url: IMAGE_URL_GOES_HERE
                redemption_message: Message associated with the redemption.
                location_id: 304252
                updated_at: '2017-02-08T14:54:44Z'
                redemption_id: 6440712
                redemption_tracking_code: '7714880'
                expiring_at: '2017-02-08T16:54:44Z'
                redeemable_name: null
                redeemed_value: 50
    redemption-detail:
      description: ''
      content:
        application/json:
          schema:
            type: object
            properties:
              redemption_status:
                type: string
                description: 'Status of the redemption. The values returned can be:

                  - redeemable: The redemption can be redeemed at the POS.

                  - expired: The redemption has expired and becomes unusable for the user.

                  - processed: The redemption has already been processed successfully and redeemed by the user at a POS.

                  - cancelled: The redemption can be voided by a user by approaching the POS if a redemption is done by mistake and the user wants to cancel it.'
              created_at:
                type: string
                description: Date/time when the redemption was created in the system, in ISO 8601 format
                format: date-time
              redeemable_id:
                type: integer
                description: Unique ID of the redeemable
              redemption_image_url:
                type: string
                description: URL of the image displayed in the app to depict the redeemable
              redemption_message:
                type: string
                description: A descriptive message that tells a user what the user has redeemed
              updated_at:
                type: string
                description: Date/time at which the redemption was updated in the system
                format: date-time
              redemption_id:
                type: integer
                description: Unique ID of the redemption that has been created
              redemption_tracking_code:
                type: string
                description: Code that a user must submit at the POS to receive the redeemed reward
              expiring_at:
                type: string
                description: Date/time when the redemption_tracking_code expires and the user cannot use it at the POS
                format: date-time
              redeemable_name:
                description: Name of the redeemable
                type: string
              redeemed_value:
                type: number
                description: 'For a business with banked currency, a currency value will be returned (e.g., 10 would mean $10).


                  For a business without banked currency, a points value will be returned (e.g., 10 would mean 10 points).'
                format: float
              user:
                type: object
                description: Returns information about the user who used the redemption code
                properties:
                  email:
                    type: string
                    description: Unique email address used to identify the user
                  first_name:
                    type: string
                    description: First name of the user
                  last_name:
                    type: string
                    description: Last name of the user
                  avatar_remote_url:
                    description: URL of the user's profile image uploaded to an online file storage system. This will be used for users who signed up using email.
                    type: string
          examples:
            Process redemption:
              value:
                redemption_status: processed
                created_at: '2016-10-07T01:36:10Z'
                redeemable_id: null
                redemption_image_url: IMAGE_URL_GOES_HERE
                redemption_message: ''
                updated_at: '2016-10-07T01:36:10Z'
                redemption_id: 3562961
                redemption_tracking_code: '6725261'
                expiring_at: '2016-10-07T03:36:10Z'
                redeemable_name: null
                redeemed_value: 8.05
                user:
                  first_name: FIRST_NAME_GOES_HERE
                  last_name: LAST_NAME_GOES_HERE
                  email: test@example.com
                  avatar_remote_url: null
            Search redemption code:
              value:
                redemption_status: redeemable
                created_at: '2016-10-07T01:36:10Z'
                redeemable_id: null
                redemption_image_url: IMAGE_URL_GOES_HERE
                redemption_message: ''
                updated_at: '2016-10-07T01:36:10Z'
                redemption_id: 3562961
                redemption_tracking_code: '6725261'
                expiring_at: '2016-10-07T03:36:10Z'
                redeemable_name: null
                redeemed_value: 8.05
                user:
                  first_name: FIRST_NAME_GOES_HERE
                  last_name: LAST_NAME_GOES_HERE
                  email: test@example.com
                  avatar_remote_url: null
    401-unauthorized:
      description: 'A business admin key is missing or invalid. A request header in the following format is needed to make the request:


        `Authorization: Bearer BUSINESS_ADMIN_KEY_GOES_HERE`'
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
          examples:
            default:
              value:
                error: You need to sign in or sign up before continuing.
  parameters:
    authorization-header:
      schema:
        type: string
        default: Bearer BUSINESS_ADMIN_KEY_GOES_HERE
      name: Authorization
      in: header
      description: 'Bearer token for admin authorization, who is making a call on behalf of the customer. Send the API key in the following format: "Authorization: Bearer BUSINESS_ADMIN_KEY_GOES_HERE".'
      required: true
x-stoplight:
  id: 9820bbd2e8ee1
x-ext-urls: {}