Skip to main content
POST
/
cart
/
{cartId}
/
purchase
JavaScript
import HenrySDK from '@henrylabs/sdk';

const client = new HenrySDK({
  apiKey: process.env['HENRY_SDK_API_KEY'], // This is the default and can be omitted
});

const response = await client.cart.checkout.purchase('crt_sa2aEsCz9PRM', {
  buyer: {
    name: {
      firstName: 'John',
      middleName: 'A.',
      lastName: 'Doe',
    },
    email: 'johnadoe@example.com',
    phone: '+1234567890',
    shippingAddress: {
      line1: '123 Main St',
      line2: 'Apt 4B',
      city: 'Anytown',
      province: 'CA',
      postalCode: '12345',
      countryCode: 'US',
    },
    card: {
      nameOnCard: {
        firstName: 'John',
        middleName: 'A.',
        lastName: 'Doe',
      },
      details: { cardToken: 'card_live_SimDpKU9cmU7tvdUXHzOeLudtgfadQVnbof' },
      billingAddress: {
        line1: '123 Main St',
        line2: 'Apt 4B',
        city: 'Anytown',
        province: 'CA',
        postalCode: '12345',
        countryCode: 'US',
      },
    },
  },
  mode: 'async',
});

console.log(response.details);
{
  "refId": "<string>",
  "status": "pending",
  "products": [
    {
      "status": "pending",
      "link": "<string>",
      "quantity": 123,
      "merchant": "<string>",
      "host": "<string>",
      "selectedOptions": [
        "<string>"
      ],
      "selectedShipping": {
        "id": "<string>",
        "value": "<string>"
      }
    }
  ],
  "details": {
    "hasAccount": true,
    "name": {
      "firstName": "<string>",
      "lastName": "<string>",
      "middleName": "<string>"
    },
    "card": {
      "nameOnCard": {
        "firstName": "<string>",
        "lastName": "<string>",
        "middleName": "<string>"
      },
      "details": {},
      "billingAddress": {
        "line1": "<string>",
        "city": "<string>",
        "province": "<string>",
        "postalCode": "<string>",
        "countryCode": "<string>",
        "name": {
          "firstName": "<string>",
          "lastName": "<string>",
          "middleName": "<string>"
        },
        "email": "jsmith@example.com",
        "phone": {
          "countryCode": "<string>",
          "nationalNumber": "<string>",
          "e164": "<string>",
          "country": "<string>"
        },
        "line2": "<string>"
      }
    },
    "email": "<string>",
    "phone": {
      "countryCode": "<string>",
      "nationalNumber": "<string>",
      "e164": "<string>",
      "country": "<string>"
    },
    "shippingAddress": {
      "line1": "<string>",
      "city": "<string>",
      "province": "<string>",
      "postalCode": "<string>",
      "countryCode": "<string>",
      "name": {
        "firstName": "<string>",
        "lastName": "<string>",
        "middleName": "<string>"
      },
      "email": "jsmith@example.com",
      "phone": {
        "countryCode": "<string>",
        "nationalNumber": "<string>",
        "e164": "<string>",
        "country": "<string>"
      },
      "line2": "<string>"
    },
    "settings": {
      "collectEmail": true,
      "collectAddress": true,
      "collectPhone": true
    }
  },
  "result": {
    "items": [
      {
        "productLink": "<string>",
        "confirmationNumber": "<string>",
        "costs": {
          "total": {
            "value": 123,
            "currency": "USD"
          },
          "subtotal": {
            "value": 123,
            "currency": "USD"
          },
          "tax": {
            "value": 123,
            "currency": "USD"
          },
          "shipping": {
            "value": 123,
            "currency": "USD"
          },
          "discount": {
            "value": 123,
            "currency": "USD"
          }
        },
        "shipping": {
          "id": "<string>",
          "name": "<string>",
          "cost": {
            "value": 123,
            "currency": "USD"
          },
          "timeEstimate": "<string>",
          "minDate": "<string>",
          "maxDate": "<string>"
        },
        "appliedCoupon": {
          "code": "<string>",
          "savedAmount": {
            "value": 123,
            "currency": "USD"
          }
        },
        "metadata": {}
      }
    ],
    "costs": {
      "subtotal": {
        "value": 123,
        "currency": "USD"
      },
      "commissionFee": {
        "value": 123,
        "currency": "USD"
      },
      "total": {
        "value": 123,
        "currency": "USD"
      }
    }
  },
  "error": {}
}

Authorizations

x-api-key
string
header
required

Path Parameters

cartId
string
required

Unique identifier for the cart

Example:

"crt_sa2aEsCz9PRM"

Body

application/json
buyer
object
required
mode
enum<string>

Response mode. Use sync to wait up to 30 seconds for the backing worker flow to complete.

Available options:
async,
sync
Example:

"async"

overrideProducts
object

Override quantity for a specific product URL

settings
object

Settings for what information to collect

metadata
object

Additional metadata for the request

Response

Cart purchase queued successfully, use refId to check status and retrieve results

refId
string
required
Pattern: ^[a-zA-Z]{3}-ref_[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[0-9a-f]{4}$
status
enum<string>
required
Available options:
pending,
processing,
complete,
cancelled
products
object[]
required
details
object
required
result
object
error
object