Introduction
If a coupon can be redeemed at multiple stores or locations, you may want to know where each redemption took place.
PassKit's Customer-Initiated Redemption can be used to achieve this without requiring each location to have a barcode scanner or POS integration.
By selecting Code Provided by Cashier and assigning a different redemption code to each store, the code entered when the coupon is redeemed can be used to identify the redemption location.
For example:
Store | Redemption Code |
London |
|
Manchester |
|
Birmingham |
|
When the customer is ready to use their coupon, the cashier provides the code assigned to that store. The customer enters the code on the self-redemption page and completes the redemption.
The redemption code used is recorded against the coupon and is included when you export your coupon data as a CSV. This allows you to identify which store handled each redemption.
Before You Start
Before setting this up:
Create your Coupon Campaign and Offer.
Decide on a unique redemption code for each store or location.
Make sure staff know the redemption code assigned to their location.
Configure Customer-Initiated Redemption using Code Provided by Cashier.
Design the redemption pages to match the redemption experience you want to provide.
Add the self-redemption link to your coupon.
We recommend testing the complete redemption process with a test coupon before distributing the offer to customers.
Step 1: Configure Customer-Initiated Redemption
Open your Coupon Campaign in the PassKit Portal and navigate to the Offer you want to configure.
Open the Redemption settings and enable Customer-Initiated Redemption.
Select:
Code Provided by Cashier
With this option, the redemption process works as follows:
The customer opens the self-redemption link from their coupon.
The redemption page asks the customer for a code.
The cashier provides the code assigned to their store.
The customer enters the code.
PassKit validates the code.
If the code is valid, the customer can complete the redemption.
This allows the redemption code to act as both a method of confirming the redemption with a member of staff and a way of identifying the store where the coupon was used.
Step 2: Add a Redemption Code for Each Store
Create a unique redemption code for each store where the coupon can be used.
For example:
Store | Redemption Code |
London |
|
Manchester |
|
Birmingham |
|
Add each of these as an accepted code within the Code Provided by Cashier settings.
Each location should have a different code if you want to identify where the coupon was redeemed.
Important: If the same code is used by multiple stores, the CSV export will show that code was used, but you will not be able to determine which of those stores handled the redemption.
Keep a record of which code belongs to each store. You will use this mapping later when reviewing your redemption data.
Step 3: Design Your Redemption Pages
Once you have selected your Customer-Initiated Redemption options, make sure you also configure the redemption pages to match the experience you want customers to see.
The pages shown during the redemption process should make it clear what the customer needs to do.
For example, when using Code Provided by Cashier, your redemption flow should make it clear that the customer needs to ask a member of staff for the redemption code before continuing.
Review and customise the available redemption page settings based on the options you have selected.
Consider the:
instructions shown before redemption;
wording around entering the cashier-provided code;
confirmation shown before the coupon is redeemed; and
message displayed after a successful redemption.
The exact wording should reflect how you want customers and store staff to complete the redemption process.
Tip: Test the complete redemption flow on a mobile device before distributing your coupons. This lets you check both the instructions and the customer experience from opening the Wallet pass through to successful redemption.
Step 4: Add the Self-Redemption Link to the Coupon
Add the Customer-Initiated Redemption link to your coupon so customers can start the redemption process directly from their Apple Wallet or Google Wallet pass.
When the customer taps the link, the configured Customer-Initiated Redemption experience will open.
Step 5: Redeem the Coupon In Store
When a customer wants to use their coupon:
The customer opens the coupon in Apple Wallet or Google Wallet.
They tap the self-redemption link.
The redemption page asks them for a code.
The cashier provides the redemption code assigned to that store.
The customer enters the code.
PassKit validates the code.
The customer completes the redemption.
For example, if the customer is visiting your London store, the cashier could provide:
LONDON01
The customer enters LONDON01 into the redemption page and completes the redemption.
PassKit records the code used as part of the coupon's redemption details.
Step 6: Export Your Coupon Data
To see where coupons have been redeemed, export your coupon data from PassKit as a CSV.
The CSV contains the redemption information recorded against each coupon.
For redeemed coupons, look for the following columns:
coupon.redemptionDetails.redemptionDate coupon.redemptionDetails.redemptionCode
The redemptionDate shows when the coupon was redeemed.
The redemptionCode shows the cashier-provided code that was used during the redemption.
Depending on the redemption information available, the export can also contain other redemption fields, including:
coupon.redemptionDetails.lat coupon.redemptionDetails.lon coupon.redemptionDetails.alt coupon.redemptionDetails.redemptionSource coupon.redemptionDetails.redemptionReference coupon.redemptionDetails.transactionReference coupon.redemptionDetails.transactionAmount
For identifying the store using this method, the main field you need is:
coupon.redemptionDetails.redemptionCode
Step 7: Identify the Store Where the Coupon Was Redeemed
Use the value in:
coupon.redemptionDetails.redemptionCode
to identify the store where the redemption took place.
For example, if your store configuration is:
Store | Redemption Code |
London |
|
Manchester |
|
Birmingham |
|
and the CSV contains:
coupon.redemptionDetails.redemptionCode = LONDON01
you can identify that coupon as having been redeemed at the London store.
For example, a CSV export could contain:
Coupon | Status | Redemption Date | Redemption Code | Store |
Coupon 001 | Redeemed | 24 Sep 2026 |
| London |
Coupon 002 | Redeemed | 24 Sep 2026 |
| Manchester |
Coupon 003 | Redeemed | 25 Sep 2026 |
| London |
The Store column in this example is derived from your own mapping of redemption codes to stores. It is not an additional PassKit field in the export.
In a test redemption, for example, a code of:
store1
appears in the CSV under:
coupon.redemptionDetails.redemptionCode
This means you can map store1 back to whichever store was assigned that code.
Why Use Store-Specific Redemption Codes?
Using a different cashier-provided code for each location provides a simple way to identify where coupons are redeemed without requiring each store to have scanning hardware or a direct POS integration.
This can be useful for:
tracking redemptions by store;
comparing coupon usage between locations;
measuring campaign performance across stores;
using one Coupon Offer across multiple locations; and
exporting redemption data for further reporting or analysis.
It also avoids the need to create a separate Coupon Offer purely to distinguish each store.
Adding New Stores
If another store starts accepting the coupon:
Create a new unique redemption code for that location.
Add it to the accepted codes under Code Provided by Cashier.
Give the code to the relevant store staff.
Add the new code to your store-to-code mapping.
For example:
BRISTOL01
could be assigned to your Bristol store.
Future redemptions using BRISTOL01 can then be identified in the CSV export as redemptions from that location.
Troubleshooting
The Customer Can't Redeem the Coupon
Check that the code entered by the customer exactly matches one of the codes configured under Code Provided by Cashier.
Also confirm that the coupon is still valid and available for redemption.
The Redemption Code Isn't in the CSV
First confirm that the coupon was successfully redeemed using the Code Provided by Cashier option.
In the CSV export, look for:
coupon.redemptionDetails.redemptionCode
The code entered during the redemption should appear in this column for the redeemed coupon.
I Can't Tell Which Store Redeemed the Coupon
Check your mapping between stores and redemption codes.
Each store needs its own unique code if you want to distinguish locations.
For example, if both London and Manchester use STORE01, a CSV value of STORE01 cannot tell you which of those locations handled the redemption.
The Customer Can Redeem Without Entering a Code
Check the Customer-Initiated Redemption configuration and confirm that Code Provided by Cashier has been selected.
Also review the redemption page configuration to make sure it reflects the redemption method you have chosen.
A Customer Knows the Store Code
Store redemption codes should be treated as staff-facing information and provided when the customer is ready to redeem their coupon.
If a code has been shared publicly or is being misused, replace it with a new code and update the staff at that location.
Important Notes
Use Code Provided by Cashier for this redemption flow.
Give each store a unique redemption code if you need to identify individual locations.
Design your redemption pages based on the Customer-Initiated Redemption options you select so customers receive clear instructions throughout the process.
The code entered during redemption is recorded in
coupon.redemptionDetails.redemptionCode.The redemption code is included in the coupon CSV export.
Keep your own mapping of redemption codes to store names.
Store codes should only be provided to customers when they are ready to redeem their coupon.
Test the complete customer experience before making the campaign available.
Once a single-use coupon has been successfully redeemed, it cannot be redeemed again.




