This integration helps you:
Stop staff or bad actors from misusing loyalty points (e.g., remembering phone numbers to redeem discounts later or stealing cash without applying a discount)
Let staff safely redeem discounts directly in your ecommerce or POS system
Support native redemption for AIQ-powered global loyalty programs shared with your shoppers
Instantly sign up new loyalty members and show welcome gifts after PIN verification
Send us abandoned carts so we can run revenue recovery campaigns
Authentication
Create an integrations page in your app to let merchants input their AIQ auth credentials.
POS native flow
[Ecommerce providers can ignore this section, see flow below]
Shopper starts a transaction with staff in store
Staff member clicks on a native button "Redeem discounts for shopper"
You call our endpoint when the button is pressed to verify the shopper is there with their phone in hand (ownership). Endpoint = /verify/wallet sending the {"phone": "##########" }
The shopper provides the pin code sent to their phone. Staff puts it into a UI popup "Shopper pin code: <input field>"
When the staff member places the pin code into the POS, you then you hit: Endpoint = /view/wallet sending the {"phone": "##########", "code": "1234" }
AIQ will then respond with a wallet object containing all available discounts for this shopper as well as PUT url's to call. These PUT URLs should be hit when the staff member clicks a "Redeem this discount" + the shopper has completely finished checking out. Do NOT call the PUT URL's until checkout has been completed.
Please make sure to append the transaction ID to the end of the PUT url for native POS redemptions. DO NOT send it if you are an ecommerce integration.
Enterprise support advice
Many public entities rely on proper reporting of loyalty points values at the transaction level. AIQ clients often require that the pointsDeduction in our discount object below be reflected on the transaction within the POS. Eventually passing it down to transactional reports for public entity auditors.
Ecommerce native flow
AIQ supports two integration redemption model options:
Model A: Immediate Redemption (Recommended)
Flow:
Integrator calls
/api/v2/walletShopper selects reward
Integrator calls redemptionURL
Points are immediately deducted
Pros:
Real-time balance accuracy
Cleaner reconciliation
Model B: Informational Selection (POS-Driven Redemption)
Flow:
Integrator calls /api/v2/wallet
Shopper selects reward
Integrator passes selection to POS (discount ID or order note)
POS applies reward at transaction time
POS calls AIQ redemption endpoint
In this model:
AIQ wallet balance is NOT modified until POS completes sale.
If order is cancelled, no refund call is required.
Integrator does NOT call redemption endpoint.
This model is acceptable but requires:
Clear retailer onboarding expectations
POS must complete redemption
Ecommerce Checkout Flow
Shopper arrives at ecommerce checkout page
Shopper enters in their phone number or email - or you already have it as a stored shopper: Endpoint = /verify/wallet sending the {"phone": "##########", "email": "[email protected]" }
AIQ responds with either:
Success: Shopper is sent a text with a special code “Your code to unlock rewards is: 1234”
Error: They aren't signed up for this loyalty program yet "No shopper exists with phone number error”
🔶 Note 🔶 If no shopper exists or they aren’t in the loyalty program yet, We highly recommend allowing shoppers to signup:
Error: Allow shopper to optionally create a loyalty account by showing the following consent text:
“I consent to signup for the {{brand name}} rewards program where I will receive marketing communications. By doing so, I understand that I am allowing {{brand name}} and it's technology provider(s) to retain my personal contact details/ engagement history for use in personalized marketing. Opt out at any time by replying "STOP" to messages. Standard message and calling rates may apply.”
Canada: Replace "Rewards program" with "club program"
Once created, you can either decide to run them through the verification process, or you can now directly retrieve their wallet and skip 2FA since this is a new shopper using:
Endpoint = /wallet sending the {"phone": "##########", "email": "[email protected]" }
Success: If shopper exists after either route
Wait for shopper to receive 4 digit verification code. Allow shopper to resend the verification code (in which you hit the same endpoint “Send Wallet Verification Request” again to refresh their code)
Once code is inputted, hit "Retrieve wallet with verification code" with phone and code, and a wallet will be returned
Request a PIN code be sent to the shopper's phone
Use this endpoint during the cart-building phase to verify ownership of discounts before redeeming: /post_api_v2_verify_contact_wallet
Notes:
For API integrations, partners may optionally implement the PIN verification flow, but it is not required for redemption or wallet access.
The shopper-facing PIN setting ("Enable shopper redemption PIN codes.") is not enforced at the API level.
Obtain the wallet for a shopper with pin code
Get a wallet object with all discounts for a shopper so that they or the staff member can redeem or apply to cart: /post_api_v2_view_contact_wallet
Create new loyalty shopper
Use this endpoint when a new shopper wishes to opt-in to loyalty:
Send AIQ Abandoned Carts
One of the most popular marketing campaigns is to use abandoned cart data to recapture lost revenue. As an ecommerce provider, you simply send us each abandoned cart and we take care of automating the rest.
AIQ will space out order reminders to avoid message overload, showcase cart items across our network of pages and listings, and use email, SMS, and push notifications to re-engage shoppers.
There are 2 pieces to Abandon Cart emails:
The POS send us the abandon cart using this endpoint: /api/v2/cart
AIQ does the work to enable Dynamic Content in Campaigns. If step 1 is complete and your merchants are now asking for dynamic content, please reach out to us.