Configure payment processing for in-store pick up

Commerce supports existing payment types and gateways for in-store pick up.

A new payment type, called In Store Payment, lets shoppers pay for items when they pick them up in a store instead of when they place the order online. Commerce displays the In Store Payment type only when all items in an order will be picked up at the same location – that is, when all items in an order are part of the same in-store pick up shipping group or multiple in-store pick up shipping groups for the same store. If an order includes items that will be picked up at multiple locations or items that will be shipped or downloaded, In Store Payment is not available and the shopper must pay for the entire order at checkout.

An order created with the In Store Payment type includes a single in store payment group. The in store payment group functions as a placeholder in the order until the shopper picks up and pays for the order in store. After the shopper pays in the store, you can update the order with payment details using the updateOrder endpoint in the Admin API. (See Order Management REST APIs for more information.)

To update the order with appropriate payment details, issue a PUT request to the /ccadmin/v1/orders endpoint on the administration server. Replace the existing payment group with new payment groups that represent the actual payment at pick up. For example, the following excerpt from a sample updateOrder request body specifies that a shopper paid with cash when they picked up an order:

 ...
  "paymentGroups": [
    {
      "paymentGroupClassType": "cash",
      "amountAuthorized": 200,
      "amount": 200,
      "gatewayName": "merchantCashGateway",
      "paymentProps": {},
      "paymentMethod": "cash",
      "state": "PAYMENT_REQUEST_ACCEPTED",
      "id": "pg304412",
      "submittedDate": "2018-04-30T08:25:35.000Z",
      "debitStatus": [],
      "authorizationStatus": [
{
          "amount": 200,
          "statusProps": {
            "sample-addnl-property-key2": "sample-payment-property-value2",
            "responseReason": "1001",
            "sample-addnl-property-key1": "sample-payment-property-value1",
            "merchantTransactionId": "MERCHANT-TRANSACTION-ID",
            "currencyCode": "USD",
            "occs_tx_id": "o30430-pg30441-1525076734070",
            "occs_tx_timestamp": "2018-04-30T08:25:34+0000",
            "merchantTransactionTimestamp": "1447807667046",
            "responseCode": "1000",
            "token": "token-success"
 },
          "transactionSuccess": true,
          "errorMessage": null,
          "externalStatusProps": [],
          "transactionId": "HOST-TRANSACTION-ID",
          "transactionTimestamp": "2015-11-18T00:47:47.000Z"
        }
      ],
      "currencyCode": "USD"
    }
  ],
  "relationships": [
    {
      "paymentGroupId": "pg304412",
      "amount": 200,
      "relationshipType": "ORDERAMOUNTREMAINING",
      "id": "r7i0471"
    }
  ],
  ...
  "id": "o50444",
  "state": "SUBMITTED",
}

To configure the In Store Payment settings in the Commerce administration interface:

  1. Click the Settings icon.
  2. Select Payment Processing from the Settings list
  3. On the Payment Gateways tab, select In Store Payment from the Service Type list.
  4. Select one of the following environments to configure.

    Preview: Your store’s preview environment

    Agent: The Commerce Agent Console

    Storefront: Your production storefront

  5. (Optional) If your Commerce environment is configured for scheduled orders or order approvals, select Enable For Scheduled Order or Enable For Order Approval to let shoppers pay for those orders if they pick them up in stores.
  6. Click Save.
  7. Publish your changes. See Publish Changes for more information.

See Configure Payment Processing for more information about configuring payment settings in Commerce.

Note: Make sure you are using the latest version of the layouts and widgets that allow shoppers to select in-store pick up and payment. See Configure layouts and widgets for in-store pick up for more information.