Estimates the subtotal and total for current site visitor’s cart. Totals include tax and are based on the selected carrier service, shipping address, and billing information.
The estimateTotals()
function returns a Promise that resolves when the estimated totals are generated.
Note: Not passing any options
properties will only estimate the cart items price totals.
function estimateTotals(
_id: string,
options: EstimateTotalsOptions,
): Promise<EstimateTotalsResponse>;
Cart ID.
Total estimation options.
/*****************************************
* Backend code - my-backend-file.web.js *
****************************************/
import { Permissions, webMethod } from "wix-web-module";
import { cart } from "wix-ecom-backend";
export const myEstimateTotalsFunction = webMethod(
Permissions.Anyone,
async (cartId, estimateOptions) => {
try {
const estimatedCartTotals = await cart.estimateTotals(
cartId,
estimateOptions,
);
console.log("Success! Cart totals estimated:", estimatedCartTotals);
return estimatedCartTotals;
} catch (error) {
console.error(error);
// Handle the error
}
},
);
/*************
* Page code *
************/
import { myEstimateTotalsFunction } from "backend/my-backend-file.web";
// Sample cartId:
const cartId = "96a61a4b-6b61-47d1-a039-0213a8230ccd";
// Sample options object:
const estimateOptions = {
selectedShippingOption: {
code: "standard_us_shipping",
},
shippingAddress: {
addressLine1: "235 West 23rd Street",
addressLine2: "3rd floor",
city: "New York",
country: "US",
postalCode: "10011",
streetAddress: {
name: "West 23rd Street",
number: "235",
},
subdivision: "US-NY",
},
billingAddress: {
addressLine1: "235 West 23rd Street",
addressLine2: "3rd floor",
city: "New York",
country: "US",
postalCode: "10011",
streetAddress: {
name: "West 23rd Street",
number: "235",
},
subdivision: "US-NY",
},
};
myEstimateTotalsFunction(cartId, estimateOptions)
.then((estimatedCartTotals) => {
const formattedShippingPrice =
estimatedCartTotals.priceSummary.shipping.formattedAmount;
const estimatedCartTotal =
estimatedCartTotals.priceSummary.total.formattedAmount;
console.log("Success! Cart totals estimated:", estimatedCartTotals);
return estimatedCartTotals;
})
.catch((error) => {
console.error(error);
// Handle the error
});
/* Promise resolves to:
*
* {
* "cart": {
* "_id": "96a61a4b-6b61-47d1-a039-0213a8230ccd",
* "lineItems": [
* {
* "_id": "00000000-0000-0000-0000-000000000001",
* "quantity": 5,
* "catalogReference": {
* "catalogItemId": "c8539b66-7a44-fe18-affc-afec4be8562a",
* "appId": "215238eb-22a5-4c36-9e7b-e7c08025e04e"
* },
* "productName": {
* "original": "Shirt",
* "translated": "Shirt"
* },
* "url": "https://example.wixsite.com",
* "price": {
* "amount": "10",
* "convertedAmount": "10",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "fullPrice": {
* "amount": "10",
* "convertedAmount": "10",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "priceBeforeDiscounts": {
* "amount": "10",
* "convertedAmount": "10",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "descriptionLines": [],
* "image": "wix:image://v1/3c76e2_c5331f937348492a97df87b0a3b34ea4~mv2.jpg#originWidth=1000&originHeight=1000",
* "availability": {
* "status": "AVAILABLE"
* },
* "physicalProperties": {
* "sku": "364115376135191",
* "shippable": true
* },
* "couponScopes": [
* {
* "namespace": "stores",
* "group": {
* "name": "collection",
* "entityId": "00000000-000000-000000-000000000001"
* }
* },
* {
* "namespace": "stores",
* "group": {
* "name": "product",
* "entityId": "c8539b66-7a44-fe18-affc-afec4be8562a"
* }
* }
* ],
* "itemType": {
* "preset": "PHYSICAL"
* },
* "paymentOption": "FULL_PAYMENT_ONLINE"
* }
* ],
* "buyerInfo": {
* "contactId": "f7dc17a6-825a-466e-a78e-c4abea0217db",
* "memberId": "c43190d2-eea3-493e-b6e8-f146850c6873"
* },
* "currency": "EUR",
* "conversionCurrency": "EUR",
* "buyerLanguage": "en",
* "siteLanguage": "en",
* "taxIncludedInPrices": false,
* "weightUnit": "KG",
* "subtotal": {
* "amount": "50",
* "convertedAmount": "50",
* "formattedAmount": "€50.00",
* "formattedConvertedAmount": "€50.00"
* },
* "appliedDiscounts": [],
* "inSync": false,
* "_createdDate": "2022-05-16T12:04:01.244Z",
* "_updatedDate": "2022-05-23T11:55:30.023Z"
* },
* "calculatedLineItems": [
* {
* "lineItemId": "00000000-0000-0000-0000-000000000001",
* "pricesBreakdown": {
* "totalPriceAfterTax": {
* "amount": "50.00",
* "convertedAmount": "50.00",
* "formattedAmount": "€50.00",
* "formattedConvertedAmount": "€50.00"
* },
* "totalPriceBeforeTax": {
* "amount": "50.00",
* "convertedAmount": "50.00",
* "formattedAmount": "€50.00",
* "formattedConvertedAmount": "€50.00"
* },
* "taxDetails": {
* "taxableAmount": {
* "amount": "50.00",
* "convertedAmount": "50.00",
* "formattedAmount": "€50.00",
* "formattedConvertedAmount": "€50.00"
* },
* "taxRate": "0.0",
* "totalTax": {
* "amount": "0.0",
* "convertedAmount": "0.0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "rateBreakdown": []
* },
* "totalDiscount": {
* "amount": "0",
* "convertedAmount": "0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "price": {
* "amount": "10.00",
* "convertedAmount": "10.00",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "priceBeforeDiscounts": {
* "amount": "10.00",
* "convertedAmount": "",
* "formattedAmount": "",
* "formattedConvertedAmount": ""
* }
* },
* "paymentOption": "FULL_PAYMENT_ONLINE"
* }
* ],
* "priceSummary": {
* "subtotal": {
* "amount": "50.00",
* "convertedAmount": "50.00",
* "formattedAmount": "€50.00",
* "formattedConvertedAmount": "€50.00"
* },
* "shipping": {
* "amount": "10.0",
* "convertedAmount": "10.0",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "tax": {
* "amount": "0.0",
* "convertedAmount": "0.0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "discount": {
* "amount": "0",
* "convertedAmount": "0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "total": {
* "amount": "60.00",
* "convertedAmount": "60.00",
* "formattedAmount": "€60.00",
* "formattedConvertedAmount": "€60.00"
* }
* },
* "shippingInfo": {
* "region": {
* "_id": "009fbe5d-89d3-7825-cbbf-1aab4d908b73",
* "name": "USA shipping"
* },
* "selectedCarrierServiceOption": {
* "code": "ed5bbce2-9533-dff4-7db0-13702fd139c5",
* "title": "Standard US Shipping",
* "logistics": {
* "deliveryTime": ""
* },
* "cost": {
* "totalPriceAfterTax": {
* "amount": "10.0",
* "convertedAmount": "10.0",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "totalPriceBeforeTax": {
* "amount": "10",
* "convertedAmount": "10",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "taxDetails": {
* "taxRate": "0.0",
* "totalTax": {
* "amount": "0.0",
* "convertedAmount": "0.0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "rateBreakdown": []
* },
* "price": {
* "amount": "10",
* "convertedAmount": "10",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* }
* },
* "requestedShippingOption": false,
* "otherCharges": [],
* "carrierId": "c8a08776-c095-4dec-8553-8f9698d86adc"
* },
* "carrierServiceOptions": [
* {
* "carrierId": "c8a08776-c095-4dec-8553-8f9698d86adc",
* "shippingOptions": [
* {
* "code": "ed5bbce2-9533-dff4-7db0-13702fd139c5",
* "title": "Standard US Shipping",
* "logistics": {
* "deliveryTime": ""
* },
* "cost": {
* "price": {
* "amount": "10",
* "convertedAmount": "10",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "otherCharges": []
* }
* }
* ]
* }
* ]
* },
* "appliedDiscounts": [],
* "calculationErrors": {
* "orderValidationErrors": []
* },
* "weightUnit": "KG",
* "currency": "EUR",
* "payNow": {
* "subtotal": {
* "amount": "50.00",
* "convertedAmount": "50.00",
* "formattedAmount": "€50.00",
* "formattedConvertedAmount": "€50.00"
* },
* "shipping": {
* "amount": "10.0",
* "convertedAmount": "10.0",
* "formattedAmount": "€10.00",
* "formattedConvertedAmount": "€10.00"
* },
* "tax": {
* "amount": "0.0",
* "convertedAmount": "0.0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "discount": {
* "amount": "0",
* "convertedAmount": "0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "total": {
* "amount": "60.00",
* "convertedAmount": "60.00",
* "formattedAmount": "€60.00",
* "formattedConvertedAmount": "€60.00"
* }
* },
* "payLater": {
* "subtotal": {
* "amount": "0",
* "convertedAmount": "0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "shipping": {
* "amount": "0",
* "convertedAmount": "0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "tax": {
* "amount": "0",
* "convertedAmount": "0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "discount": {
* "amount": "0",
* "convertedAmount": "0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* },
* "total": {
* "amount": "0",
* "convertedAmount": "0",
* "formattedAmount": "€0.00",
* "formattedConvertedAmount": "€0.00"
* }
* },
* "membershipOptions": {
* "eligibleMemberships": [],
* "invalidMemberships": [],
* "selectedMemberships": []
* }
* }
*
*/
This method doesn’t return any custom errors, but may return standard errors. Learn more about standard Wix errors.