$loyaltyApi = $client->getLoyaltyApi();
LoyaltyApi
- Create Loyalty Account
- Search Loyalty Accounts
- Retrieve Loyalty Account
- Accumulate Loyalty Points
- Adjust Loyalty Points
- Search Loyalty Events
- List Loyalty Programs
- Retrieve Loyalty Program
- Calculate Loyalty Points
- Create Loyalty Reward
- Search Loyalty Rewards
- Delete Loyalty Reward
- Retrieve Loyalty Reward
- Redeem Loyalty Reward
Creates a loyalty account. To create a loyalty account, you must provide the program_id
and a mapping
with the phone_number
of the buyer.
function createLoyaltyAccount(CreateLoyaltyAccountRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
body |
CreateLoyaltyAccountRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
$body_loyaltyAccount_programId = 'd619f755-2d17-41f3-990d-c04ecedd64dd';
$body_loyaltyAccount = new Models\LoyaltyAccount(
$body_loyaltyAccount_programId
);
$body_loyaltyAccount->setMapping(new Models\LoyaltyAccountMapping);
$body_loyaltyAccount->getMapping()->setPhoneNumber('+14155551234');
$body_idempotencyKey = 'ec78c477-b1c3-4899-a209-a4e71337c996';
$body = new Models\CreateLoyaltyAccountRequest(
$body_loyaltyAccount,
$body_idempotencyKey
);
$apiResponse = $loyaltyApi->createLoyaltyAccount($body);
if ($apiResponse->isSuccess()) {
$createLoyaltyAccountResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Searches for loyalty accounts in a loyalty program.
You can search for a loyalty account using the phone number or customer ID associated with the account. To return all loyalty accounts, specify an empty query
object or omit it entirely.
Search results are sorted by created_at
in ascending order.
function searchLoyaltyAccounts(SearchLoyaltyAccountsRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
body |
SearchLoyaltyAccountsRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
$body = new Models\SearchLoyaltyAccountsRequest;
$body->setQuery(new Models\SearchLoyaltyAccountsRequestLoyaltyAccountQuery);
$body_query_mappings = [];
$body_query_mappings[0] = new Models\LoyaltyAccountMapping;
$body_query_mappings[0]->setPhoneNumber('+14155551234');
$body->getQuery()->setMappings($body_query_mappings);
$body->setLimit(10);
$apiResponse = $loyaltyApi->searchLoyaltyAccounts($body);
if ($apiResponse->isSuccess()) {
$searchLoyaltyAccountsResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Retrieves a loyalty account.
function retrieveLoyaltyAccount(string $accountId): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
accountId |
string |
Template, Required | The ID of the loyalty account to retrieve. |
RetrieveLoyaltyAccountResponse
$accountId = 'account_id2';
$apiResponse = $loyaltyApi->retrieveLoyaltyAccount($accountId);
if ($apiResponse->isSuccess()) {
$retrieveLoyaltyAccountResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Adds points earned from the base loyalty program to a loyalty account.
- If you are using the Orders API to manage orders, you only provide the
order_id
. The endpoint reads the order to compute points to add to the buyer's account. - If you are not using the Orders API to manage orders,
you first perform a client-side computation to compute the points.
For spend-based and visit-based programs, you can first call CalculateLoyaltyPoints to compute the points
that you provide to this endpoint.
This endpoint excludes additional points earned from loyalty promotions.
function accumulateLoyaltyPoints(string $accountId, AccumulateLoyaltyPointsRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
accountId |
string |
Template, Required | The loyalty account ID to which to add the points. |
body |
AccumulateLoyaltyPointsRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
AccumulateLoyaltyPointsResponse
$accountId = 'account_id2';
$body_accumulatePoints = new Models\LoyaltyEventAccumulatePoints;
$body_accumulatePoints->setOrderId('RFZfrdtm3mhO1oGzf5Cx7fEMsmGZY');
$body_idempotencyKey = '58b90739-c3e8-4b11-85f7-e636d48d72cb';
$body_locationId = 'P034NEENMD09F';
$body = new Models\AccumulateLoyaltyPointsRequest(
$body_accumulatePoints,
$body_idempotencyKey,
$body_locationId
);
$apiResponse = $loyaltyApi->accumulateLoyaltyPoints($accountId, $body);
if ($apiResponse->isSuccess()) {
$accumulateLoyaltyPointsResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Adds points to or subtracts points from a buyer's account.
Use this endpoint only when you need to manually adjust points. Otherwise, in your application flow, you call AccumulateLoyaltyPoints to add points when a buyer pays for the purchase.
function adjustLoyaltyPoints(string $accountId, AdjustLoyaltyPointsRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
accountId |
string |
Template, Required | The ID of the loyalty account in which to adjust the points. |
body |
AdjustLoyaltyPointsRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
$accountId = 'account_id2';
$body_idempotencyKey = 'bc29a517-3dc9-450e-aa76-fae39ee849d1';
$body_adjustPoints_points = 10;
$body_adjustPoints = new Models\LoyaltyEventAdjustPoints(
$body_adjustPoints_points
);
$body_adjustPoints->setReason('Complimentary points');
$body = new Models\AdjustLoyaltyPointsRequest(
$body_idempotencyKey,
$body_adjustPoints
);
$apiResponse = $loyaltyApi->adjustLoyaltyPoints($accountId, $body);
if ($apiResponse->isSuccess()) {
$adjustLoyaltyPointsResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Searches for loyalty events.
A Square loyalty program maintains a ledger of events that occur during the lifetime of a buyer's loyalty account. Each change in the point balance (for example, points earned, points redeemed, and points expired) is recorded in the ledger. Using this endpoint, you can search the ledger for events.
Search results are sorted by created_at
in descending order.
function searchLoyaltyEvents(SearchLoyaltyEventsRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
body |
SearchLoyaltyEventsRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
$body = new Models\SearchLoyaltyEventsRequest;
$body->setQuery(new Models\LoyaltyEventQuery);
$body->getQuery()->setFilter(new Models\LoyaltyEventFilter);
$body_query_filter_orderFilter_orderId = 'PyATxhYLfsMqpVkcKJITPydgEYfZY';
$body->getQuery()->getFilter()->setOrderFilter(new Models\LoyaltyEventOrderFilter(
$body_query_filter_orderFilter_orderId
));
$body->setLimit(30);
$apiResponse = $loyaltyApi->searchLoyaltyEvents($body);
if ($apiResponse->isSuccess()) {
$searchLoyaltyEventsResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
This endpoint is deprecated.
Returns a list of loyalty programs in the seller's account. Loyalty programs define how buyers can earn points and redeem points for rewards. Square sellers can have only one loyalty program, which is created and managed from the Seller Dashboard. For more information, see Loyalty Program Overview.
Replaced with RetrieveLoyaltyProgram when used with the keyword main
.
function listLoyaltyPrograms(): ApiResponse
$apiResponse = $loyaltyApi->listLoyaltyPrograms();
if ($apiResponse->isSuccess()) {
$listLoyaltyProgramsResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Retrieves the loyalty program in a seller's account, specified by the program ID or the keyword main
.
Loyalty programs define how buyers can earn points and redeem points for rewards. Square sellers can have only one loyalty program, which is created and managed from the Seller Dashboard. For more information, see Loyalty Program Overview.
function retrieveLoyaltyProgram(string $programId): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
programId |
string |
Template, Required | The ID of the loyalty program or the keyword main . Either value can be used to retrieve the single loyalty program that belongs to the seller. |
RetrieveLoyaltyProgramResponse
$programId = 'program_id0';
$apiResponse = $loyaltyApi->retrieveLoyaltyProgram($programId);
if ($apiResponse->isSuccess()) {
$retrieveLoyaltyProgramResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Calculates the points a purchase earns from the base loyalty program.
- If you are using the Orders API to manage orders, you provide the
order_id
in the request. The endpoint calculates the points by reading the order. - If you are not using the Orders API to manage orders, you provide the purchase amount in the request for the endpoint to calculate the points.
An application might call this endpoint to show the points that a buyer can earn with the specific purchase.
For spend-based and visit-based programs, the tax_mode
setting of the accrual rule indicates how taxes should be treated for loyalty points accrual.
function calculateLoyaltyPoints(string $programId, CalculateLoyaltyPointsRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
programId |
string |
Template, Required | The loyalty program ID, which defines the rules for accruing points. |
body |
CalculateLoyaltyPointsRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
CalculateLoyaltyPointsResponse
$programId = 'program_id0';
$body = new Models\CalculateLoyaltyPointsRequest;
$body->setOrderId('RFZfrdtm3mhO1oGzf5Cx7fEMsmGZY');
$apiResponse = $loyaltyApi->calculateLoyaltyPoints($programId, $body);
if ($apiResponse->isSuccess()) {
$calculateLoyaltyPointsResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Creates a loyalty reward. In the process, the endpoint does following:
- Uses the
reward_tier_id
in the request to determine the number of points to lock for this reward. - If the request includes
order_id
, it adds the reward and related discount to the order.
After a reward is created, the points are locked and not available for the buyer to redeem another reward.
function createLoyaltyReward(CreateLoyaltyRewardRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
body |
CreateLoyaltyRewardRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
$body_reward_loyaltyAccountId = '5adcb100-07f1-4ee7-b8c6-6bb9ebc474bd';
$body_reward_rewardTierId = 'e1b39225-9da5-43d1-a5db-782cdd8ad94f';
$body_reward = new Models\LoyaltyReward(
$body_reward_loyaltyAccountId,
$body_reward_rewardTierId
);
$body_reward->setOrderId('RFZfrdtm3mhO1oGzf5Cx7fEMsmGZY');
$body_idempotencyKey = '18c2e5ea-a620-4b1f-ad60-7b167285e451';
$body = new Models\CreateLoyaltyRewardRequest(
$body_reward,
$body_idempotencyKey
);
$apiResponse = $loyaltyApi->createLoyaltyReward($body);
if ($apiResponse->isSuccess()) {
$createLoyaltyRewardResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Searches for loyalty rewards. This endpoint accepts a request with no query filters and returns results for all loyalty accounts.
If you include a query
object, loyalty_account_id
is required and status
is optional.
If you know a reward ID, use the RetrieveLoyaltyReward endpoint.
Search results are sorted by updated_at
in descending order.
function searchLoyaltyRewards(SearchLoyaltyRewardsRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
body |
SearchLoyaltyRewardsRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
$body = new Models\SearchLoyaltyRewardsRequest;
$body_query_loyaltyAccountId = '5adcb100-07f1-4ee7-b8c6-6bb9ebc474bd';
$body->setQuery(new Models\SearchLoyaltyRewardsRequestLoyaltyRewardQuery(
$body_query_loyaltyAccountId
));
$body->setLimit(10);
$apiResponse = $loyaltyApi->searchLoyaltyRewards($body);
if ($apiResponse->isSuccess()) {
$searchLoyaltyRewardsResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Deletes a loyalty reward by doing the following:
- Returns the loyalty points back to the loyalty account.
- If an order ID was specified when the reward was created (see CreateLoyaltyReward), it updates the order by removing the reward and related discounts.
You cannot delete a reward that has reached the terminal state (REDEEMED).
function deleteLoyaltyReward(string $rewardId): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
rewardId |
string |
Template, Required | The ID of the loyalty reward to delete. |
$rewardId = 'reward_id4';
$apiResponse = $loyaltyApi->deleteLoyaltyReward($rewardId);
if ($apiResponse->isSuccess()) {
$deleteLoyaltyRewardResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Retrieves a loyalty reward.
function retrieveLoyaltyReward(string $rewardId): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
rewardId |
string |
Template, Required | The ID of the loyalty reward to retrieve. |
$rewardId = 'reward_id4';
$apiResponse = $loyaltyApi->retrieveLoyaltyReward($rewardId);
if ($apiResponse->isSuccess()) {
$retrieveLoyaltyRewardResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();
Redeems a loyalty reward.
The endpoint sets the reward to the REDEEMED
terminal state.
If you are using your own order processing system (not using the Orders API), you call this endpoint after the buyer paid for the purchase.
After the reward reaches the terminal state, it cannot be deleted. In other words, points used for the reward cannot be returned to the account.
function redeemLoyaltyReward(string $rewardId, RedeemLoyaltyRewardRequest $body): ApiResponse
Parameter | Type | Tags | Description |
---|---|---|---|
rewardId |
string |
Template, Required | The ID of the loyalty reward to redeem. |
body |
RedeemLoyaltyRewardRequest |
Body, Required | An object containing the fields to POST for the request. See the corresponding object definition for field details. |
$rewardId = 'reward_id4';
$body_idempotencyKey = '98adc7f7-6963-473b-b29c-f3c9cdd7d994';
$body_locationId = 'P034NEENMD09F';
$body = new Models\RedeemLoyaltyRewardRequest(
$body_idempotencyKey,
$body_locationId
);
$apiResponse = $loyaltyApi->redeemLoyaltyReward($rewardId, $body);
if ($apiResponse->isSuccess()) {
$redeemLoyaltyRewardResponse = $apiResponse->getResult();
} else {
$errors = $apiResponse->getErrors();
}
// Get more response info...
// $statusCode = $apiResponse->getStatusCode();
// $headers = $apiResponse->getHeaders();