SP Richards is a leading wholesale distributor of office supplies, furniture, and business products. As a source in Flxpoint, it provides reliable inventory data, automated updates, and integration options to streamline product management and order fulfillment for ecommerce businesses.
How To Connect
- FTP (Basic Auth) — for file pickup over FTP.
- SPRichard API Token — direct API auth (Group Code + User ID + Password).
- Connection Name
- FTP Protocol: FTP
- FTP Host
- FTP Port
- FTP User
- FTP Password
- File Transfer Mode: Binary file type
- Maintain constant connection: Optional
- Use unbuffered private data channel: Only for resolving specific FTPS errors
- Connection Name
- Group Code
- User ID
- Password
Product Operations
The primary operation handles the bulk of your inventory management needs, while the secondary operation allows for more detailed control, such as focusing on specific products or updates
Get Inventory (Primary)
Use GIP to keep SPRichard inventory current in Flxpoint:
- Import the full SPRichard catalog with core details (brand, titles/descriptions, categories, images, weight).
- Keep quantities current; optionally sum across selected warehouses.
- Bring in dealer pricing when available to you (client-specific pricing).
Each run follows this workflow:
- 1Select Connection — Choose FTP (Basic Auth) or SPRichard API Token when creating your connection.
-
2Fetch Data —
FTP: Flxpoint reads the latest CSV from your provider’s FTP folder (you supply folder + filename pattern). API: Flxpoint requests product, quantity, and price from SPRichard’s API using your Group Code / User ID / Password.When API is used, price/qty is read from the API; otherwise, the FTP feed is used, per your configuration.
- 3Map Fields — Incoming columns are matched to your Mapping Template.
- 4Save to Global Inventory Pool — The pool is updated; changes flow to channels after your next push.
-
Quantity feed (hardcoded):
ftp.sprich.com
→ useronhand
, passonhand
, filesprfull.ezoh
(typically quantity-only). -
Pricing feed (customer-specific): Credentials/file provided by SPR per customer. File names vary (e.g.,
JPR.x12_832_0724.csv
) and contain your dealer pricing.
Follow these steps in your SPRichard source → Get Inventory (Primary):
-
1Connect an Integration — Choose SPRichard and create a connection.
Connection Type
-
FTP (Basic Auth)
Fields: Connection Name, FTP Protocol, FTP Host, FTP Port, FTP User, FTP Password.
Advanced: File Transfer Mode (Binary), Maintain Constant Connection (optional), Use Unbuffered Private Data Channel (for FTPS 534 policy only).
Tip: Use Test ConnectionValidates credentials and folder visibility before you save. after entering your credentials. -
SPRichard API Token
Fields: Connection Name, Group Code, User ID, Password.
Use Case: Preferred when you need dealer pricing and direct price/qty from the API.
-
FTP (Basic Auth)
-
2Configure Settings
-
Remote File Name Pattern (FTP only) — e.g.,
*.csv
or an exact filename. -
Inbound Remote File Folder (FTP only) — e.g.,
/incoming/products
. - File Action — set to Read for GIP.
-
Warehouse — choose All or select specific locations.
What does this do?
Available Quantity will be the sum from the selected Warehouses.
ALL ATLANTA BALTIMORE BIRMINGHAM BOSTON CHARLOTTE CHICAGO COLUMBUS DALLAS DENVER EDMONTON GRAND RAPIDS HOUSTON INDIANAPOLIS KANSAS CITY LOS ANGELES MIAMI NEW YORK PHOENIX PITTSBURGH SALT LAKE CITY SAN ANTONIO SEATTLE ST. LOUIS VANCOUVER
-
Archive/Un-Archive Inventory — Enable to archive items missing from the feed and auto-restore them if they reappear.
Recommendation: Don’t enable Archive on both Primary and Secondary for the same source.
-
Remote File Name Pattern (FTP only) — e.g.,
- 3Define a Mapping Template — Use the recommended fields below, then adjust for your catalog.
- 4Save & Schedule — Run manually or enable a schedule (jobs run in UTC).
- Rich content (long descriptions/specs) can be sourced from Etilize FTP when provided. Use your assigned FTP host/folder and file pattern.
- Multiple warehouses are supported in configuration (sum of selected warehouses shows as Available Quantity).
- API vs FTP: When the API connection is used, price/qty is read from the SPRichard API; otherwise FTP is used for price/qty.
- Status page shows: 1) Connected 2) Configured 3) Mapped — when each step is complete.
-
Quantity (On-hand) FTP —
ftp.sprich.com
| useronhand
| passonhand
| filesprfull.ezoh
.
Typically contains quantities only. -
Pricing FTP (Customer-Specific) — Credentials + file name are provided per customer by SPR (name varies).
Sample:JPR.x12_832_0724.csv
| Specs: “Price File Header List & Descriptions.xlsx”.
Flxpoint Target | SPR Column | Description |
---|---|---|
Wholesale Cost | CI — “Promo Level 1 Dealer Cost” | Dealer/contract cost used as item cost. |
MSRP | AF — “Current Retail Price” | Retail/MSRP reference. |
Starter field mapping for SPRichard (adjust per your template):
Flxpoint Field | SPRichard Field | Notes |
---|---|---|
SKU |
Sku / Catalog Sku
|
Unique product identifier. |
Title |
Description 1 (fallback: Description 2/3 ) |
Human-readable product name. |
Brand |
Brand Name / Manufacturer Name
|
Normalize as needed. |
Quantity | Quantity |
Aggregated when multiple warehouses are selected. |
Client Price | Dealer Price |
Dealer-specific pricing when available. |
MSRP |
Retail Price or column AF per pricing file |
Map from pricing file when available. |
Cost | column CI per pricing file | “Promo Level 1 Dealer Cost.” |
Category 1 | Department Name |
Top-level category. |
Category 2 |
Class Name / Subclass Name
|
Second-level category. |
Weight | Weight |
Pounds. |
UPC | Upc |
Barcode (if present). |
Attributes |
Product Specifications , Marketing Text , etc. |
Bring as custom attributes. |
Images | (Image URL fields if provided) | Single primary image supported. |
Custom Fields | SUPPORTED | Extra product attributes saved as variant custom fields. |
Variations / Options | NOT SUPPORTED | Simple products only. |
Generic Pricing (& Currency) | NOT SUPPORTED | Use client/dealer price when applicable. |
Client Pricing (& Currency) | SUPPORTED | Dealer price per account. |
Quantity | SUPPORTED | From API/FTP; sums across selected warehouses. |
Multiple Warehouses | SUPPORTED | Select in configuration to aggregate. |
Weights & Dimensions (& Units) | SUPPORTED | Weight only, in pounds. |
Images | SUPPORTED | Single image per product (additional via custom fields if provided). |
Categories | SUPPORTED | Two-level structure for mapping. |
Delta vs Full Feed | FULL FEED | This is a full product feed. |
Archive Support | SUPPORTED | Archive missing SKUs; auto-restore when they return. |
-
Costs are empty:
- Confirm you have a pricing FTP from SPR (customer-specific credentials) or use the API. The onhand FTP (
ftp.sprich.com
/onhand
/onhand
) is typically quantity-only. - Verify you’re pulling the correct pricing file (name varies; example
JPR.x12_832_0724.csv
) and mapping CI to Cost, AF to MSRP per “Price File Header List & Descriptions.xlsx”. - If SPR confirms the FTP file no longer carries pricing, request API credentials (Group Code, User ID, Password) and switch the connection to API.
- Confirm you have a pricing FTP from SPR (customer-specific credentials) or use the API. The onhand FTP (
- FTP auth / connection errors: Re-check host, port, username/password, and try Test Connection. For FTPS 534 policy failures, toggle “Use Unbuffered Private Data Channel.”
- API credential errors: Confirm Group Code, User ID, and Password. Ensure your account has access to price/qty endpoints.
-
No quantities or mismatches: Verify selected Warehouse options and that the source file/API returns non-zero
Quantity
. - Items missing after a run: If Archive is enabled, SKUs absent from the feed will be archived (qty set to zero) until they reappear.
You can enable a schedule so this job runs automatically and keeps your SPRichard data fresh. Schedules run in UTC. The status page will show Connected, Configured, and Mapped with the template (e.g., “SPRichard Get Source Products 1”) once complete.
Get Inventory (Secondary)
- Refresh dealer cost and MSRP for existing SKUs.
- Update quantities and aggregate across the warehouses you select.
- Optionally create variants during the run (advanced setting).
-
1Connection — Uses an FTP (Basic Auth) connection to retrieve the inventory feed (e.g.,
sprfull.ezoh
) and, if configured, a separate price file (CSV). The price file headings specify which columns hold cost/MSRP. - 2Parse & Map — The file includes warehouse codes and quantities for each SKU. Mapping then targets only the fields listed in “Recommended Mapping (Secondary).” Fields like Item Number, Current Quantity, and MSRP come from your SPRichard Inventory Item schema. :contentReference[oaicite:4]{index=4} :contentReference[oaicite:5]{index=5} :contentReference[oaicite:6]{index=6}
- 3Write — Updates cost/qty in the Global Inventory Pool.
ABC-123
has cost 12.10
, MSRP 19.99
. Phoenix shows 4, Dallas shows 6 ⇒ Flxpoint quantity becomes 10 when both warehouses are selected.- 1Connect an Integration — Choose SPRichard and use FTP (Basic Auth) credentials.
-
2Configure Settings
-
Remote File Name Pattern — e.g.,
sprfull*.ezoh
or your provider’s exact filename. - Inbound Remote File Folder — the source directory for the feed.
- File Action — set to Read.
- Archive/Un-Archive Inventory — Archiving removes SKUs not present in this delta. Recommendation: if archiving is already enabled in the Primary job, leave it off here to avoid conflicts.
- Warehouse — Select All or specific locations (available quantity is the sum of selected warehouses; the UI tooltip confirms this). :contentReference[oaicite:7]{index=7}
- Advanced > Allow Create Variant — toggle Yes to allow variant creation during Secondary runs.
-
Remote File Name Pattern — e.g.,
- 3Define a Mapping Template — Use the “Secondary” mapping below.
- 4Save & Schedule — Run manually or enable scheduling (jobs run in UTC).
Map only the fields you need for delta updates. Field names below are drawn from your SPRichard Inventory Item schema & templates. :contentReference[oaicite:8]{index=8} :contentReference[oaicite:9]{index=9}
Flxpoint Field | SPRichard Field | Notes |
---|---|---|
SKU | Item Number |
Primary identifier used to match existing products. :contentReference[oaicite:10]{index=10} |
Quantity | Current Quantity |
Per-warehouse quantities; Flxpoint aggregates based on selections. :contentReference[oaicite:11]{index=11} |
Dealer Cost | Price file column CI “Promo Level 1 Dealer Cost” | From the separate price CSV. |
MSRP | Price file column AF “Current Retail Price” | From the separate price CSV. |
Warehouse Code | Warehouse Code |
Used to attribute quantity by location. |
The inventory feed encodes quantity per warehouse. Common codes include:
Custom Fields (Variants Only) | NOT SUPPORTED | Secondary focuses on price/qty only. |
Generic Pricing (& Currency) | NOT SUPPORTED | Use dealer pricing. |
Client Pricing (& Currency) | SUPPORTED | Mapped to dealerPrice, available in USD. :contentReference[oaicite:12]{index=12} |
Quantity | SUPPORTED | From feed; aggregated across chosen warehouses. |
Multiple Warehouses | SUPPORTED | Select locations in config; quantity sums across selections. |
Weights & Dimensions (& Units) | NOT SUPPORTED | Not provided in the delta file. |
Delta Feed vs Full Feed | SUPPORTED (Delta) | Only cost and quantity are saved. |
Archive Support | SUPPORTED | Toggle in configuration. |
- FTP connection fails: Verify host/port and credentials; try Test Connection. For FTPS 534 policy issues, use the unbuffered private data channel setting.
- Missing or zero quantities: Confirm the file contains the warehouse codes you selected and that Current Quantity is non-zero. :contentReference[oaicite:13]{index=13}
- Price not updating: Ensure the price CSV column mapping uses CI (Dealer Cost) and AF (Current Retail Price).
- Unexpected archives: If Archive is enabled and a SKU is absent from the delta, it will be archived with qty=0 until it reappears.
Enable a schedule to update cost/qty automatically. All schedules run in UTC. When ready, the status page will show Connected, Configured, and Mapped with your template (e.g., “Get Inventory 2”).
Order Operations
It submits orders to vendors for fulfillment and subsequently imports the shipment details, ensuring an integration between order processing and shipment tracking.
Send Fulfillment Requests
- Generate an XML Fulfillment Request (FR) for each eligible order.
- Transmit FRs to SPRichard via your configured FTP (Basic Auth) connection.
- Optionally delay or restrict sends using Hold for X hours and Only Send During Business Hours.
- 1Build XML — SFR builds the FR XML using your Mapping Template (CustomerPO/FR number, items/SKUs, etc.). :contentReference[oaicite:3]{index=3}
- 2Upload — The XML is posted to the Outbound Remote File Folder on the SPRichard FTP you configured.
- 3Status — If no error is received during upload, the FR is marked as processed. A sample FR is referenced in the docs/screens.
#54123
→ FR XML posted to /outbound/fr/
. No upload errors ⇒ job marks FR processed.- 1Connect an Integration — Select SPRichard and choose your FTP (Basic Auth) connection.
-
2Configure Settings
- Outbound Remote File Folder — Path on SPRichard FTP where XML FRs should be written.
- Ship To Account Number — Your SPRichard ship-to account identifier required on the FR.
-
Advanced Settings
- Hold for X hours — Temporarily hold FRs before sending (handy for manual review). Tooltip explains it limits the hold to X hours.
- Only Send During Business Hours — Restrict sends to business hours only.
- 3Define a Mapping Template — Pick your template (e.g., Send Purchase Orders 2) or create a new one.
- 4Save & Complete — Run on demand or enable scheduling (runs in UTC).
Header fields and line items map from your order to SPRichard’s External Order schema. These commonly used fields are present in your mapping UI: Fulfillment Request Number (CustomerPO), various dealer reference fields, freight carrier/account, parcel zone/shipping method, etc. :contentReference[oaicite:4]{index=4}
Business Value | SPRichard FR Field | Notes |
---|---|---|
FR / PO Number | CustomerPONo |
Mappable in template; used as the Fulfillment Request Number. :contentReference[oaicite:5]{index=5} |
Ship-To Account | ShipToAccount |
Configured in job settings. |
Shipping Method |
ParcelZone / Carrier fields |
Can pass supplier shipping method; selection UI not supported. :contentReference[oaicite:6]{index=6} |
Items | Line Items (SKU) | SKU is sent with each FR line. :contentReference[oaicite:7]{index=7} |
- Outbound Remote File Folder * — required.
- Ship To Account Number * — required.
- Hold for X hours — Stops FRs from sending for X hours; useful for review.
- Only Send During Business Hours — If checked, SFR restricts the send window to business hours.
- FR is posted on the FTP configured in connection settings.
- File is posted as .xml.
- If no error is received while uploading the file, we mark the FR as processed.
- A sample FR file is attached/referenced in the internal docs.
Fulfillment Request Number | SUPPORTED | FR number is mappable and sent as CustomerPONo . :contentReference[oaicite:8]{index=8} |
Customer Association | NOT SUPPORTED | Customer record linking is not used. |
FR Item Association | SUPPORTED | Line items include SKU in the FR payload. :contentReference[oaicite:9]{index=9} |
Auto Acknowledgements | NOT SUPPORTED | No acknowledgement file is received on upload. :contentReference[oaicite:10]{index=10} |
Shipping Selection | NOT SUPPORTED | Explicit selection UI is not supported, but the shipping method provided by supplier can be sent. :contentReference[oaicite:11]{index=11} |
Custom Fields | NOT SUPPORTED | FR focuses on standard header + item fields. |
Attachments | NOT SUPPORTED | Additional files are not transmitted with the FR. |
Limitations | Follow supplier’s XML schema; errors during upload will prevent “processed” status. |
- Upload errors? Verify FTP credentials/folder path and that XML meets SPRichard schema.
- FR not marked processed? Check job notifications for an error during upload; fix and re-run.
- Missing SKU lines? Confirm your mapping includes SKUs on each FR line. :contentReference[oaicite:12]{index=12}
- Shipping issues? Since selection is not supported, pass the supplier method via mapped fields instead. :contentReference[oaicite:13]{index=13}
You can enable a schedule for automatic sending. The status page will show Connected, Configured, and Mapped (e.g., template Send Purchase Orders 2). Schedules run in UTC.
Get Shipments
- Fetch shipment XMLs from the supplier’s FTP inbound folder.
- Update orders with carrier, shipping method, tracking ID, and ship date.
- Associate shipped items by SKU and support partial shipments where only a subset is shipped.
- 1Pull XML — GS reads files that match your Remote File Name Pattern from the configured Inbound Remote File Folder.
- 2Parse — Carrier, method, tracking, carton/BOL, and line items (SKU & shipped qty) are parsed into your mapping template. :contentReference[oaicite:1]{index=1}
- 3Apply Lookback — Only FRs created within the FR Lookback Period are considered (default 90 days).
- 4Save — Shipment data posts back to the order; partials are supported.
- 1Connect an Integration — Choose SPRichard and your FTP (Basic Auth) connection.
-
2Configure Settings
-
Remote File Name Pattern * — File mask for shipment XMLs (e.g.,
spr_shipments_*.xml
). - Inbound Remote File Folder * — FTP directory from which to read shipment files.
- File Action — Read (leave files) or other actions per your policy.
- Advanced → FR Lookback Period for Get Shipments — Max age of FRs eligible for shipment retrieval (default 90 days). Tooltip explains behavior.
-
Remote File Name Pattern * — File mask for shipment XMLs (e.g.,
- 3Define a Mapping Template — Recommended fields below.
- 4Save & Schedule — Run manually or schedule (UTC).
Use these source fields from SP-Richard – Get Shipments and Get Shipment Items to populate your shipment object. :contentReference[oaicite:2]{index=2}
Shipment Field | SPRichard Field | Notes |
---|---|---|
Carrier | Carrier |
Text value in shipment header. |
Method | Shipping Method |
Supplier shipping method string. |
Tracking ID | Tracking ID |
Main tracking code; may be blank on some LTLs. |
Carton ID / BOL |
Carton Id / Bol
|
Use when tracking isn’t provided. |
Shipped At | Ship Date |
Date value mapped to shipment timestamp. |
PO Number | Purchase Order Number |
Used to associate XML back to the FR/Order. |
Item → SKU | SKU |
Shipment line association is by SKU. |
Item → Shipped Qty | Shipped Quantity |
Supports partial shipments. |
Item → UOM | UOM |
Optional; for reporting/consistency. |
Weight | Actual/Estimated Weight |
If present, map to shipment weight. |
- Shipment is fetched via the FTP connection configured in settings.
- File format is .xml; a sample file is referenced in the docs.
- Carrier number may not be present; consider using Carton ID or BOL fields and mapping rules to preserve identifiers.
Carrier & Methods | SUPPORTED | Carrier and method are available in the XML we receive. |
Shipment Item Association | SUPPORTED | Item association is by SKU. |
Partial Shipments | SUPPORTED | Multiple files/lines can incrementally complete fulfillment. |
Invoice Information | NOT SUPPORTED | Invoice/financials are not part of this feed. |
Custom Fields | NOT SUPPORTED | Standard shipment fields only. |
Limitation | Carrier number may be missing; map Carton Id/BOL and use rules as needed. |
- No shipments found? Verify the file pattern/folder and the Lookback window cover your target FRs.
- Missing tracking? Check Carton ID/BOL fields and map to a custom attribute for reference if needed. :contentReference[oaicite:3]{index=3}
- Item lines didn’t attach? Ensure the supplier XML includes SKU and your template maps it to the line item.
Enable scheduling to pull shipments automatically; status shows Connected, Configured, and Mapped (e.g., template Get Shipments 2). Schedules run in UTC.
Get Invoices
- Capture official invoice totals (merchandise, shipping/freight, handling, tax, fees) for accounting.
- Associate invoice lines to FR items using the supplier SKU.
- Support downstream reporting and margin analysis across shipments and orders.
- 1Connect — Use SPRichard connection (FTP Basic Auth). The job uses the FTP host, user, and password defined in the connection.
-
2Read Files — Job reads inbound
.xml
invoices from the Inbound Remote File Folder using your Remote File Name Pattern. - 3Map — Invoice header and item fields are mapped via your Mapping Template (see recommendations below).
- 4Save — Flxpoint creates/updates PO Invoices linked to your FRs within the selected lookback window.
SPR-12345
, the job will save an invoice totaling $120 with a shipping (freight) charge and associate the line to SKU SPR-12345
.
In the SPRichard source → Get Invoices:
- 1Connect an Integration — Select SPRichard and your existing FTP connection.
-
2Configure Settings
-
Remote File Name Pattern — Pattern for invoice files (e.g.,
inv_*.xml
). - Inbound Remote File Folder — Folder on the SPRichard FTP where invoices are deposited.
- File Action — Typically Read.
- FR Lookback Period for Invoice Processing — Only FRs created within this window are eligible for invoice association (default 30 days). What’s this? Defines the maximum age of FRs considered by the job. Choose a larger window if invoices post much later than shipment.
-
Remote File Name Pattern — Pattern for invoice files (e.g.,
- 3Create a Mapping Template — Use the recommended mappings below.
- 4Save & Schedule — Run on demand or enable a schedule (UTC).
Suggested starting point for SPRichard invoice header and line items:
Flxpoint Invoice Field | SPRichard Field (XML) | Notes |
---|---|---|
Invoice Number |
InvoiceNumber / Invoice Document Number
|
Primary invoice identifier. |
Invoice Date | InvoiceDate |
Date type. |
Invoice Status | Static: Unpaid or Paid | Optional — can be set via option in template. |
Ship Method (Header) |
ShipMethod / ShipCode
|
If present at header; otherwise map per line as needed. |
Shipping Cost | FreightCost |
Saved as Shipping charge item. |
Handling Cost | HandlingCost |
Saved as Handling fee item. |
Other Cost | OtherCost |
Saved as Other fee item. |
Tax Cost | TaxCost |
Saved as Tax charge. |
Total Cost | TotalCost |
Optional header total; line-level Extended Amounts should still be mapped. |
Item: SKU | Item/Sku |
Used for item association to FR line. |
Item: Description | Item/Description |
Optional but helpful for review. |
Item: Shipped Qty | Item/ShippedQuantity |
Numeric. |
Item: Extended Amount | Item/ExtendedAmount |
Line extended cost. |
Item: Retail Price (Optional) | Item/RetailPrice |
Only if provided and needed. |
- Invoice Format: Supported — XML files over FTP.
- Line Item Costs: Supported — Extended Amount available at line level.
- Item Association: Supported — SKU is provided for linking to FR items.
- Limitations: None documented beyond standard feed availability/timeliness.
- No files found? Confirm the Inbound Remote File Folder and Remote File Name Pattern match what SPRichard is dropping on FTP.
- Invoices not linking to FRs? Ensure the FR was created within the Lookback Period and that SKU in the invoice matches the SKU used on the FR line.
- Missing costs? Map Freight/Handling/Tax/Other at the header (recommended) and verify values are present in the XML.
Enable a schedule to continuously capture new invoices from SPRichard. All schedules run in UTC.