TABLE OF CONTENTS



Overview


The ACME B2B Checkout API can be used to place an Order and create a Membership in ACME. 


The Checkout API call is made up of a few different parts:

  1. The Shopping Cart - This contains information about the items that will be purchased in the order and, if it’s a membership, the cardholder details.

  2. Billing Contact Details - The Billing Contact represents who paid for the order, which is especially important if the person paying is different than the Order Contact. For credit card payments, the billing information must match the credit card used for verification with the banks.

  3. Order Contact Details - Use these fields to send details on the Order Contact. If the item in the cart is a membership, Order Contact fields are optional. If you do not send Order Contact details, then ACME will set the Primary Cardholder’s Customer as the Order Contact for membership purchases.

  4. Payment Details - This is where you specify the payment method, order notes, etc. 





Building the Shopping Cart Fields


The Shopping Cart is where you specify the items in the order. If a membership is in the cart, it is also where you specify the cardholders.


For membership purchases, the Item Type is key, as this defines what lifecycle action is being performed. 

For more information, please refer to our Knowledge Base Articles: 


Membership Item Type - Available Values:

  • MembershipPurchase
  • MembershipRenewal
  • MembershipUpgrade
  • MembershipDowngrade
  • MembershipCancel
  • MembershipPostTermRenewal
  • MembershipRejoin
  • MembershipRenewalUpgrade
  • MembershipPostTermRenewalUpgrade
  • MembershipRejoinUpgrade
  • MembershipPostTermRenewalDowngrade
  • MembershipRejoinDowngrade
  • MembershipRenewalDowngrade



Field Name

Description

Where to get it

Type

Required?

itemType

For membership sales, this will be the lifecycle action. 

See documentation on Membership Eligible Options for more information on how to get a valid itemType value

String


Available values:

See list above

Yes

Quantity


How many of the item. For membership sales this will always be 1.



Number


Yes


membershipInfo

.membershipId

ACME Membership ID

See section below “Get Required IDs”

String

Yes, for all lifecycles other than “MembershipPurchase”

membershipInfo
.externalId
The External ID of the Membership (i.e. the System ID from an external system).
StringNo
membershipInfo
.externalMembershipId
External Membership Number
StringNo

membershipInfo

.membershipCategoryId

The ID of the Membership Level that is being purchased.

See section below “Get Required IDs”

String

Yes

membershipInfo

.membershipOfferingId

The ID of the Membership Offering that is being purchased.

See section below “Get Required IDs”

String

Yes

membershipInfo

.pricePointId

The ID of the price point that is configured in ACME on the Membership Level/Offering.

See section below “Get Required IDs”

String

Yes

membershipInfo

.isGift

Specify whether the membership being purchased is a gift or not.

True/False

Boolean


Defaults to false so do not need to include if membership is not a gift


membershipInfo

.isAutorenew

Specify whether the membership being purchased is opting into Auto Renew or not.


Boolean



Only applicable/required when the membership offering is set to “Auto Renew: Optional”


If the offering is set to Auto Renew "Off” or "Required", then this flag will be ignored if sent in the payload.

membershipCards

.id

ACME Membership Card ID

See section below “Get Required IDs”

String

Yes, for all lifecycles other than “MembershipPurchase” in which you want to update an existing card. If you are adding a new card the ID should not be included for the card.

membershipCards

.externalId

The External ID of the Membership Card (i.e. the System ID from an external system)

StringNo

membershipCards

.constituentImportId

If the person who wants to be associated to the membership card already exists as a customer in ACME, then include their constituent import ID to tie the membership card to their existing customer record.


NOTE: ACME will update the customer record with the information included in the card fields. 

The field “External Customer Import ID” on their ACME Customer Record


See section below “Get Required IDs”

String


membershipCards

.customerExternalId

The External ID of the Customer (i.e. the System ID from an external system)

StringNo

membershipCards

.cardType

Specify whether the card is “primary” or “secondary”. There can only be 1 primary per membership and the number of secondaries is dictated by the membership configuration within ACME.


String

Yes

membershipCards

.firstName

The cardholder’s first name


String

Yes

membershipCards

.middleName

The cardholder’s middle name


String


membershipCards

.lastName

The cardholder’s last name


String

Yes

membershipCards

.name

The name on the membership card. If not supplied, ACME will concatenate firstName + middleName + lastName.


String


membershipCards

.email

The member’s email. 


String

One of phone, email and address is required for a primary member.

membershipCards

.phoneNumber

The member’s phone number. 


String

One of phone, email and address is required for a primary member.

membershipCards

.streetAddress1

The member’s street address 1. 


String

One of phone, email and address is required for a primary member.

membershipCards

.streetAddress2

The member’s street address 2. 


String

One of phone, email and address is required for a primary member.

membershipCards

.city

The member’s city. 


String

One of phone, email and address is required for a primary member.

membershipCards

.state

The member’s state. 


String

One of phone, email and address is required for a primary member.


This should be the full name of the state, such as "California".

membershipCards

.zipCode

The member’s zip. 


String

One of phone, email and address is required for a primary member.

membershipCards

.country

The member’s country.


String


For the US, we recommend always sending country as “United States”

One of phone, email and address is required for a primary member.



Billing Contact Fields


Billing Contact fields are optional unless the payment method is ‘Credit Card’. For credit card verification and the best rates on processing fees, billing ZIP/Postal code is required, and billing full address is highly recommended. These values must match the billing information on the credit card. 

  • When sending both Billing Contact and Order Contact fields

    • If they exactly match, the same customer will be set as both the Billing Contact and the Order Contact.

    • If they do not match, ACME will set the Order Contact as the customer on the order and record the Billing Contact details on the order (no customer will be created for Billing in this case).

  • If the Billing Contact fields are omitted, then ACME will set the Order Contact as the Billing Contact (Note: When the payment method is credit card, we recommend always explicitly sending the Billing Contact fields.)



Field Name

Type

Description

billingFirstName

String 


billingLastName

String 


billingEmail

String 

If you wish to send an Order Confirmation email to the customer, then the billing email field is required since that is the email the confirmation is sent to.

billingPhone

String 


billingAddress1

String 


billingAddress2

String 


billingCity

String 


billingState

String 

This should be the full name of the state, such as "California".

billingZipCode

String 


billingCountry

String


For the US, we recommend always sending country as “United States”


noEmail

boolean

Specify whether or not the Order Confirmation email is sent to the billingEmail.


This defaults to “noEmail”: “false”, thus sending the Order Confirmation as long as there is a value for billingEmail.


Set to “noEmail”: “true” in order to not send the Order Confirmation email.


 "billingFirstName": "Jim",
 "billingLastName": "Lee",
 "billingEmail": "jimlee@email.com",
 "billingPhoneNumber": "1234567892",
 "billingAddress1": "123 F Street",
 "billingAddress2":"",
 "billingCity": "Reno",
 "billingState": "Nevada",
 "billingZipCode": "89521",
 "billingCountry": "United States",
 "noEmail":"true"


Order Contact Fields


In order for ACME to make a customer record for an Order Contact, you must send First Name, Last Name, and one of: Email, Phone, or Address.


Order Contact fields are optional. If no Order Contact is sent and:

  • The items in the cart are non-membership, then the ACME order will be a “walk in” and will not have a customer associated with it. 

  • The items in the cart are membership, then ACME will set the Primary Cardholder’s Customer as the Order Contact.


Field Name

Type

contactFirstName

String 

contactLastName

String 

email

String 

phone

String 

streetAddress1

String 

streetAddress2

String 

city

String 

state

String


This should be the full name of the state, such as "California".

zipCode

String 

country

String


For the US, we recommend always sending country as “United States” 


  "contactFirstName":"Margot",
  "contactLastName":"Travers",
  "email":"margottravers@gmail.com",
  "phone":"2223334444",
  "streetAddress1":"787 Westmont Lane",
  "streetAddress2":"",
  "city":"Reno",
  "state":"NV",
  "zipCode":"89521",
  "country":"United States"


Payment Method Fields


The Payment Method fields allow you to specify the method of payment and optional order notes. 



Field Name

Type

Description

paymentMethod

String 


Available values:

CreditCard

Cash

Check

Voucher

Other

The method used to pay.

paymentId

String 

Payment ID if paying by Check, Voucher or Other

manualEntryCardNumber

String 

CC Number

expDate

String 

CC Expiration Date

cvc

String 

CC CVC

notes

String

Order Notes



If the payment method is Check, Voucher, or Other, then “paymentMethod” is the only required field. Optionally send “paymentId” to record the check number, voucher number, or other payment ID (e.g. confirmation number for a wire transfer). We do recommend always sending the “paymentId”. 

"paymentMethod" : "Check",
"paymentId":"454"


If the payment method is Credit Card, then the following fields are required: 


If the payment method is credit card, then the Billing Contact fields must match the billing information on the credit card. Even though ACME will copy the Order Contact fields into the Billing Contact if you do not send Billing Contact fields (in the case where Order Contact=Billing Contact), we highly recommend always explicitly sending the Billing Contact fields if the payment method is credit card.


"paymentMethod" : "CreditCard",
"manualEntryCardNumber": "4333333333333333",
"expDate": "1124",
"cvc": "222"



Get Required IDs


The Checkout API shopping cart requires a few IDs be sent when purchasing a membership: Category ID, Offering ID, and Price Point ID. 


If the lifecycle action is any other than ‘New’, you also must send Membership ID and Membership Card ID (if you wish to use the same membership card on the new membership version). 


If you want to associate an existing ACME customer to a membership card, then you must send their Constituent Import ID.


Get Category IDOffering ID, and Price Point ID


Run the following API call to obtain Category ID, Offering ID, and Price Point ID



GET /v2/b2b/membership/levels?salesChannels={salesChannels}&isPublished=true&membershipLevelGroup=individualAndFamily


Where:

{salesChannel} is the salesChannel that the membership is allowed to be sold on. Most likely this will be “online”. Sales Channel options include:

  • online (ACME B2C site or API site)
  • pointOfSale (ACME POS)
  • insideSalesIndividual (ACME Backoffice)
  • salesforce 
  • kiosk

If you want to send multiple sales channels in the query then you can do so and comma separate them. For example: 


GET /v2/b2b/membership/levels?salesChannels=online,insideSalesIndividual&isPublished=true&membershipLevelGroup=individualAndFamily


The payload returns a lot of information about each level that is published in ACME. Consult this to see where the required values display:


{
           "id": "61f058acd7d4bd414417dfaa", < —---- CATEGORY ID
           "name": "Family",
           "rules": {
               "numberOfCardHolders": 4,
               "canGift": true,
               "startBeginningOfMonth": false,
               "expireEndOfMonth": false
           },
           "benefits": [
               {
                   "description": "1 Guest pass per visit"
               }
           ],
           "offerings": [
               {
                   "id": "bbd04a2d6aa7400a90a7f39cceeda52b", < —---- OFFERING ID
                   "name": "Standard",
                   "subtitle": "",
                   "description": "",
                   "duration": 12,
                   "benefits": [],
                   "rules": {
                       "numberOfCardHolders": 0,
                       "canGift": false,
                       "startBeginningOfMonth": false,
                       "expireEndOfMonth": false
                   },
                   "priceLists": [
                       {
                           "id": "61f05875d7d4bd414417df9f",
                           "name": "Standard",
                           "description": "",
                           "prices": [
                               {
                                   "personType": {
                                       "id": "5812348df71d1a4b23516c04", < —- PRICE POINT ID
                                       "name": "Child",
                                       "description": "Child",
                                       "active": true,
                                       "type": "Membership",
                                       "displayOrder": 0
                                   },
                                   "price": "350.00",
                                   "primePrice": "0.00"


Get Membership ID, Membership Card ID(s), and Constituent Import ID


If you already have the Customer ID


GET /v2/b2b/customers/{id}?includeAssociatedMemberships=true


Where:

{id} = the ACME Customer ID (aka database ID)


Example Output: 


{
   "id": 12982048,
   "customerSource": "acme",
   "customerId": "223095156",
   "externalCustomerImportId": "ACME223095156",
   "email": "fedelee@email.com",
   "firstName": "Fede",
   "lastName": "Lee",
   "phoneNumber": "1234567892",
   "deceased": false,
   "solicitationCodes": [],
   "address": [
       {
           "id": 33893169,
           "streetAddress1": "123 X Street",
           "city": "Reno",
           "state": "Nevada",
           "zipCode": "89521",
           "country": "United States",
           "type": "primary",
           "isPrimary": true,
           "version": 0,
           "obfuscated": false
       }
   ],
   "attributes": [],
   "version": 0,
   "household": {
       "id": 30051938,
       "name": "Lee Household",
       "externalSource": "other"
   },
   "memberships": [
       {
           "id": 6464343, < —- MEMBERSHIP ID 
           "importId": "ACME399157150",
           "externalMembershipId": "399157150",
           "membershipJoinedDate": "2024-01-11T00:00:00-08:00",
           "membershipStartDate": "2024-01-11T00:00:00-08:00",
           "membershipExpirationDate": "2025-01-31T23:59:59-08:00",
           "membershipStanding": "active",
           "cardholders": [
               {
                   "id": 20988622, < —- MEMBERSHIP CARD ID 
                   "membershipId": 6464343,
                   "constituentImportId": "ACME223095156", < —- CONSTITUENT IMPORT ID 
                   "cardImportId": "ACME327994041",
                   "cardType": "primary",
                   "name": "Fede Lee",
                   "barcode": "327994041",
                   "acmeBarcode": "327994041",
                   "email": "fedelee@email.com",
                   "firstName": "Fede",
                   "lastName": "Lee",
                   "phoneNumber": "1234567892",
                   "streetAddress1": "123 X Street",
                   "city": "Reno",
                   "state": "Nevada",
                   "zipCode": "89521",
                   "country": "United States",
                   "deceased": "no",
                   "primaryCard": "yes",
                   "solicitationCodes": "",
                   "startDate": "2024-01-11T00:00:00-08:00",
                   "expirationDate": "2025-01-31T23:59:59-08:00",
                   "cardStatus": "active",
                   "printCount": 0,
                   "printStatus": "notPrinted",
                   "acmeCustomerNumber": "223095156",
                   "addressId": 33893169,
                   "excludeCardOnMemberCreation": false,
                   "customerId": 12982048,
                   "ignoreUpdates": false
               }
           ],
           "membershipCategory": "Family",
           "categoryId": "61f058acd7d4bd414417dfaa",
           "acmeMembershipNumber": "399157150",
           "isGift": false,
           "auxiliaryMembership": false,
           "offeringName": "Standard",
           "updatedOn": "2024-01-11T09:11:58-08:00",
           "updatedBy": 340,
           "offeringId": "bbd04a2d6aa7400a90a7f39cceeda52b",
           "pricePointId": "5812348df71d1a4b23516c04"
       }
   ],
   "obfuscated": false
}


If you do not have the Customer ID


GET /v2/b2b/customers/advancedsearch?pageSize=50&page=1&sortField=customerId&sortDirection=asc&firstName={firstName}&lastName={lastName}&includeAssociatedMemberships=true


Where:
{firstName} = first name of the Customer you are searching for 

{lastName} = last name of the Customer you are searching for 


Example Output:


{
   "list": [
       {
           "id": 12982048,
           "customerSource": "acme",
           "customerId": "223095156",
           "externalCustomerImportId": "ACME223095156", < —- CONSTITUENT IMPORT ID 
           "email": "fedelee@email.com",
           "firstName": "Fede",
           "lastName": "Lee",
           "phoneNumber": "1234567892",
           "deceased": false,
           "solicitationCodes": [],
           "version": 0,
           "memberships": [
               {
                   "id": 6464343,  < —- MEMBERSHIP ID 
                   "importId": "ACME399157150",
                   "externalMembershipId": "399157150",
                   "membershipJoinedDate": "2024-01-11T00:00:00-08:00",
                   "membershipStartDate": "2024-01-11T00:00:00-08:00",
                   "membershipExpirationDate": "2025-01-31T23:59:59-08:00",
                   "membershipStanding": "active",
                   "cardholders": [
                       {
                           "id": 20988622, < —- MEMBERSHIP CARD ID 
                           "membershipId": 6464343,
                           "constituentImportId": "ACME223095156",
                           "cardImportId": "ACME327994041",
                           "cardType": "primary",
                           "name": "Fede Lee",
                           "barcode": "327994041",
                           "acmeBarcode": "327994041",
                           "email": "fedelee@email.com",
                           "firstName": "Fede",
                           "lastName": "Lee",
                           "phoneNumber": "1234567892",
                           "deceased": "no",
                           "primaryCard": "yes",
                           "solicitationCodes": "",
                           "startDate": "2024-01-11T00:00:00-08:00",
                           "expirationDate": "2025-01-31T23:59:59-08:00",
                           "cardStatus": "active",
                           "printCount": 0,
                           "printStatus": "notPrinted",
                           "acmeCustomerNumber": "223095156",
                           "excludeCardOnMemberCreation": false,
                           "customerId": 12982048,
                           "ignoreUpdates": false
                       }
                   ],
                   "membershipCategory": "Family",
                   "categoryId": "61f058acd7d4bd414417dfaa",
                   "acmeMembershipNumber": "399157150",
                   "isGift": false,
                   "auxiliaryMembership": false,
                   "updatedOn": "2024-01-11T09:11:58-08:00",
                   "updatedBy": 340,
                   "offeringId": "bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId": "5812348df71d1a4b23516c04"
               }
           ],
           "obfuscated": false
       }
   ],
   "pagination": {
       "page": 1,
       "pageSize": 50,
       "sortDirection": "asc",
       "sortField": "customerId",
       "count": 1
   }
}


Auto Renew Memberships

  • Auto Renew memberships must be processed with a credit card, even if there is no payment due, in order to generate a secure token for future processing. 

  • Auto Renew memberships not paid with credit card will result in subscriptions with no payment method attached. 

  • Optional Auto Renew memberships require the flag membershipInfo.isAutorenew (see B2C Purchase New Membership). If the flag is not included, the default value is false.


Example Payloads:


1. Buy a new ACME membership where: Primary member is a brand new customer in ACME and the Order Contact, Billing Contact, and Primary Member are all the same person.


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"58123480969c6d59d976b8fa",
                   "externalMembershipId": "MemNum098765",
                   "membershipCards": [{
                       "cardType":"primary",
                       "firstName":"Tyler",
                       "lastName":"Lee",
                       "email":"tylerlee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States",
                       "customerExternalId": "CUST555555"
                   }]
               }
           }
       ]
   },
   "paymentMethod" : "Other",
   "paymentId": "123456",
   "notes" : "Order note 1/11/24: Customer expressed interest in learning more about  our Education programs."
}


Example response after sending the API call

{
    "orderNumber": "100200605",    
    "id": "44329249", 
    "customerId": 12982062, 
    "membershipId": 6464362,
    "contactFirstName": "Tyler",
    "contactLastName": "Lee",
    "email": "tylerlee@email.com",
    "phoneNumber": "1234567892",
    "address1": "123 F Street",
    "country": "United States",
    "city": "Reno",
    "state": "Nevada",
    "zipCode": "89521",
    "billingFirstName": "Tyler",
    "billingLastName": "Lee",
    "billingEmail": "tylerlee@email.com",
    "billingPhoneNumber": "1234567892",
    "billingAddress1": "123 F Street",
    "billingCountry": "United States",
    "billingCity": "Reno",
    "billingZipCode": "89521",
    "billingState": "Nevada",
    "discountedTotalAmount": "150.00",
    "totalAmount": "150.00",
    "discountedOriginalTotalAmount": "150.00",
    "originalTotalAmount": "150.00",
    "paidAmount": "150.00",
    "balanceAmount": "0.00",
    "refundAmount": "0.00",
    "saleChannel": "InsideSalesIndividual",
    "checkInStatus": "NotCheckedIn",
    "notes": "Order note 1/11/24: Customer expressed interest in learning more about our Education programs.",
    "creationDate": "2024-01-11T20:09:39-08:00",
    "orderItems": [
        {
            "itemType": "MembershipPurchase",
            "itemId2": "600bace713cb42b8a56c22833d37ccca",
            "itemName": "AR Optional",
            "pricePointId": "5cde1cd11f02166eca047b8b",
            "pricePointName": "Individual Member",
            "itemDetailId": "6464362",
            "parentItemId": "65586394",
            "comboTemplateType": "fixedPrice",
            "basicOriginalQuantity": 1,
            "originalQuantity": 1,
            "basicQuantity": 1,
            "quantity": 1,
            "unitPrice": "150.00",
            "discountedUnitPrice": "150.00",
            "discountedOriginalAmount": "150.00",
            "originalAmount": "150.00",
            "discountedAmount": "150.00",
            "amount": "150.00",
            "balanceAmount": "0.00",
            "itemTypeNg": "Event",
            "conversionStatus": "NoConversion",
            "itemId": "65586394"
        }
    ],
    "createdOn": "2024-01-11T20:09:39-08:00",
    "createdBy": "340",
    "updatedOn": "2024-01-11T20:09:39-08:00",
    "updatedBy": "340",
    "paymentDueDate": "2024-01-11T20:09:39-08:00",
    "tenantId": 107,
    "visitorId": "5779835",
    "legacy": false,
    "hideEventDate": false,
    "invoiceAfter": false,
    "paymentId": "123456",
    "obfuscated": false
}


2. Buy a new ACME membership where the primary member is already a customer in ACME. The Order Contact, Billing Contact, and Primary Member are all the same person.

  • This payload only includes the required fields for this use case. Refer to the sections above for additional fields you could include.
  • In this example, the primary member is already a customer in ACME so we are including their Customer Import ID as membershipCards.constituentImportId


If you send Constituent Import ID, ACME will update the customer record with the any new information included in the payload.


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"58123480969c6d59d976b8fa",
                   "membershipCards": [{
                       "constituentImportId":"123456",
                       "cardType":"primary",
                       "firstName":"Carla",
                       "lastName":"Lee",
                       "email":"carlalee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 G Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"


                   }]
               }
           }
       ]
   },
   "paymentMethod" : "Other",
   "paymentId": "123456"
}


3. Buy a new ACME membership where the Billing and Order Contact are the same person but different from the Primary Cardholder


We are not explicitly sending Billing Contact information here because ACME will copy the Order Contact information to the Billing Contact. This is only recommended if the payment method is not Credit Card.


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "saleChannel":"",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"58123480969c6d59d976b8fa",
                   "membershipCards": [{
                       "cardType":"primary",
                       "firstName":"Nadia",
                       "lastName":"Lee",
                       "name": "Nadia Lee",
                       "email":"nadialee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "streetAddress2":"Apt C",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"


                   }]
               }
           }
       ]
   },
   "contactFirstName":"Margot",
   "contactLastName":"Travers",
   "email":"margottravers@gmail.com",
   "phone":"2223334444",
   "streetAddress1":"787 Westmont Lane",
   "city":"Reno",
   "state":"NV",
   "zipCode":"89521",
   "country":"United States",
   "paymentMethod" : "Check",
   "paymentId":"545"
}



4. Buy a new ACME membership where Billing Contact, Order Contact, and Primary Cardholder are all a different person.


  • They do not want an Order Confirmation email to be sent so the variable noEmail: true is sent


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "saleChannel":"",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"58123480969c6d59d976b8fa",
                   "isGift":"false",
                   "isAutorenew":"false",
                   "membershipCards": [{
                       "cardType":"primary",
                       "firstName":"Kara",
                       "lastName":"Lee",
                       "name": "Kara Lee",
                       "email":"karalee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "streetAddress2":"Apt C",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"


                   }]
               }
           }
       ]
   },
   "billingFirstName": "Jim",
   "billingLastName": "Lee",
   "billingEmail": "jimlee@email.com",
   "billingPhoneNumber": "1234567892",
   "billingAddress1": "123 K Street",
   "billingCity": "Reno",
   "billingState": "Nevada",
   "billingZipCode": "89521",
   "billingCountry": "United States",
   "noEmail": "true",
   "contactFirstName":"Margot",
   "contactLastName":"Travers",
   "email":"margottravers@gmail.com",
   "phone":"2223334444",
   "streetAddress1":"787 Westmont Lane",
   "city":"Reno",
   "state":"NV",
   "zipCode":"89521",
   "country":"United States",
   "paymentMethod" : "Voucher",
   "paymentId":"123456"
}



5. Buy a membership with credit card as payment method


If the payment method is credit card, then the Billing Contact fields must match the billing information on the credit card. Even though ACME will copy the Order Contact fields into the Billing Contact if you do not send Billing Contact fields (in the case where Order Contact=Billing Contact), we highly recommend always explicitly sending the Billing Contact fields if the payment method is credit card.

In this example, the Primary Member, Order Contact, and Billing Contact are all separate people. The Order Confirmation email will go to the billingEmail.
{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"5812348df71d1a4b23516c04",
                   "membershipCards": [
                       {
                       "cardType":"primary",
                       "firstName":"Evan",
                       "lastName":"Lee",
                       "name": "Evan Lee",
                       "email":"evanlee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"


                   }]
               }
           }
       ]
   },
   "billingFirstName": "Robbie",
   "billingLastName": "Payer",
   "billingEmail": "robbiepayer@acmeticketing.com",
   "billingPhoneNumber": "1234567892",
   "billingAddress1": "123 G Street",
   "billingCity": "Reno",
   "billingState": "Nevada",
   "billingZipCode": "89521",
   "billingCountry": "United States",
   "contactFirstName":"Margot",
   "contactLastName":"Travers",
   "email":"margottravers@gmail.com",
   "phone":"2223334444",
   "streetAddress1":"787 Westmont Lane",
   "city":"Reno",
   "state":"NV",
   "zipCode":"89521",
   "country":"United States",
   "paymentMethod" : "CreditCard",
   "manualEntryCardNumber":"4333333333333333",
   "expDate":"1125",
   "cvc":"222"
}


In this example, the Primary Member, Order Contact, and Billing Contact are all the same person. We do not have to send the Order Contact details because ACME will copy the Primary Cardholder information to the Order Contact. We are explicitly sending the Billing Contact details because the payment method is credit card.


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"5812348df71d1a4b23516c04",
                   "membershipCards": [
                       {
                       "cardType":"primary",
                       "firstName":"Evan",
                       "lastName":"Lee",
                       "name": "Evan Lee",
                       "email":"evanlee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"


                   }]
               }
           }
       ]
   },
   "billingFirstName": "Evan",
   "billingLastName": "Lee",
   "billingEmail": "evanlee@email.com",
   "billingPhoneNumber": "1234567892",
   "billingAddress1": "123 F Street",
   "billingCity": "Reno",
   "billingState": "Nevada",
   "billingZipCode": "89521",
   "billingCountry": "United States",
   "paymentMethod" : "CreditCard",
   "manualEntryCardNumber":"4333333333333333",
   "expDate":"1125",
   "cvc":"222"
}


In this example, the Primary Member is one person and the Order Contact and Billing Contact are another person. We are sending the same customer information for both Order Contact and Billing Contact 

{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"5812348df71d1a4b23516c04",
                   "membershipCards": [
                       {
                       "cardType":"primary",
                       "firstName":"Evan",
                       "lastName":"Lee",
                       "name": "Evan Lee",
                       "email":"evanlee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"


                   }]
               }
           }
       ]
   },
   "billingFirstName": "Margot",
   "billingLastName": "Travers",
   "billingEmail": "margottravers@gmail.com",
   "billingPhoneNumber": "2223334444",
   "billingAddress1": "787 Westmont Lane",
   "billingCity": "Reno",
   "billingState": "Nevada",
   "billingZipCode": "89521",
   "billingCountry": "United States",
   "contactFirstName":"Margot",
   "contactLastName":"Travers",
   "email":"margottravers@gmail.com",
   "phone":"2223334444",
   "streetAddress1":"787 Westmont Lane",
   "city":"Reno",
   "state":"NV",
   "zipCode":"89521",
   "country":"United States",
   "paymentMethod" : "CreditCard",
   "manualEntryCardNumber":"4333333333333333",
   "expDate":"1125",
   "cvc":"222"
}

6. Member renews their ACME Membership

membershipInfo.membershipId = the ACME Membership ID for the member's current membership.

membershipInfo.membershipCards.Id = the ACME Membership Card ID for the member's card that already exists

membershipInfo.membershipCards.constituentImportId = the Customer Import ID for the Primary Member's Customer Record


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipRenewal",
               "membershipInfo": {
                   "membershipId": 6809972,
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"5812348df71d1a4b23516c04",
                   "membershipCards": [{
                       "id": 22421598,
                       "constituentImportId":"ACME284728871",
                       "cardType":"primary",
                       "firstName":"Jamie",
                       "lastName":"Hara",
                       "name": "Jamie Hara",
                       "email":"jamiehara@testing.com",
                       "phoneNumber":"3146558585",
                       "streetAddress1":"333 Westmont Lane"
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"


                   }]
               }
           }
       ]
   },
   "paymentMethod" : "Other",
   "paymentId": "123456"
}


7. Member upgrades their ACME membership


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipUpgrade",
               "membershipInfo": {
                   "membershipId": 6809975,
                   "membershipCategoryId":"581234f51f02162cee948842",
                   "membershipOfferingId":"18993d0d7bf24c61932ebbed487488c4",
                   "pricePointId":"58123480969c6d59d976b8fa",
                   "membershipCards": [{
                       "id": 22421600,
                       "constituentImportId":"ACME284728871",
                       "cardType":"primary",
                       "firstName":"Maren",
                       "lastName":"Calhoun",
                       "name": "Maren L Calhoun",
                       "email":"maren@calhoun.com",
                       "phoneNumber":"1112223333",
                       "streetAddress1":"123 C Street",
                       "streetAddress2":"",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"
                   }]
               }
           }
       ]
   },
   "paymentMethod" : "Voucher"
   "paymentId":"555"
}



8. Member upgrades their ACME membership and adds an additional cardholder 


The secondary card does not yet exist, so we are not sending a membershipCard.id. The customer associated to the secondary card also does not yet exist, so we are not sending membershipCard.constituentImportId for the secondary card.


The secondary cardholder will become a customer in ACME as long as First Name, Last Name, and one of: email, phone, or address is supplied.


In this example the secondary cardholder will become an ACME Customer:

{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipUpgrade",
               "membershipInfo": {
                   "membershipId": 6809975,
                   "membershipCategoryId":"581234f51f02162cee948842",
                   "membershipOfferingId":"18993d0d7bf24c61932ebbed487488c4",
                   "pricePointId":"58123480969c6d59d976b8fa",
                   "membershipCards": [
                       {
                       "id": 22421600,
                       "constituentImportId":"ACME284728871",
                       "cardType":"primary",
                       "firstName":"Maren",
                       "lastName":"Calhoun",
                       "name": "Maren L Calhoun",
                       "email":"maren@calhoun.com",
                       "phoneNumber":"1112223333",
                       "streetAddress1":"123 C Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"
                   },
                   {
                       "cardType":"secondary",
                       "firstName":"Kyle",
                       "lastName":"Calhoun",
                       "name": "Kyle Calhoun",
                       "email":"kyle@calhoun.com",
                       "phoneNumber":"1112223334",
                       "streetAddress1":"123 C Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"
                   }
                   ]
               }
           }
       ]
   },
   "paymentMethod" : "Voucher"
   "paymentId":"555"
}


In this example the secondary cardholder will not become an ACME Customer and will instead just be a "Name on Card" member: 


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipUpgrade",
               "membershipInfo": {
                   "membershipId": 6809975,
                   "membershipCategoryId":"581234f51f02162cee948842",
                   "membershipOfferingId":"18993d0d7bf24c61932ebbed487488c4",
                   "pricePointId":"58123480969c6d59d976b8fa",
                   "membershipCards": [
                       {
                       "id": 22421600,
                       "constituentImportId":"ACME284728871",
                       "cardType":"primary",
                       "firstName":"Maren",
                       "lastName":"Calhoun",
                       "name": "Maren L Calhoun",
                       "email":"maren@calhoun.com",
                       "phoneNumber":"1112223333",
                       "streetAddress1":"123 C Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"
                   },
                   {
                       "cardType":"secondary",
                       "firstName":"Kyle",
                       "lastName":"Calhoun",
                       "name": "Kyle Calhoun"
                   }
                   ]
               }
           }
       ]
   },
   "paymentMethod" : "Other",
   "paymentId": "123456"
}


9. Purchase a new Auto Renew membership (Offering set to Auto Renew: Required)


membershipInfo.isAutorenew = true is not needed here since the Membership Offering is configured to be Auto Renew Required. Payment method must be Credit Card though.
{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"5812348df71d1a4b23516c04",
                   "membershipCards": [
                       {
                       "cardType":"primary",
                       "firstName":"Evan",
                       "lastName":"Lee",
                       "name": "Evan Lee",
                       "email":"evanlee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"
                   }]
               }
           }
       ]
   },
   "billingFirstName": "Evan",
   "billingLastName": "Lee",
   "billingEmail": "evanlee@email.com",
   "billingPhoneNumber": "1234567892",
   "billingAddress1": "123 F Street",
   "billingCity": "Reno",
   "billingState": "Nevada",
   "billingZipCode": "89521",
   "billingCountry": "United States",
   "paymentMethod" : "CreditCard",
   "manualEntryCardNumber":"4333333333333333",
   "expDate":"1125",
   "cvc":"222"
}


10. Purchase a new Auto Renew membership (Offering set to Auto Renew: Optional) and Opt In to Auto Renew 


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"5812348df71d1a4b23516c04",
                   "isAutorenew":"true",
                   "membershipCards": [
                       {
                       "cardType":"primary",
                       "firstName":"Evan",
                       "lastName":"Lee",
                       "name": "Evan Lee",
                       "email":"evanlee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"
                   }]
               }
           }
       ]
   },
   "billingFirstName": "Evan",
   "billingLastName": "Lee",
   "billingEmail": "evanlee@email.com",
   "billingPhoneNumber": "1234567892",
   "billingAddress1": "123 F Street",
   "billingCity": "Reno",
   "billingState": "Nevada",
   "billingZipCode": "89521",
   "billingCountry": "United States",
   "paymentMethod" : "CreditCard",
   "manualEntryCardNumber":"4333333333333333",
   "expDate":"1125",
   "cvc":"222"
}


11. Purchase a new membership (Offering set to Auto Renew: Optional) and Do NOT Opt In to Auto Renew 


Since the member is not opting in to Auto Renew, there are no requirements on which payment method to use.


{
   "shoppingCart": {
       "items": [
           {
               "quantity": 1,
               "itemType": "MembershipPurchase",
               "membershipInfo": {
                   "membershipCategoryId":"61f058acd7d4bd414417dfaa",
                   "membershipOfferingId":"bbd04a2d6aa7400a90a7f39cceeda52b",
                   "pricePointId":"5812348df71d1a4b23516c04",
                   "isAutorenew":"false",
                   "membershipCards": [
                       {
                       "cardType":"primary",
                       "firstName":"Evan",
                       "lastName":"Lee",
                       "name": "Evan Lee",
                       "email":"evanlee@email.com",
                       "phoneNumber":"1234567892",
                       "streetAddress1":"123 F Street",
                       "city":"Reno",
                       "state":"Nevada",
                       "zipCode":"89521",
                       "country":"United States"
                   }]
               }
           }
       ]
   },
   "paymentMethod" : "Check",
   "paymentId":"455"
}