← Help & Documentation

Module

Storefront

Maintained DivisionDesk documentation · Updated 2026-08-19

# Storefront

## First-time setup
1. Open **Administration → Storefront → Settings**.
2. Choose the organization that owns the store.
3. Select the merchant account exposed by the DivisionDesk Payments SDK.
4. Choose whether the organization absorbs processing fees, passes them through, or chooses by payment method.
5. Review the merchant fee profile. Provider defaults are only starting values; use the actual rate for the organization's merchant account.
6. Configure shipping, tax behavior, order notifications and fulfillment.
7. Create a product and publish the Store page.

## Processing fee behavior
When pass-through is enabled, Storefront asks the Payments SDK for the merchant's fee quote. If the Payments SDK does not expose a quote, Storefront may use the explicitly configured merchant fee profile. It never invents a missing fee.

For a percentage plus fixed fee, Storefront can gross-up the fee so the organization recovers the configured processor cost after the processor applies its percentage to the final amount.

The checkout must disclose the processing/convenience fee before the customer submits payment. Availability and legality depend on merchant agreements, card-network rules and applicable law; administrators are responsible for enabling it only where appropriate.

## Products
Product types: physical, digital, donation/fundraiser, membership/dues-related and event merchandise. Variants may override SKU, price and inventory.

## Orders
Order statuses: pending payment, paid, processing, ready, shipped, completed, cancelled, partially refunded and refunded.

## Integrations
Storefront uses the DivisionDesk SDK for Payments, organizations, membership, events, notifications and Page Builder widgets. It must not query another module's tables directly.

## Troubleshooting
All mutation actions use fetch/AJAX. Buttons show an in-progress state and are restored after either success or failure. Server errors should be returned as JSON and displayed without discarding the user's form input.
Still need help? Search the Community for real-world discussion, or submit a Feature Request if the product itself needs to change.