> Portal Navigation: > > - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version. > - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages). > - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`). > - Top-level index of all portals: https://dev.wix.com/docs/llms.txt > - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt # Method name: earnPoints(accountId: string, options: EarnPointsOptions) # Method package: wixLoyaltyV2 # Method menu location: wixLoyaltyV2 --> accounts --> earnPoints # Method Link: https://dev.wix.com/docs/velo/apis/wix-loyalty-v2/accounts/earn-points.md # Method Description: Adds points to a loyalty account. Only a positive amount can be added using this method. To adjust an account's balance for a negative amount, use Adjust Points. This method allows customers to manually earn points to their loyalty accounts. To use this method you must include an `appId` and an `idempotencyKey`. Any string can be set as the `appId` or `idempotencyKey`. In contrast to when an account earns points through an action taken on your site, then, the `appId` automatically sets to the source app that generates the points. In both cases, the transaction `type` is `"EARN"`. # Method Code Examples: *** Note: do not assume any prop names or enum values other than the ones in the example. ## Earn loyalty points (dashboard page code) ```javascript import { accounts } from 'wix-loyalty.v2'; /* Sample accountId value: '6d2c421e-3c1a-4464-bf2f-df13a3fc8aea' * * Sample options value: * { * 'amount': 50, * 'description': 'Subscribed to newsletter.', * 'appId': '553c79f3-5625-4f38-b14b-ef7c0d1e87df', * 'idempotencyKey': 'bfdc785c-bbc6-447d-b987-220ca649a3b2' * } */ export async function myEarnPointsFunction() { try { const updatedAccount = await accounts.earnPoints(accountId, options); const newBalance = updatedAccount.account.points.balance; const transactionId = updatedAccount.transaction_id; console.log('Success! New balance is ', newBalance); return updatedAccount; } catch (error) { console.error(error); } } /* Promise resolves to: * { * "transaction_id": "4dd51f9d-2664-420a-9802-4df7811a5221", * "account": { * "_id": "6d2c421e-3c1a-4464-bf2f-df13a3fc8aea", * "contactId": "7fa15d5e-49c4-44ef-8111-4cb0a04ca4db", * "memberId": "7fa15d5e-49c4-44ef-8111-4cb0a04ca4db", * "points": { * "balance": 185, * "earned": 185, * "adjusted": 0, * "redeemed": 0 * }, * "rewardAvailable": true, * "_createdDate": "2022-11-09T15:18:53.582Z", * "_updatedDate": "2022-11-28T14:48:59.940Z", * "revision": "6", * "tier": { * "_updatedDate": "2022-11-28T14:48:59.939Z", * "points": 185 * } * } * } */ ``` ## Earn loyalty points (export from backend code) ```javascript import { Permissions, webMethod } from 'wix-web-module'; import { accounts } from 'wix-loyalty.v2'; /* Sample accountId value: '6d2c421e-3c1a-4464-bf2f-df13a3fc8aea' * * Sample options value: * { * 'amount': 50, * 'description': 'Subscribed to newsletter.', * 'appId': '553c79f3-5625-4f38-b14b-ef7c0d1e87df', * 'idempotencyKey': 'bfdc785c-bbc6-447d-b987-220ca649a3b2' * } */ export const myEarnPointsFunction = webMethod( Permissions.Anyone, async () => { try { const updatedAccount = await accounts.earnPoints(accountId, options); const newBalance = updatedAccount.account.points.balance; const transactionId = updatedAccount.transaction_id; console.log('Success! New balance is ', newBalance); return updatedAccount; } catch (error) { console.error(error); } }); /* Promise resolves to: * { * "transaction_id": "4dd51f9d-2664-420a-9802-4df7811a5221", * "account": { * "_id": "6d2c421e-3c1a-4464-bf2f-df13a3fc8aea", * "contactId": "7fa15d5e-49c4-44ef-8111-4cb0a04ca4db", * "memberId": "7fa15d5e-49c4-44ef-8111-4cb0a04ca4db", * "points": { * "balance": 185, * "earned": 185, * "adjusted": 0, * "redeemed": 0 * }, * "rewardAvailable": true, * "_createdDate": "2022-11-09T15:18:53.582Z", * "_updatedDate": "2022-11-28T14:48:59.940Z", * "revision": "6", * "tier": { * "_updatedDate": "2022-11-28T14:48:59.939Z", * "points": 185 * } * } * } */ ``` ---