> 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

# ChargeMemberships

# Package: orders

# Namespace: OrderBillingService

# Method link: https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/order-billing/charge-memberships.md

## Introduction

Sends a request to charge the memberships.
The status will be updated asynchronously on the returned payments.

---

## REST API

### Schema

```
 Method: chargeMemberships
 Description: Sends a request to charge the memberships. The status will be updated asynchronously on the returned payments.
 URL: https://www.wixapis.com/ecom/v1/order-billing/charge-memberships
 Method: POST
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  orderId, memberId, memberships, memberships.membershipIdentifier, memberships.lineItemId
 Method parameters: 
   param name: memberId | type: memberId   | required: true | validation: format GUID
   param name: memberships | type: array<memberships>   | required: true | validation: minItems 1, maxItems 100
              - name: lineItemId | type: string | description:  | required: true | validation: format GUID
              - name: membershipIdentifier | type: MembershipIdentifier | description:  | required: true 
                 - ONE-OF: 
                    - name: existingMembership | type: ExistingMembershipIdentifier | description: An existing, already-provisioned membership.  
                       - name: appId | type: string | description: GUID of the app providing this membership payment option (e.g., Pricing Plans).  | validation: format GUID
                       - name: membershipId | type: string | description: GUID of existing membership.  | validation: minLength 1, maxLength 200
                    - name: futureMembership | type: FutureMembershipIdentifier | description: A future membership - no membership GUID yet; identified by the paying plan line item + selected benefit.  
                       - name: lineItemId | type: string | description: GUID of the Plan line item that is used to pay for the booking item.  | validation: format GUID
                       - name: benefitId | type: string | description: The selected unit within the Plan that will be redeemed.  | validation: maxLength 200
   param name: orderId | type: orderId | description: Order GUID to charge the relevant memberships. | required: true | validation: format GUID
 Return type: ChargeMembershipsResponse
  - name: payments | type: array<Payment> | description: Created payments for the charged memberships.  | validation: minItems 1, maxItems 100
     - ONE-OF: 
        - name: regularPaymentDetails | type: RegularPaymentDetails | description: Regular payment details.  
           - ONE-OF: 
              - name: creditCardDetails | type: CreditCardPaymentMethodDetails | description: Credit card details.  
                 - name: lastFourDigits | type: string | description: The last 4 digits of the card number.  | validation: maxLength 4
                 - name: brand | type: string | description: Card issuer's brand.  | validation: maxLength 100
           - name: paymentOrderId | type: string | description: Wix Payments order GUID.  | validation: maxLength 100
           - name: gatewayTransactionId | type: string | description: Payment gateway's transaction GUID. This field is only returned when the value of `offline_payment` is `false`.  | validation: maxLength 100
           - name: providerTransactionId | type: string | description: Transaction GUID in the payment provider's system. For example, at PayPal, Square, Stripe, etc. Not returned for offline payments.  | validation: maxLength 100
           - name: offlinePayment | type: boolean | description: Whether the payment was made offline. For example, when using cash or when marked as paid in the Business Manager.  
           - name: savedPaymentMethod | type: boolean | description: Whether there is a payment agreement that allows for future charges.  
           - name: authorizationDetails | type: AuthorizationDetails | description: Authorization details.  
              - name: delayedCapture | type: boolean | description: Whether the authorized payment is of a delayed capture.  | read-only: true 
              - name: authorizedDate | type: string | description: Date and time the payment was authorized in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.  | validation: format date-time
              - name: captures | type: array<AuthorizationCapture> | description: List of captures associated with payment In case of failed it can be replaced with new one with PENDING or SUCCESS statuses  | validation: maxItems 1
                 - name: id | type: string | description: Capture GUID.  | read-only: true | validation: format GUID
                 - name: status | type: AuthorizationCaptureStatus | description: Status of this capture action  
                         - enum:
                         -     PENDING: Capture operation still in progress.
                         -     SUCCEEDED: Capture operation succeeded.
                         -     FAILED: Capture operation failed.
                 - name: amount | type: Price | description: Amount of this capture  | validation: immutable
                    - name: amount | type: string | description: Amount.  | validation: decimalValue {"gte":"0","lte":"1000000000000000"}
                    - name: formattedAmount | type: string | description: Amount formatted with currency symbol.  | read-only: true 
                 - name: createdDate | type: string | description: Date and time the capture was initiated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.  | validation: format date-time
                 - name: failureDetails | type: AuthorizationActionFailureDetails | description: In case of status is FAILED may contain failure details  
                    - name: failureCode | type: string | description:   | validation: maxLength 100
              - name: void | type: AuthorizationVoid | description: Void associated with payment  
                 - name: status | type: AuthorizationVoidStatus | description: Status of this void action  
                         - enum:
                         -     PENDING: Void operation still in progress.
                         -     SUCCEEDED: Void operation succeeded.
                         -     FAILED: Void operation failed.
                 - name: voidedDate | type: string | description: Date and time the void was initiated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.  | validation: format date-time
                 - name: failureDetails | type: AuthorizationActionFailureDetails | description: In case of status is FAILED may contain failure details  
                 - name: reason | type: Reason | description: Reason of void action  
                         - enum:
                         -     MANUAL: Authorization was voided by user.
                         -     SCHEDULED: Authorization passed execution date.
              - name: scheduledAction | type: ScheduledAction | description: Scheduled action for this transaction  
                 - name: actionType | type: ActionType | description: Type of the action.  
                         - enum: VOID, CAPTURE
                 - name: executionDate | type: string | description: The date and time of the action.  | validation: format date-time
           - name: chargebacks | type: array<Chargeback> | description: Record of chargebacks made by the buyer.  | validation: maxItems 6
              - name: id | type: string | description: Chargeback GUID.  | read-only: true | validation: format GUID, immutable
              - name: createdDate | type: string | description: Date and time the chargeback was created in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. Defaults to current time when not provided.  | read-only: true | validation: format date-time, immutable
              - name: updatedDate | type: string | description: Date and time the chargeback was updated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. Defaults to current time when not provided.  | read-only: true | validation: format date-time
              - name: amount | type: Price | description: Amount.  | read-only: true | validation: immutable
              - name: reversalAmount | type: Price | description: Reversal amount. Present only when status is REVERSED.  | read-only: true 
              - name: status | type: ChargebackStatus | description: Status.  Default: `"APPROVED"`.  
                     - enum:
                     -     APPROVED: Chargeback was approved.
                     -     REVERSED: Chargeback was reversed.
              - name: externalId | type: string | description: External chargeback GUID.  | read-only: true | validation: format GUID, immutable
           - name: platformFee | type: Price | description: Platform fee amount associated with this payment.  
           - name: paymentMethodName | type: PaymentMethodName | description: Payment method with buyer and optional owner translations. Non-exhaustive list of supported values: + `CreditCard`, `Alipay`, `AstropayCash`, `AstropayDBT`, `AstropayMBT`, `Bitcoin`, `BitPay`, `Cash`, `ConvenienceStore`, `EPay`, `Fake`, `Giropay`, `IDeal`, `InPerson`, `Klarna`, `MercadoPago`, `Netpay`, `NordeaSolo`, `Offline`, `PagSeguro`, `PayEasy`, `PayPal`, `Paysafecard`, `Paysafecash`, `PointOfSale`, `Poli`, `Privat24`, `Przelewy24`, `RapidTransfer`, `Sepa`, `Skrill`, `Sofort`, `Trustly`, `Neteller`, `Unionpay`, `UniPay`, `Yandex`  
              - name: buyerLanguageName | type: string | description: Translated payment method name in buyer language.  | validation: maxLength 150
              - name: siteLanguageName | type: string | description: Translated payment method name in site owner language.  | validation: maxLength 150
              - name: userDefinedName | type: UserDefinedPaymentMethodName | description: User-provided payment method name.  When set, takes precedence over `buyerLanguageName` and `siteLanguageName`.  
                 - ONE-OF: 
                    - name: predefined | type: PredefinedPaymentMethod | description: Predefined payment method.  
                             - enum:
                             -     CASH: Cash payment.
                             -     BANK_TRANSFER: Bank transfer.
                             -     CHECK: Payment by check.
                    - name: custom | type: string | description: Custom payment method name provided by user.  For example, `"Wire transfer"`, `"Money order"`, `"Venmo"` or any other custom name.  | validation: minLength 1, maxLength 150
        - name: giftcardPaymentDetails | type: GiftCardPaymentDetails | description: Gift card payment details.  
           - name: giftCardPaymentId | type: string | description: Gift card payment GUID.  | validation: maxLength 100
           - name: appId | type: string | description: GUID of the app that created the gift card.  | validation: format GUID
           - name: obfuscatedCode | type: string | description: Gift card code with all but the last four characters masked. For example, `************QXY1`.  | validation: maxLength 30, immutable
        - name: membershipPaymentDetails | type: MembershipPaymentDetails | description: Membership payment details.  
           - name: membershipId | type: string | description: Membership GUID.  | validation: maxLength 200
           - name: lineItemId | type: string | description: GUID of the line item this membership applies to.  | validation: minLength 1, maxLength 100
           - name: name | type: MembershipName | description: Membership name.  
              - name: original | type: string | description: Membership name.  | validation: maxLength 100
              - name: translated | type: string | description: Translated membership name. Defaults to `original` when not provided.  | validation: maxLength 100
           - name: externalTransactionId | type: string | description: The transaction GUID in the membership system. Can be used to void the transaction.  | validation: minLength 1, maxLength 100
           - name: providerAppId | type: string | description: GUID of the application providing this payment option.  | validation: format GUID
           - name: futureMembership | type: FutureMembershipDetails | description: Details of a membership that does not yet exist, allowing the payment to be held before the membership is created.  
              - name: lineItemId | type: string | description: GUID of the plan line item in the order from which the membership will be created.  | validation: format GUID
              - name: benefitId | type: string | description: GUID of the benefit the future membership will grant.  | validation: maxLength 200
     - name: id | type: string | description: Payment GUID.  | read-only: true | validation: format GUID
     - name: createdDate | type: string | description: Date and time the payment was created in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. Defaults to current time when not provided.  | validation: format date-time
     - name: updatedDate | type: string | description: Date and time the payment was last updated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.  | read-only: true | validation: format date-time
     - name: amount | type: Price | description: Payment amount.  
     - name: refundDisabled | type: boolean | description: Whether refunds for this payment are disabled. + `true`: This payment is not refundable. + `false`: This payment may be refunded. However, this ultimately depends on the payment provider.  
     - name: supportReceiptGeneration | type: boolean | description: Whether receipt generation is allowed for this payment. + `true`: This payment supports receipt generation. + `false`: This payment doesn't support receipt generation, or a receipt was already generated.  | read-only: true 
     - name: cashRounding | type: CashRoundingDetails | description: Details about cash rounding applied to this payment, when relevant.  
        - name: unroundedAmount | type: Price | description: Payment amount before cash rounding was applied. When provided, balance and status calculations use this value instead of `amount` to prevent false overpayment or underpayment due to rounding.  
        - name: roundingAdjustment | type: CashRounding | description: The difference between 'amount' and 'unroundedAmount' (amount minus unroundedAmount). A positive value indicates the price was rounded up; a negative value indicates a round-down.  | read-only: true 
           - name: amount | type: string | description: Amount, can be negative or positive.  | validation: decimalValue {"gte":"-1000000000000000","lte":"1000000000000000"}
           - name: formattedAmount | type: string | description: Amount formatted with currency symbol.  | read-only: true 
     - name: status | type: PaymentStatus | description: Overall payment status.  Gift card and membership payments support only `APPROVED`, `PENDING`, `CANCELED`, `DECLINED`, and `VOIDED`. The remaining values apply to regular payments.  
         - enum:
         -     APPROVED: Payment was charged successfully.
         -     PENDING: Payment is being processed and hasn't been confirmed yet.
         -     PENDING_MERCHANT: Payment is awaiting confirmation. For an offline payment, the merchant must confirm they received it. For an online payment, the payment provider hasn't confirmed it, which typically means the merchant's provider account setup isn't complete.
         -     CANCELED: Payment was canceled before it was charged.
         -     DECLINED: Payment was declined by the payment provider.
         -     REFUNDED: Payment was fully refunded.
         -     PARTIALLY_REFUNDED: Part of the payment amount was refunded.
         -     AUTHORIZED: Funds are held on the buyer's payment method but haven't been captured. Capture them with [Capture Authorized Payments](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/order-billing/capture-authorized-payments.md) or release them with [Void Authorized Payments](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/order-billing/void-authorized-payments.md). An authorized payment can't be refunded until it's captured.
         -     VOIDED: Payment was voided, releasing whatever it held or consumed: an authorization on the buyer's payment method, a gift card balance, or membership credits.  Gift card and membership payments don't support partial refunds, so a full refund of one is reported as `VOIDED` rather than `REFUNDED`.
     - name: chargeCorrelationId | type: string | description: GUID linking this payment to the charge request that created it. Matches the `idempotencyKey` sent in the Charge Order request.  | validation: format GUID

 Possible Errors:
   HTTP Code: 404 | Status Code: NOT_FOUND | Application Code: ORDER_NOT_FOUND | Description: Order was not found
   HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: MEMBERSHIP_NOT_ELIGIBLE | Description: Membership eligibility check failed.


```

### Examples

### Charge Memberships
Charge order using memberships.

```curl
curl -X POST \
  'https://www.wixapis.com/ecom/v1/order-billing/charge-memberships' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: <AUTH>' \
  -d '{
	  "orderId": "c2f808cb-f9ee-4b27-9b05-d9c2b73a297f",
	  "memberships": [
	    {
	      "lineItemId": "00000000-0000-0000-0000-000000000001",
	      "membershipIdentifier": {
	        "existingMembership": {
	          "appId": "1522827f-c56c-a5c9-2ac9-00f9e6ae12d3",
	          "membershipId": "E7aZarYzwvhnG3IKcri09MIQS12j6VGzL3E9YqIaADsC4w1pLKcVFNRX1RTPVb3oR8tEsyJE49EwYtsa8Bb3Nku0EkUgPaHZYcO"
	        }
	      }
	    },
	    {
	      "lineItemId": "00000000-0000-0000-0000-000000000002",
	      "membershipIdentifier": {
	        "existingMembership": {
	          "appId": "1522827f-c56c-a5c9-2ac9-00f9e6ae12d3",
	          "membershipId": "E7VlJsGgtb4pg3Fb4QL3XrjIiJB87ufdyTyyuaNAAhxGPYhyzGLSYmkmDfFEDF0st5UaZpmkstmmnfEq3ynXSdS9IqMvcLuDD8A"
	        }
	      }
	    }
	  ],
	  "memberId": "aab64a42-4a04-4e6a-bb60-346acc5a3d47"
	}'
```

---

## JavaScript SDK

### Schema

```
 Method: wixClientAdmin.ecom.orderBilling.chargeMemberships(orderId, options)
 Description: Sends a request to charge the memberships. The status will be updated asynchronously on the returned payments.
 # Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
 Required parameters:  orderId, options.memberId, options.memberships, options.memberships.membershipIdentifier, options.memberships.membershipIdentifier.existingMembership.appId, options.memberships.membershipIdentifier.existingMembership.membershipId, options.memberships.membershipIdentifier.futureMembership.lineItemId, options.memberships.membershipIdentifier.futureMembership.benefitId, options.memberships.lineItemId, options
 Method parameters: 
   param name: options | type: ChargeMembershipsOptions  none | required: true 
        - name: memberId | type: string | description:  | required: true | validation: format GUID
        - name: memberships | type: array<MembershipCharge> | description:  | required: true | validation: minItems 1, maxItems 100
           - name: lineItemId | type: string | description:   | validation: format GUID
           - name: membershipIdentifier | type: MembershipIdentifier | description:   
              - ONE-OF: 
                 - name: existingMembership | type: ExistingMembershipIdentifier | description: An existing, already-provisioned membership.  
                    - name: appId | type: string | description: GUID of the app providing this membership payment option (e.g., Pricing Plans).  | validation: format GUID
                    - name: membershipId | type: string | description: GUID of existing membership.  | validation: minLength 1, maxLength 200
                 - name: futureMembership | type: FutureMembershipIdentifier | description: A future membership - no membership GUID yet; identified by the paying plan line item + selected benefit.  
                    - name: lineItemId | type: string | description: GUID of the Plan line item that is used to pay for the booking item.  | validation: format GUID
                    - name: benefitId | type: string | description: The selected unit within the Plan that will be redeemed.  | validation: maxLength 200
   param name: orderId | type: string | description: Order GUID to charge the relevant memberships. | required: true | validation: format GUID
 Return type: PROMISE<ChargeMembershipsResponse>
  - name: payments | type: array<Payment> | description: Created payments for the charged memberships.  | validation: minItems 1, maxItems 100
     - ONE-OF: 
        - name: regularPaymentDetails | type: RegularPaymentDetails | description: Regular payment details.  
           - ONE-OF: 
              - name: creditCardDetails | type: CreditCardPaymentMethodDetails | description: Credit card details.  
                 - name: lastFourDigits | type: string | description: The last 4 digits of the card number.  | validation: maxLength 4
                 - name: brand | type: string | description: Card issuer's brand.  | validation: maxLength 100
           - name: paymentOrderId | type: string | description: Wix Payments order GUID.  | validation: maxLength 100
           - name: gatewayTransactionId | type: string | description: Payment gateway's transaction GUID. This field is only returned when the value of `offline_payment` is `false`.  | validation: maxLength 100
           - name: providerTransactionId | type: string | description: Transaction GUID in the payment provider's system. For example, at PayPal, Square, Stripe, etc. Not returned for offline payments.  | validation: maxLength 100
           - name: offlinePayment | type: boolean | description: Whether the payment was made offline. For example, when using cash or when marked as paid in the Business Manager.  
           - name: savedPaymentMethod | type: boolean | description: Whether there is a payment agreement that allows for future charges.  
           - name: authorizationDetails | type: AuthorizationDetails | description: Authorization details.  
              - name: delayedCapture | type: boolean | description: Whether the authorized payment is of a delayed capture.  | read-only: true 
              - name: authorizedDate | type: Date | description: Date and time the payment was authorized in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.  
              - name: captures | type: array<AuthorizationCapture> | description: List of captures associated with payment In case of failed it can be replaced with new one with PENDING or SUCCESS statuses  | validation: maxItems 1
                 - name: _id | type: string | description: Capture GUID.  | read-only: true | validation: format GUID
                 - name: status | type: AuthorizationCaptureStatus | description: Status of this capture action  
                         - enum:
                         -     PENDING: Capture operation still in progress.
                         -     SUCCEEDED: Capture operation succeeded.
                         -     FAILED: Capture operation failed.
                 - name: amount | type: Price | description: Amount of this capture  | validation: immutable
                    - name: amount | type: string | description: Amount.  | validation: decimalValue {"gte":"0","lte":"1000000000000000"}
                    - name: formattedAmount | type: string | description: Amount formatted with currency symbol.  | read-only: true 
                 - name: _createdDate | type: Date | description: Date and time the capture was initiated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.  
                 - name: failureDetails | type: AuthorizationActionFailureDetails | description: In case of status is FAILED may contain failure details  
                    - name: failureCode | type: string | description:   | validation: maxLength 100
              - name: void | type: AuthorizationVoid | description: Void associated with payment  
                 - name: status | type: AuthorizationVoidStatus | description: Status of this void action  
                         - enum:
                         -     PENDING: Void operation still in progress.
                         -     SUCCEEDED: Void operation succeeded.
                         -     FAILED: Void operation failed.
                 - name: voidedDate | type: Date | description: Date and time the void was initiated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.  
                 - name: failureDetails | type: AuthorizationActionFailureDetails | description: In case of status is FAILED may contain failure details  
                 - name: reason | type: Reason | description: Reason of void action  
                         - enum:
                         -     MANUAL: Authorization was voided by user.
                         -     SCHEDULED: Authorization passed execution date.
              - name: scheduledAction | type: ScheduledAction | description: Scheduled action for this transaction  
                 - name: actionType | type: ActionType | description: Type of the action.  
                         - enum: VOID, CAPTURE
                 - name: executionDate | type: Date | description: The date and time of the action.  
           - name: chargebacks | type: array<Chargeback> | description: Record of chargebacks made by the buyer.  | validation: maxItems 6
              - name: _id | type: string | description: Chargeback GUID.  | read-only: true | validation: format GUID, immutable
              - name: _createdDate | type: Date | description: Date and time the chargeback was created in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. Defaults to current time when not provided.  | read-only: true | validation: immutable
              - name: _updatedDate | type: Date | description: Date and time the chargeback was updated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. Defaults to current time when not provided.  | read-only: true 
              - name: amount | type: Price | description: Amount.  | read-only: true | validation: immutable
              - name: reversalAmount | type: Price | description: Reversal amount. Present only when status is REVERSED.  | read-only: true 
              - name: status | type: ChargebackStatus | description: Status.  Default: `"APPROVED"`.  
                     - enum:
                     -     APPROVED: Chargeback was approved.
                     -     REVERSED: Chargeback was reversed.
              - name: externalId | type: string | description: External chargeback GUID.  | read-only: true | validation: format GUID, immutable
           - name: platformFee | type: Price | description: Platform fee amount associated with this payment.  
           - name: paymentMethodName | type: PaymentMethodName | description: Payment method with buyer and optional owner translations. Non-exhaustive list of supported values: + `CreditCard`, `Alipay`, `AstropayCash`, `AstropayDBT`, `AstropayMBT`, `Bitcoin`, `BitPay`, `Cash`, `ConvenienceStore`, `EPay`, `Fake`, `Giropay`, `IDeal`, `InPerson`, `Klarna`, `MercadoPago`, `Netpay`, `NordeaSolo`, `Offline`, `PagSeguro`, `PayEasy`, `PayPal`, `Paysafecard`, `Paysafecash`, `PointOfSale`, `Poli`, `Privat24`, `Przelewy24`, `RapidTransfer`, `Sepa`, `Skrill`, `Sofort`, `Trustly`, `Neteller`, `Unionpay`, `UniPay`, `Yandex`  
              - name: buyerLanguageName | type: string | description: Translated payment method name in buyer language.  | validation: maxLength 150
              - name: siteLanguageName | type: string | description: Translated payment method name in site owner language.  | validation: maxLength 150
              - name: userDefinedName | type: UserDefinedPaymentMethodName | description: User-provided payment method name.  When set, takes precedence over `buyerLanguageName` and `siteLanguageName`.  
                 - ONE-OF: 
                    - name: predefined | type: PredefinedPaymentMethod | description: Predefined payment method.  
                             - enum:
                             -     CASH: Cash payment.
                             -     BANK_TRANSFER: Bank transfer.
                             -     CHECK: Payment by check.
                    - name: custom | type: string | description: Custom payment method name provided by user.  For example, `"Wire transfer"`, `"Money order"`, `"Venmo"` or any other custom name.  | validation: minLength 1, maxLength 150
        - name: giftcardPaymentDetails | type: GiftCardPaymentDetails | description: Gift card payment details.  
           - name: giftCardPaymentId | type: string | description: Gift card payment GUID.  | validation: maxLength 100
           - name: appId | type: string | description: GUID of the app that created the gift card.  | validation: format GUID
           - name: obfuscatedCode | type: string | description: Gift card code with all but the last four characters masked. For example, `************QXY1`.  | validation: maxLength 30, immutable
        - name: membershipPaymentDetails | type: MembershipPaymentDetails | description: Membership payment details.  
           - name: membershipId | type: string | description: Membership GUID.  | validation: maxLength 200
           - name: lineItemId | type: string | description: GUID of the line item this membership applies to.  | validation: minLength 1, maxLength 100
           - name: name | type: MembershipName | description: Membership name.  
              - name: original | type: string | description: Membership name.  | validation: maxLength 100
              - name: translated | type: string | description: Translated membership name. Defaults to `original` when not provided.  | validation: maxLength 100
           - name: externalTransactionId | type: string | description: The transaction GUID in the membership system. Can be used to void the transaction.  | validation: minLength 1, maxLength 100
           - name: providerAppId | type: string | description: GUID of the application providing this payment option.  | validation: format GUID
           - name: futureMembership | type: FutureMembershipDetails | description: Details of a membership that does not yet exist, allowing the payment to be held before the membership is created.  
              - name: lineItemId | type: string | description: GUID of the plan line item in the order from which the membership will be created.  | validation: format GUID
              - name: benefitId | type: string | description: GUID of the benefit the future membership will grant.  | validation: maxLength 200
     - name: _id | type: string | description: Payment GUID.  | read-only: true | validation: format GUID
     - name: _createdDate | type: Date | description: Date and time the payment was created in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format. Defaults to current time when not provided.  
     - name: _updatedDate | type: Date | description: Date and time the payment was last updated in [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations) format.  | read-only: true 
     - name: amount | type: Price | description: Payment amount.  
     - name: refundDisabled | type: boolean | description: Whether refunds for this payment are disabled. + `true`: This payment is not refundable. + `false`: This payment may be refunded. However, this ultimately depends on the payment provider.  
     - name: supportReceiptGeneration | type: boolean | description: Whether receipt generation is allowed for this payment. + `true`: This payment supports receipt generation. + `false`: This payment doesn't support receipt generation, or a receipt was already generated.  | read-only: true 
     - name: cashRounding | type: CashRoundingDetails | description: Details about cash rounding applied to this payment, when relevant.  
        - name: unroundedAmount | type: Price | description: Payment amount before cash rounding was applied. When provided, balance and status calculations use this value instead of `amount` to prevent false overpayment or underpayment due to rounding.  
        - name: roundingAdjustment | type: CashRounding | description: The difference between 'amount' and 'unroundedAmount' (amount minus unroundedAmount). A positive value indicates the price was rounded up; a negative value indicates a round-down.  | read-only: true 
           - name: amount | type: string | description: Amount, can be negative or positive.  | validation: decimalValue {"gte":"-1000000000000000","lte":"1000000000000000"}
           - name: formattedAmount | type: string | description: Amount formatted with currency symbol.  | read-only: true 
     - name: status | type: PaymentStatus | description: Overall payment status.  Gift card and membership payments support only `APPROVED`, `PENDING`, `CANCELED`, `DECLINED`, and `VOIDED`. The remaining values apply to regular payments.  
         - enum:
         -     APPROVED: Payment was charged successfully.
         -     PENDING: Payment is being processed and hasn't been confirmed yet.
         -     PENDING_MERCHANT: Payment is awaiting confirmation. For an offline payment, the merchant must confirm they received it. For an online payment, the payment provider hasn't confirmed it, which typically means the merchant's provider account setup isn't complete.
         -     CANCELED: Payment was canceled before it was charged.
         -     DECLINED: Payment was declined by the payment provider.
         -     REFUNDED: Payment was fully refunded.
         -     PARTIALLY_REFUNDED: Part of the payment amount was refunded.
         -     AUTHORIZED: Funds are held on the buyer's payment method but haven't been captured. Capture them with [Capture Authorized Payments](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/order-billing/capture-authorized-payments.md) or release them with [Void Authorized Payments](https://dev.wix.com/docs/api-reference/business-solutions/e-commerce/orders/order-billing/void-authorized-payments.md). An authorized payment can't be refunded until it's captured.
         -     VOIDED: Payment was voided, releasing whatever it held or consumed: an authorization on the buyer's payment method, a gift card balance, or membership credits.  Gift card and membership payments don't support partial refunds, so a full refund of one is reported as `VOIDED` rather than `REFUNDED`.
     - name: chargeCorrelationId | type: string | description: GUID linking this payment to the charge request that created it. Matches the `idempotencyKey` sent in the Charge Order request.  | validation: format GUID

 Possible Errors:
   HTTP Code: 404 | Status Code: NOT_FOUND | Application Code: ORDER_NOT_FOUND | Description: Order was not found
   HTTP Code: 428 | Status Code: FAILED_PRECONDITION | Application Code: MEMBERSHIP_NOT_ELIGIBLE | Description: Membership eligibility check failed.


```

### Examples

### Charge Memberships
Charge an order using memberships.

```javascript
import { orderBilling } from "@wix/ecom";

async function chargeMemberships() {
  const response = await orderBilling.chargeMemberships(
    "c2f808cb-f9ee-4b27-9b05-d9c2b73a297f",
    {
      memberships: [
        {
          lineItemId: "00000000-0000-0000-0000-000000000001",
          membershipIdentifier: {
            existingMembership: {
              appId: "1522827f-c56c-a5c9-2ac9-00f9e6ae12d3",
              membershipId: "E7aZarYzwvhnG3IKcri09MIQS12j6VGzL3E9YqIaADsC4w1pLKcVFNRX1RTPVb3oR8tEsyJE49EwYtsa8Bb3Nku0EkUgPaHZYcO",
            },
          },
        },
        {
          lineItemId: "00000000-0000-0000-0000-000000000002",
          membershipIdentifier: {
            existingMembership: {
              appId: "1522827f-c56c-a5c9-2ac9-00f9e6ae12d3",
              membershipId: "E7VlJsGgtb4pg3Fb4QL3XrjIiJB87ufdyTyyuaNAAhxGPYhyzGLSYmkmDfFEDF0st5UaZpmkstmmnfEq3ynXSdS9IqMvcLuDD8A",
            },
          },
        },
      ],
      memberId: "aab64a42-4a04-4e6a-bb60-346acc5a3d47",
    },
  );
  return response;
}

/* Promise resolves to:
 * {
 *   "payments": [
 *     {
 *       "membershipPaymentDetails": {
 *         "membershipId": "E7aZarYzwvhnG3IKcri09MIQS12j6VGzL3E9YqIaADsC4w1pLKcVFNRX1RTPVb3oR8tEsyJE49EwYtsa8Bb3Nku0EkUgPaHZYcO",
 *         "lineItemId": "00000000-0000-0000-0000-000000000001",
 *         "status": "CHARGE_PENDING",
 *         "name": { "original": "Silver Membership" },
 *         "voided": false,
 *         "providerAppId": "1522827f-c56c-a5c9-2ac9-00f9e6ae12d3"
 *       },
 *       "refundDisabled": false,
 *       "status": "PENDING"
 *     },
 *     {
 *       "membershipPaymentDetails": {
 *         "membershipId": "E7VlJsGgtb4pg3Fb4QL3XrjIiJB87ufdyTyyuaNAAhxGPYhyzGLSYmkmDfFEDF0st5UaZpmkstmmnfEq3ynXSdS9IqMvcLuDD8A",
 *         "lineItemId": "00000000-0000-0000-0000-000000000002",
 *         "status": "CHARGE_PENDING",
 *         "name": { "original": "Gold Membership" },
 *         "voided": false,
 *         "providerAppId": "1522827f-c56c-a5c9-2ac9-00f9e6ae12d3"
 *       },
 *       "refundDisabled": false,
 *       "status": "PENDING"
 *     }
 *   ]
 * }
 */

```

### chargeMemberships (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 { orderBilling } from '@wix/ecom';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed

const myWixClient = createClient ({
  modules: { orderBilling },
  // Include the auth strategy and host as relevant
});


async function chargeMemberships(orderId,options) {
  const response = await myWixClient.orderBilling.chargeMemberships(orderId,options);
};
```

---