> 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 # ChangeBalance # Package: benefitPrograms # Namespace: BalanceService # Method link: https://dev.wix.com/docs/api-reference/business-solutions/benefit-programs/balances/change-balance.md ## Permission Scopes: Manage benefit programs: SCOPE.BENEFIT_PROGRAMS.MANAGE ## Introduction Changes the number of available credits in a balance. You can adjust or set the number of available credits. --- ## REST API ### Schema ``` Method: changeBalance Description: Changes the number of available credits in a balance. You can adjust or set the number of available credits. URL: https://www.wixapis.com/benefit-programs/v1/balances/{poolId}/change Method: POST # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: idempotencyKey Method parameters: param name: idempotencyKey | type: idempotencyKey | description: Unique identifier, generated by the client. Used to recognize repeated attempts to make the same request. | required: true param name: instructingParty | type: IdentificationData - ONE-OF: - name: anonymousVisitorId | type: string | description: GUID of a site visitor that hasn't logged in to the site. - name: memberId | type: string | description: GUID of a site member. - name: wixUserId | type: string | description: GUID of a Wix user. - ONE-OF: - name: adjustOptions | type: AdjustOptions | description: Adjust the balance by a specific number of credits. - name: value | type: string | description: Amount to change the balance's available credits by. - To increase the balance, specify a positive number. - To decrease the balance, specify a negative number. - name: beneficiary | type: IdentificationData | description: Beneficiary of the associated pool. - ONE-OF: - name: setOptions | type: SetOptions | description: Set the balance to a specific number of credits. - name: value | type: string | description: Amount to set the balance's available credits to. If this is the same as the current value, no transaction is created. - name: beneficiary | type: IdentificationData | description: Beneficiary of the associated pool. param name: transactionDetails | type: TransactionDetails - name: itemCount | type: integer | description: Amount of items associated with the transaction. - name: benefitKey | type: string | description: Benefit key associated with the transaction. param name: type | type: Type - enum: UNKNOWN_OPERATION - Unknown balance change type. ADJUST - Use with `adjustOptions`. SET - Use with `setOptions`. Return type: ChangeBalanceResponse - name: balance | type: Balance | description: Updated balance. - name: id | type: string | description: Balance GUID. This is the same as the associated pool's GUID. - name: revision | type: string | description: Revision number, which increments by 1 each time the balance is updated. To prevent conflicting changes, the current revision must be passed when updating the balance. - name: createdDate | type: string | description: Date and time the balance was created. - name: updatedDate | type: string | description: Date and time the balance was updated. - name: beneficiary | type: IdentificationData | description: Beneficiary of the associated pool. - ONE-OF: - name: anonymousVisitorId | type: string | description: GUID of a site visitor that hasn't logged in to the site. - name: memberId | type: string | description: GUID of a site member. - name: wixUserId | type: string | description: GUID of a Wix user. - name: amount | type: BalanceAmount | description: Available credits. - name: available | type: string | description: number of available credits. - name: reserved | type: string | description: number of reserved credits. - name: poolInfo | type: PoolInfo | description: Associated pool information. - name: id | type: string | description: Pool GUID. - name: poolDefinitionId | type: string | description: GUID of the pool definition the pool was created from. - name: programDefinitionId | type: string | description: GUID of the program definition the pool was created from. - name: programId | type: string | description: GUID of the program that contains the pool. - name: creditAmount | type: string | description: Available credits. - name: namespace | type: string | description: Namespace for your app or site's benefit programs. Namespaces allow you to distinguish between entities that you created and entities that other apps created. - name: externalProgramDefinitionId | type: string | description: External GUID of the program definition the pool was created from. - name: externalProgramId | type: string | description: External GUID of the program that contains the pool. - name: creditRolloverConfiguration | type: RolloverConfigurationInfo | description: Credit rollover configuration information for the pool. - name: enabled | type: boolean | description: Whether unused credits roll over to a new cycle when a program renews. - name: balanceCap | type: string | description: Maximum number of credits that can roll over to the next cycle when a program renews. - name: status | type: PoolStatus | description: Pool status - enum: - ACTIVE: Pool is active. - PAUSED: Pool is paused. It can be resumed. - ENDED: Pool is ended. It can't be resumed. - PROVISIONING: Pool provisioning is in progress. This status exists for a short time during processing. - RENEWING: Pool renewing is in progress. This status exists for a short time during processing. - PENDING: Pool is pending - name: extendedFields | type: ExtendedFields | description: Custom field data for the balance object. [Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions.md) must be configured in the app dashboard before they can be accessed with API calls. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). - name: lastTransactionId | type: string | description: GUID of the transaction associated with the most recent change to the balance. - name: transactionId | type: string | description: GUID of the transaction associated with this change in balance. Possible Errors: HTTP Code: 409 | Status Code: ALREADY_EXISTS | Application Code: BALANCE_ALREADY_INITIALIZED | Description: Balance was already initialized. This is likely a duplicate call or a call with wrong operation type. HTTP Code: 409 | Status Code: ALREADY_EXISTS | Application Code: ALREADY_EXECUTED | Description: Balance was already changed with the specified idempotency key. This is likely a duplicate call. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: BALANCE_EXCEEDED_LIMITS | Description: Insufficient credits to complete balance change. ``` ### Examples ### ChangeBalance ```curl ~~~cURL curl https://www.wixapis.com/benefit-programs/v1/balances/09010c62-181e-49b9-909c-099f4574c0f2/change \ -H 'Content-type: application/json' \ -H 'Authorization: ' --data '{ "pool_id": "09010c62-181e-49b9-909c-099f4574c0f2", "idempotency_key": "31fc503c-4008-42a8-9699-362c69564aa9", "type": "ADJUST", "transaction_details": { "reason": "Manual adjustment" }, "adjust_options": { "amount": "5", "limit_rule": "HARD_ENFORCE", "upper_limit": "20" } }' ~~~ ``` --- ## JavaScript SDK ### Schema ``` Method: wixClientAdmin.benefitPrograms.BalanceService.changeBalance(poolId, idempotencyKey, options) Description: Changes the number of available credits in a balance. You can adjust or set the number of available credits. # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present. Required parameters: poolId, idempotencyKey, options Method parameters: param name: idempotencyKey | type: string | description: Unique identifier, generated by the client. Used to recognize repeated attempts to make the same request. | required: true param name: options | type: ChangeBalanceOptions none | required: true - ONE-OF: - required: true - name: adjustOptions | type: AdjustOptions | description: Adjust the balance by a specific number of credits. - name: value | type: string | description: Amount to change the balance's available credits by. - To increase the balance, specify a positive number. - To decrease the balance, specify a negative number. - name: beneficiary | type: IdentificationData | description: Beneficiary of the associated pool. - ONE-OF: - name: anonymousVisitorId | type: string | description: GUID of a site visitor that hasn't logged in to the site. - name: memberId | type: string | description: GUID of a site member. - name: wixUserId | type: string | description: GUID of a Wix user. - name: setOptions | type: SetOptions | description: Set the balance to a specific number of credits. - name: value | type: string | description: Amount to set the balance's available credits to. If this is the same as the current value, no transaction is created. - name: beneficiary | type: IdentificationData | description: Beneficiary of the associated pool. - name: instructingParty | type: IdentificationData | description: Identity changing the balance. - name: type | type: Type | description: Balance change type. - enum: - UNKNOWN_OPERATION: Unknown balance change type. - ADJUST: Use with `adjustOptions`. - SET: Use with `setOptions`. - name: transactionDetails | type: TransactionDetails | description: Details to send to the transaction created from this balance change. - name: itemCount | type: integer | description: Amount of items associated with the transaction. - name: benefitKey | type: string | description: Benefit key associated with the transaction. param name: poolId | type: string | description: GUID of the pool associated with the balance to change. This is also the GUID of the balance. | required: true Return type: PROMISE - name: balance | type: Balance | description: Updated balance. - name: _id | type: string | description: Balance GUID. This is the same as the associated pool's GUID. - name: revision | type: string | description: Revision number, which increments by 1 each time the balance is updated. To prevent conflicting changes, the current revision must be passed when updating the balance. - name: _createdDate | type: Date | description: Date and time the balance was created. - name: _updatedDate | type: Date | description: Date and time the balance was updated. - name: beneficiary | type: IdentificationData | description: Beneficiary of the associated pool. - ONE-OF: - name: anonymousVisitorId | type: string | description: GUID of a site visitor that hasn't logged in to the site. - name: memberId | type: string | description: GUID of a site member. - name: wixUserId | type: string | description: GUID of a Wix user. - name: amount | type: BalanceAmount | description: Available credits. - name: available | type: string | description: number of available credits. - name: reserved | type: string | description: number of reserved credits. - name: poolInfo | type: PoolInfo | description: Associated pool information. - name: _id | type: string | description: Pool GUID. - name: poolDefinitionId | type: string | description: GUID of the pool definition the pool was created from. - name: programDefinitionId | type: string | description: GUID of the program definition the pool was created from. - name: programId | type: string | description: GUID of the program that contains the pool. - name: creditAmount | type: string | description: Available credits. - name: namespace | type: string | description: Namespace for your app or site's benefit programs. Namespaces allow you to distinguish between entities that you created and entities that other apps created. - name: externalProgramDefinitionId | type: string | description: External GUID of the program definition the pool was created from. - name: externalProgramId | type: string | description: External GUID of the program that contains the pool. - name: creditRolloverConfiguration | type: RolloverConfigurationInfo | description: Credit rollover configuration information for the pool. - name: enabled | type: boolean | description: Whether unused credits roll over to a new cycle when a program renews. - name: balanceCap | type: string | description: Maximum number of credits that can roll over to the next cycle when a program renews. - name: status | type: PoolStatus | description: Pool status - enum: - ACTIVE: Pool is active. - PAUSED: Pool is paused. It can be resumed. - ENDED: Pool is ended. It can't be resumed. - PROVISIONING: Pool provisioning is in progress. This status exists for a short time during processing. - RENEWING: Pool renewing is in progress. This status exists for a short time during processing. - PENDING: Pool is pending - name: extendedFields | type: ExtendedFields | description: Custom field data for the balance object. [Extended fields](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/schema-plugins/about-schema-plugin-extensions.md) must be configured in the app dashboard before they can be accessed with API calls. - name: namespaces | type: object | description: Extended field data. Each key corresponds to the namespace of the app that created the extended fields. The value of each key is structured according to the schema defined when the extended fields were configured. You can only access fields for which you have the appropriate permissions. Learn more about [extended fields](https://dev.wix.com/docs/rest/articles/getting-started/extended-fields.md). - name: lastTransactionId | type: string | description: GUID of the transaction associated with the most recent change to the balance. - name: transactionId | type: string | description: GUID of the transaction associated with this change in balance. Possible Errors: HTTP Code: 409 | Status Code: ALREADY_EXISTS | Application Code: BALANCE_ALREADY_INITIALIZED | Description: Balance was already initialized. This is likely a duplicate call or a call with wrong operation type. HTTP Code: 409 | Status Code: ALREADY_EXISTS | Application Code: ALREADY_EXECUTED | Description: Balance was already changed with the specified idempotency key. This is likely a duplicate call. HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: BALANCE_EXCEEDED_LIMITS | Description: Insufficient credits to complete balance change. ``` ### Examples ### changeBalance ```javascript import { balances } from '@wix/benefit-programs'; async function changeBalance(poolId,idempotencyKey,options) { const response = await balances.changeBalance(poolId,idempotencyKey,options); }; ``` ### changeBalance (with elevated permissions) ```javascript import { balances } from '@wix/benefit-programs'; import { auth } from '@wix/essentials'; async function myChangeBalanceMethod(poolId,idempotencyKey,options) { const elevatedChangeBalance = auth.elevate(balances.changeBalance); const response = await elevatedChangeBalance(poolId,idempotencyKey,options); } ``` ### changeBalance (self-hosted) Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md). ```javascript import { createClient } from '@wix/sdk'; import { balances } from '@wix/benefit-programs'; // Import the auth strategy for the relevant access type // Import the relevant host module if needed const myWixClient = createClient ({ modules: { balances }, // Include the auth strategy and host as relevant }); async function changeBalance(poolId,idempotencyKey,options) { const response = await myWixClient.balances.changeBalance(poolId,idempotencyKey,options); }; ``` ---