You are here:
Point of Sale - SFCC (Salesforce Commerce) Integration
Use the cartridge integration and OCAPI’s to expose Salesforce Commerce's endless aisle functionality. POS integrates with Salesforce Commerce (SFCC) via OCAPI’s interfaces. This approach lets SFCC build and manage the cart (tax, promos). Point of Sale is a Salesforce-certified commerce integrator and is certified for OCAPI 21 integration. There is also a cartridge with default hooks for customization for client needs.
Prerequisites
Refer to POS Access List - URLs and IP Addresses for a list of URLs and IP addresses to allowlist, which turns on necessary communication.
POS Flows
- Store associate placing a guest order
- Store associate placing an order on behalf of the customer
- Pulling commerce order history
- Store associates can sign up a new customer on commerce
- Store associate doing clienteling using Commerce customer list
Point of Sale + SFCC via OCAPI - OMNI Use Cases
The items listed before lists the support capabilities of SFCC via OCAPI with Retail Cloud's omnichannel solutions.
- Real time inventory visibility between POS & E-commerce - Supported
- Endless Aisle - Supported
- Mixed Cart - Not Supported
- Buy Online, Return In-Store (BORIS) - Supported
- Buy Online, Pickup In-Store (BOPIS) - Not Supported
- Buy Online, Ship From Store (BOSIS) - Not Supported
Reference Architecture

POS UI - SFCC Mapping
| POS Screens | Point of Sale Object | APIs |
|---|---|---|
|
Customer | |
|
Cart | SHOP APIs - Basket Resources |
|
Order |
SFCC Integration Details
Check this Salesforce Commerce documentation here for Authentication.
- OCAPI OAuth
- OCAPI Settings
- Point of Sale cartridge also has all the details about the integration
Salesforce Commerce APIs
Get details of the Salesforce Commerce APIs
Authentication
To access the OCAPI resources we need a client id and the password (Obtain a Client Credentials grant). This client id and password is used to generate the OAuth token. This token can be used to place an order as a guest. If the customer is logging himself and placing an order these credentials will work. In the case of POS apps the store associate will be logging on behalf of the customer so we need alleviated business manager access. (Obtain a Business Manager user grant).
Authorization: This is controlled using the OCAPI settings. In the Point of Sale cartridge there is a copy of required permissions and ocapi settings json file.
For retrieving OCAPI endpoints Point of Sale calls, it can be found by referring API Logs in CMS. Please reach out to your Customer Success Manager for more information.
SHOP APIs - Basket Resources
This table list all the basket resources that are accessed to place an order.
| HTTP Method | Resource | Description |
| POST | /baskets | Create a basket |
| GET | /baskets/{basket_id} | Get a basket |
| PATCH | /baskets/{basket_id} | Updates a basket |
| DELETE | /baskets/{basket_id} | Remove a basket |
| PUT | /baskets/{basket_id}/billing_address | Sets the billing address of a basket |
| POST | /baskets/{basket_id}/coupons | Adds a coupon to an existing basket |
| DELETE | /baskets/{basket_id}/coupons/{coupon_item_id} | Removes a coupon from the basket |
| PUT | /baskets/{basket_id}/customer | Sets customer information for an existing basket |
| POST | /baskets/{basket_id}/gift_certificate_items | Adds a gift certificate item to an existing basket |
| DELETE | /baskets/{basket_id}/gift_certificate_items/{gift_certificate_item_id} | Deletes a gift certificate item from an existing basket |
| PATCH | /baskets/{basket_id}/gift_certificate_items/{gift_certificate_item_id} | Updates a gift certificate item of an existing basket |
| POST | /baskets/{basket_id}/items | Adds new items to a basket |
| PATCH | /baskets/{basket_id}/items/{item_id} | Updates an item in a basket |
| DELETE | /baskets/{basket_id}/items/{item_id} | Removes a product item from the basket |
| POST | /baskets/{basket_id}/payment_instruments | Adds a payment instrument to a basket |
| PATCH | /baskets/{basket_id}/payment_instruments/{payment_instrument_id} | Updates a payment instrument of a basket |
| DELETE | /baskets/{basket_id}/payment_instruments/{payment_instrument_id} | Removes a payment instrument from a basket |
| GET | /baskets/{basket_id}/payment_methods | Gets applicable payment methods for an existing basket considering the open payment amount only |
| POST | /baskets/{basket_id}/price_adjustments | Adds a custom manual price adjustment to the basket |
| DELETE | /baskets/{basket_id}/price_adjustments/{price_adjustment_id} | Removes a custom manual price adjustment from the basket |
| PATCH | /baskets/{basket_id}/price_adjustments/{price_adjustment_id} | Updates a custom manual price adjustment on the basket |
| POST | /baskets/{basket_id}/shipments | Creates a new shipment for a basket |
| PATCH | /baskets/{basket_id}/shipments/{shipment_id} | Updates a shipment for a basket |
| DELETE | /baskets/{basket_id}/shipments/{shipment_id} | Removes a specified shipment |
| PUT | /baskets/{basket_id}/shipments/{shipment_id}/shipping_address | Sets a shipping address of a specific shipment of a basket |
| PUT | /baskets/{basket_id}/shipments/{shipment_id}/shipping_method | Sets a shipping method to a specific shipment of a basket |
| GET | /baskets/{basket_id}/shipments/{shipment_id}/shipping_methods | Gets the applicable shipping methods for a certain shipment of a basket |
CustomerLists Resource (Data API)
| HTTP Method | Resource | Description |
| POST | /customer_lists/{customer_list_id}/customer_search | Used for Clientelling in Customer Search |
Customers Resources
| HTTP Method | Resource | Description |
| POST | /customers | Registers a customer |
| DELETE | /customers/auth | Invalidates the JWT provided in the header |
| PATCH | /customers/{customer_id} | Updates a customer |
| GET | /customers/{customer_id}/addresses | Returns a sorted pageable list of all customer addresses in the address book. |
| POST | /customers/{customer_id}/addresses | Creates a new address with the given name for the given customer |
| GET | /customers/{customer_id}/addresses/{address_name} | Retrieves a customer's address by address name |
| DELETE | /customers/{customer_id}/addresses/{address_name} | Deletes a customer's address by address name |
| PATCH | /customers/{customer_id}/addresses/{address_name} | Updates a customer's address by address name |
| POST | /customers/{customer_id}/auth | Obtains a new agent on behalf of a registered customer |
| GET | /customers/{customer_id}/baskets | Get the baskets of a customer |
| GET | /customers/{customer_id}/orders | Returns a pageable list of all customer's orders. The default page size is 10 |
| POST | /customers/{customer_id}/password_reset | Starts a password reset process |
| POST | /customers/{customer_id}/product_lists | Creates a customer product list |
| GET | /customers/{customer_id}/product_lists/{list_id} | Returns a customer product list of the given customer |
| GET | /customers/{customer_id}/product_lists/{list_id}/items | Returns a pageable list of all items of a customer's product list. The default page size is 10. |
| POST | /customers/{customer_id}/product_lists/{list_id}/items | Adds an item to the customer's product list |
| GET | /customers/{customer_id}/product_lists/{list_id}/items/{item_id} | Returns an item of a customer product list |
| DELETE | /customers/{customer_id}/product_lists/{list_id}/items/{item_id} | Removes an item from a customer product list |
Order Resources
| HTTP Method | Resource | Description |
| POST | /orders | Submits an order based on a prepared basket |
| GET | /orders/{order_no} | Get information for an order |
| PATCH | /orders/{order_no} | Update an order |
| PATCH | /orders/{order_no}/payment_instruments/{payment_instrument_id} | Updates a payment instrument of an order |

