
Checkout Architecture
Part of Ecommerce platform integrations
Connecting orders to accounting and fulfilment systems
Define the triggers, fields and return updates needed to connect store orders with accounting and fulfilment.
Route order events separately: fulfilment needs a release instruction, while accounting needs a record that reflects payment and later adjustments. An order-created event alone may be too early to release goods or determine an accounting record.
A documented accounting path is Flxpoint to QuickBooks Online: paid channel orders become Sales Receipts and unpaid ones become Invoices. For fulfilment, use the store’s paid and held states to govern release, then return dispatch and tracking details to the store record.
Set each trigger
A BigCommerce store/order/created webhook identifies an order-created event. Its callback includes a store ID, the order ID in data, and a hash that can help detect duplicate events; the event does not indicate that payment is ready.
In WooCommerce, Pending payment means no payment has been made, while Processing means payment has been received and the order awaits fulfilment. On hold means payment confirmation is needed; Failed means payment was declined or failed. Use the paid Processing state as the usual warehouse cue, except where all products are virtual and downloadable.
For accounting, Flxpoint sends paid channel orders to QuickBooks Online as Sales Receipts and unpaid ones as Invoices. Its exports run in sequence: orders first, fulfilment requests next as Purchase Orders, then source invoices as Bills linked to the matching Purchase Orders.
| Destination | Data and rule to specify |
|---|---|
| Fulfilment | Original order ID, SKU or variant, quantity, recipient, delivery service, instructions and hold rule |
| Accounting | Original order ID, amounts and currency, approved tax treatment, payment reference and adjustment route |
| Store after dispatch | Fulfilled quantities, carrier and tracking details, plus the state staff and customers see |
For the QuickBooks Online connection, prepare a Sales of Product Income account and an Accounts Payable account. Its settings include shipping and custom transaction numbers, a SKU column, quantity and price/rate tracking, an items table for expenses, customer tracking for expenses and items, and Purchase Orders with custom transaction numbers.
Flxpoint connects to QuickBooks Online through its authorisation flow: sign in to QuickBooks and authorise access, without copying API keys. Check the fields against the store, payment and warehouse workflow; an app’s field list does not prove that transfers create the intended records.
Order Status Triggers for Fulfilment and Accounting in WooCommerce
- Fulfilment Trigger
- Order status: Processing (paid)
- Accounting Trigger
- Order status: Paid (for Sales Receipts), Unpaid (for Invoices)
- Special Case
- All virtual/downloadable products: Use Processing state for fulfilment regardless of payment method
Flxpoint to QuickBooks Online Data Flow
- Order ExportFlxpoint exports paid orders as Sales Receipts, unpaid as Invoices
- Fulfilment RequestFlxpoint creates Purchase Orders for warehouse fulfilment
- Source Invoice LinkBills are created and linked to matching Purchase Orders
Key Accounting Accounts Required for Flxpoint–QuickBooks Integration
- Sales of Product Income
- For recording revenue from sales
- Accounts Payable
- For managing supplier payments via Purchase Orders
- Custom Transaction Numbers
- Enabled for purchase orders and invoices
Keep record identities linked
Carry the commerce order ID into each destination and store each destination’s ID alongside it. One order may produce several shipments or financial entries, so retain line and quantity references where needed. Amend or adjust the appropriate record rather than silently creating another full order.
BigCommerce’s callback hash can help identify duplicate events, while the store ID and order ID identify the store and order. Flxpoint also offers a setting to link to existing Sales Receipts; keep that distinct from the store’s order identity.
If a transfer times out after a destination creates a record, find that record before retrying. Staff need to see whether a transfer is waiting, accepted, rejected or held for review.
Close the return path
Decide who reports a short pick, split dispatch or item that cannot be supplied. Shopify’s fulfillmentTrackingInfoUpdate mutation updates tracking on a fulfilment, provided the required access scope and fulfill_and_ship_orders permission are in place.
The Shopify mutation takes a fulfilment ID and tracking details including carrier, tracking number and URL. For multiple packages, it accepts multiple tracking numbers and URLs; a supported carrier name can prompt Shopify to generate tracking URLs. Set notifyCustomer to send tracking emails and future update notifications; if it is blank, Shopify sends no customer notification.
Return fulfilled quantities and tracking to the store record staff use. Check the mutation’s returned fulfilment and userErrors so staff can see the updated record or any errors.
For a WooCommerce refund, compare the order, payment provider and accounting adjustment. An automatic refund returns funds through the original payment method; a manual refund records the order as refunded but leaves the merchant to return the money through the payment provider or another method.
Changing an order directly to Cancelled or Refunded does not return the customer’s money. Check the order notes for a “Successfully refunded” message after processing; a partial refund does not change the order status to Refunded.
Key Steps to Close the Return Path in Shopify
- Verify required permissionsEnsure `fulfill_and_ship_orders` scope is granted
- Use correct mutation`fulfillmentTrackingInfoUpdate` with fulfilment ID and tracking details
- Include tracking informationCarrier name, tracking number(s), URL(s), and optional notifyCustomer flag
- Check return responseReview returned fulfilment object and userErrors for staff visibility



