POSBridge Documentation
Data import specification — what comes in, where it goes
What POSBridge Does
POSBridge is the exclusive data gateway between POS systems and the PAG platform. No other application connects to a POS directly. POSBridge receives raw POS data (via CSV upload or API), maps it to a canonical platform model, and routes each record to the correct target application.
PHASE 1 (Current)
CSV / Excel Upload
Manual file import from POS exports
PHASE 2 (Planned)
Live API Adapters
EPASS XAPI, WhirlWind, STORIS
PHASE 3 (Future)
Bi-directional Sync
Platform → POS (orders, customers)
Data Flow
POS System (EPASS / WhirlWind / STORIS / CSV Export)
│
▼
┌─────────────────────────────────────────┐
│ POSBridge │
│ ┌──────────┐ ┌───────────────────┐ │
│ │ Adapter │───▶│ Field Mapping │ │
│ │ (CSV/API) │ │ Engine │ │
│ └──────────┘ └───────┬───────────┘ │
│ │ │
│ ┌───────────▼───────────┐ │
│ │ Canonical Data Model │ │
│ │ (Staging Database) │ │
│ └───────────┬───────────┘ │
│ │ │
│ ┌───────────▼───────────┐ │
│ │ Data Router │ │
│ └──┬──────┬──────┬──────┘ │
└─────────────────┼──────┼──────┼──────────┘
│ │ │
┌──────────┘ │ └──────────┐
▼ ▼ ▼
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ CRM Lite │ │ PMAppliance │ │ RepairPro │
│ (ClientPulse)│ │ Hub │ │ │
│ │ │ │ │ │
│ • Customers │ │ • Appliances │ │ • Service │
│ • Orders │ │ • Properties │ │ History │
│ • Quotes │ │ • Warranties │ │ • Tickets │
│ • Products │ │ │ │ │
└─────────────┘ └──────────────┘ └──────────────┘Data Types & Field Mapping
CUSTOMER
Customers
→ CRM Lite (Person)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| FirstName | string | Yes | AR CUST First Name | FirstName | Customer first name |
| LastName | string | Yes | AR CUST Last Name | LastName | Customer last name |
| string | No | AR CUST E-Mail | Primary email address | ||
| Phone | string | No | AR CUST Phone | Phone1 | Primary phone number |
| DayPhone | string | No | AR CUST Day Phone | — | Daytime phone number |
| Address | string | No | AR CUST Address 1 | Address1 | Street address |
| City | string | No | AR CUST City | City | City |
| State | string | No | AR CUST State | State | State/Province |
| Zip | string | No | AR CUST Postal | ZipCode | ZIP/Postal code |
| CustomerCode | string | Yes | AR CUST Customer ID | CustomerCode | POS customer account number |
| AccountType | string | No | AR CUST Type | AccountType | Account type (Retail, Commercial, etc.) |
| Salesperson | string | No | AR CUST SalesPerson | — | Assigned salesperson |
| PriceLevel | string | No | AR CUST Price Level | — | Customer price level |
| DoNotEmail | bool | No | AR CUST No Mailing List | DoNotEmail | Email opt-out flag |
| DoNotText | bool | No | SmsOptInDeclined | DoNotText | SMS opt-out flag |
| DateAdded | DateTime | No | Date Added | — | Date customer was created |
| CreditLimit | decimal | No | AR CUST Credit Limit | — | Credit limit |
| Notes | string | No | AR CUST Notes | Notes | Customer notes |
ORDER
Orders / Invoices
→ CRM Lite (PlatformOrder)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| OrderNumber | string | Yes | AR ORDER Document # | InvoiceNumber | POS order/invoice number |
| CustomerCode | string | Yes | AR ORDER Customer ID | CustomerCode | Links to customer record |
| OrderDate | DateTime | Yes | AR ORDER Date | InvoiceDate | Date order was placed |
| DueDate | DateTime? | No | AR ORDER Due Date | — | Payment due date |
| Status | string | No | AR ORDER Open YN | Status | Open/closed status (bit) |
| SubTotal | decimal | No | AR ORDER Subtotal | SubTotal | Pre-tax total |
| Tax | decimal | No | AR ORDER Sales Tax | TaxAmount | Tax amount |
| Total | decimal | Yes | AR ORDER Total | Total | Total including tax |
| AmountPaid | decimal | No | AR ORDER Amount Paid | — | Amount paid so far |
| BalanceDue | decimal | No | AR ORDER Balance Due | — | Remaining balance |
| DeliveryDate | DateTime? | No | AR ORDER Ship Date | DeliveryDate | Scheduled/actual delivery date |
| Salesperson | string | No | AR ORDER Salesperson | — | Assigned salesperson |
| Location | string | No | AR ORDER Location | — | Store location code |
| Notes | string | No | AR ORDER Notes | Notes | Order notes |
| DocumentType | string | No | AR ORDER Document Type | — | Order, Quote, Complete Ord, etc. |
LINE ITEM
Order Line Items
→ CRM Lite (PlatformOrderLine)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| OrderNumber | string | Yes | AR ORDERD Document # | InvoiceNumber | Parent order reference |
| ModelNumber | string | Yes | AR ORDERD Item Id | ModelNumber | Product model number |
| Description | string | No | AR ORDERD Description | Description | Product description |
| Quantity | int | Yes | AR ORDERD Qty | Quantity | Quantity ordered |
| UnitPrice | decimal | Yes | AR ORDERD Unit Price | SellPrice | Sell price per unit |
| ItemCost | decimal | No | AR ORDERD Item Cost | — | Dealer cost per unit |
| ExtendedPrice | decimal | No | AR ORDERD Item Total | — | Line total |
| DiscountPct | decimal? | No | AR ORDERD Discount % | — | Line discount percentage |
| Vendor | string | No | AR ORDERD Vendor | — | Vendor/manufacturer |
| Location | string | No | AR ORDERD Item Location | — | Warehouse location |
QUOTE
Quotes
→ CRM Lite (CrmQuote)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| QuoteNumber | string | Yes | — | QuoteNumber | POS quote number |
| CustomerCode | string | Yes | — | CustomerCode | Links to customer |
| QuoteDate | DateTime | Yes | — | QuoteDate | Date quote was created |
| ExpirationDate | DateTime? | No | — | ExpirationDate | Quote expiration |
| Status | string | No | — | Status | Draft, Sent, Accepted, Expired |
| Total | decimal | Yes | — | Total | Quote total |
PRODUCT
Products / Catalog
→ CRM Lite (ProductCatalog)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| ModelNumber | string | Yes | INV ITEM Id | ModelNumber | Product model number (unique key) |
| Brand | string | Yes | INV ITEM Brand | BrandName | Manufacturer brand |
| Category | string | No | INV ITEM Category | Category | Product category |
| SubCategory | string | No | INV ITEM Sub Category | — | Product sub-category |
| Description | string | No | INV ITEM Description | Description | Product description |
| RetailPrice | decimal | No | INV ITEM Price | ListPrice | Retail/selling price |
| ListPrice | decimal | No | INV ITEM Suggested Retail Price | — | MSRP |
| CostPrice | decimal | No | INV ITEM Average Cost | DealerCost | Dealer/wholesale cost |
| SKU | string | No | INV ITEM SKU | — | Stock keeping unit |
| UPC | string | No | Inv Item UPC | — | Universal product code |
| QtyOnHand | int | No | INV ITEM Qty On Hand | — | Current stock count |
| QtyOnOrder | int | No | INV ITEM Qty On Order | — | Quantity on order |
| IsInactive | bool | No | INV ITEM Inactive YN | — | Discontinued flag |
| VendorCode | string | No | INV ITEM Vendor ID | — | Primary vendor code |
DELIVERY
Deliveries
→ CRM Lite (PlatformDelivery)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| OrderNumber | string | Yes | DEL ITEM Document No | InvoiceNumber | Links to order |
| DeliveryDate | DateTime | Yes | DEL Day Date | DeliveryDate | Delivery date (from Delivery Day) |
| TruckName | string | No | DEL TRUCK Name | — | Truck identifier |
| DriverName | string | No | DEL TRUCK Driver | — | Driver name |
| IsDelivered | bool | No | DEL ITEM Delivered YN | — | Delivery completed flag |
| IsLoaded | bool | No | DEL ITEM Loaded YN | — | Loaded on truck flag |
| IsDamaged | bool | No | DEL ITEM Damaged YN | — | Damage reported flag |
| IsReturned | bool | No | DEL ITEM Returned YN | — | Return flag |
| Notes | string | No | DEL ITEM Notes | DriverNotes | Delivery notes |
SERVICE
Service History
→ RepairPro| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| ServiceOrderId | string | Yes | SER ORDERD ID | — | Service order ID |
| OrderDocNo | string | No | SER ORDERD Document # | — | Related sales document |
| ModelNumber | string | No | SER ORDERD Item ID | ModelNumber | Product model |
| SerialNumber | string | No | SER ORDERD Serial Number | SerialNumber | Appliance serial number |
| Brand | string | No | SER ORDERD Brand | BrandName | Manufacturer |
| Description | string | No | SER ORDERD Problem | ProblemDescription | Problem description |
| TechnicianName | string | No | SER ORDERD Credit Tech | TechName | Service technician |
| ServiceDate | DateTime | No | SER ORDERD Invoiced Date | ServiceDate | Date of service |
| TotalAmount | decimal | No | SER ORDERD Total Amount | — | Total service amount |
| PartsTotal | decimal | No | SER ORDERD Total Parts | — | Parts cost |
| LaborTotal | decimal | No | SER ORDERD Total Labor | — | Labor cost |
PAYMENT
Payments
→ DealerOS / CRM Lite| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| PaymentId | int | Yes | AR PAY ID | — | Payment record ID |
| CustomerCode | string | Yes | AR PAY Customer No | CustomerCode | Customer account |
| PaymentDate | DateTime | Yes | AR PAY Transaction Date | PaymentDate | Date payment received |
| Amount | decimal | Yes | AR PAY Amount | Amount | Payment amount |
| Method | string | Yes | AR PAY Type | PaymentMethod | Cash, Check, Credit Card, etc. |
| ReferenceNumber | string | No | AR PAY Check No | ReferenceNumber | Check # or reference |
| OrderNumber | string | No | AR PAY Suggested AR Document | InvoiceNumber | Applied to order |
| IsDeposit | bool | No | AR PAY Deposited YN | IsDeposit | Included in bank deposit |
| IsCreditCard | bool | No | AR PAY Credit Card YN | — | Credit card payment flag |
| Location | string | No | AR PAY Location | — | Store location |
| TakenBy | string | No | AR PAY Took by Employee | — | Employee who received payment |
PO
Purchase Orders
→ DealerOS / Inventory| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| PONumber | string | Yes | — | PONumber | Purchase order number |
| VendorName | string | Yes | — | VendorName | Vendor/supplier name |
| VendorCode | string | No | — | VendorCode | Vendor account code |
| OrderDate | DateTime | Yes | — | PODate | PO creation date |
| ExpectedDate | DateTime? | No | — | ETADate | Expected delivery date |
| Status | string | No | — | Status | Open, Partial, Received, Closed |
| Total | decimal | No | — | Total | Total PO amount |
| TrackingNumber | string | No | — | TrackingNumber | Shipping tracking number |
| Notes | string | No | — | Notes | PO notes |
PO LINE
PO Line Items
→ DealerOS / Inventory| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| PONumber | string | Yes | — | PONumber | Parent PO reference |
| ModelNumber | string | Yes | — | ModelNumber | Product model ordered |
| Brand | string | No | — | BrandName | Manufacturer |
| Description | string | No | — | Description | Product description |
| QuantityOrdered | int | Yes | — | QtyOrdered | Quantity ordered |
| QuantityReceived | int | No | — | QtyReceived | Quantity received so far |
| UnitCost | decimal | Yes | — | UnitCost | Cost per unit |
| AssignedOrderNumber | string | No | — | SalesOrderNumber | Customer order this is allocated to |
INVENTORY
Inventory Units
→ DealerOS / PMApplianceHub| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| ModelNumber | string | Yes | INV SER Model Number | ModelNumber | Product model number |
| SerialNumber | string | No | INV SER Serial Number | SerialNumber | Unit serial number |
| Location | string | No | INV SER Item Location | WarehouseLocation | Warehouse location code |
| ReceivedDate | DateTime? | No | INV SER Received Date | ReceivedDate | Date received into inventory |
| CostPaid | decimal | No | INV SER Cost | CostPaid | Actual cost paid for this unit |
| OriginalCost | decimal | No | INV SER Original Cost | — | Original cost at receipt |
| AllocatedToOrder | string | No | INV SER Allocated Reference | AllocatedOrder | Order this unit is reserved for |
| AllocatedCustomer | string | No | INV SER Allocated Customer Name | — | Customer allocated to |
| AllocatedSalesperson | string | No | INV SER Allocated Salesperson | — | Salesperson on allocation |
| PONumber | string | No | INV SER Purchase Order ID | PONumber | PO this unit came from |
| IsSold | bool | No | INV SER Sold YN | — | Sold flag |
| SoldDate | DateTime? | No | INV SER Sold Date | — | Date sold |
| IsActive | bool | No | INV SER Active YN | — | Active inventory flag |
RETURN
Returns
→ DealerOS / ReturnFlow| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| ReturnNumber | string | Yes | — | ReturnNumber | Return authorization number |
| OriginalOrderNumber | string | Yes | — | OriginalInvoice | Original order being returned |
| CustomerCode | string | Yes | — | CustomerCode | Customer returning the item |
| ReturnDate | DateTime | Yes | — | ReturnDate | Date return was initiated |
| ModelNumber | string | Yes | — | ModelNumber | Product being returned |
| SerialNumber | string | No | — | SerialNumber | Serial number of returned unit |
| Reason | string | No | — | ReturnReason | Reason for return |
| Condition | string | No | — | InspectionResult | Inspection result: Resellable, Damaged, Defective |
| RefundAmount | decimal | No | — | RefundAmount | Amount refunded to customer |
| VendorCreditAmount | decimal | No | — | VendorCredit | Credit received from vendor |
| Disposition | string | No | — | Disposition | Restock, Return to Vendor, Scrap, Outlet |
| Status | string | No | — | Status | Pending, Inspected, Processed, Closed |
DEPOSIT
Bank Deposits
→ DealerOS / Accounting| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| DepositDate | DateTime | Yes | AR DEP Date | DepositDate | Date of bank deposit |
| DepositNumber | string | No | AR DEP Deposit No | DepositNumber | Deposit slip number |
| CashAmount | decimal | No | AR DEP Cash Amount | CashAmount | Cash in deposit |
| CheckAmount | decimal | No | AR DEP Deposit Check Amount | CheckAmount | Checks in deposit |
| TotalAmount | decimal | Yes | AR DEP Amount | Total | Total deposit amount |
| TotalCash | decimal | No | AR DEP Total Cash Amount | — | Total cash amount |
| Employee | string | No | AR DEP Employee | — | Employee who made deposit |
| Store | string | No | AR DEP Store | — | Store location |
| IsVoided | bool | No | AR DEP Voided | — | Voided flag |
| IsPosted | bool | No | AR DEP Posted YN | — | Posted to GL flag |
STAFF
Staff / Salespeople
→ DealerOS / CRM Lite| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| EmployeeCode | string | Yes | EMP ID | EmployeeCode | Employee/salesperson code |
| FullName | string | No | EMP Name | — | Full display name |
| FirstName | string | Yes | EMP First Name | FirstName | First name |
| LastName | string | Yes | EMP Last Name | LastName | Last name |
| string | No | EMP E-Mail | |||
| Phone | string | No | EMP Phone | Phone | Phone |
| MobilePhone | string | No | EMP Mobile Phone Number | — | Mobile phone |
| Role | string | No | EMP Type | Role | Employee type/role |
| Department | string | No | EMP Department | — | Department |
| Location | string | No | EMP Location | — | Store location |
| IsSalesperson | bool | No | EMP Salesperson YN | — | Is a salesperson |
| IsManager | bool | No | EMP Manager YN | — | Is a manager |
| IsWarehouse | bool | No | EMP Warehouse YN | — | Is warehouse staff |
| IsServiceTech | bool | No | EMP Service Tech YN | — | Is a service technician |
| IsInactive | bool | No | EMP Inactive YN | IsActive | Inactive (terminated) flag |
| CommissionPercent | decimal? | No | EMP Comm Percent | CommRate | Commission percentage |
| HireDate | DateTime? | No | EMP Hire Date | — | Hire date |
PROPERTY
Properties / Homes
→ PMApplianceHub| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| CustomerCode | string | Yes | — | CustomerCode | Links to customer/owner |
| Address | string | Yes | — | DeliveryAddress | Property street address |
| City | string | No | — | DeliveryCity | City |
| State | string | No | — | DeliveryState | State |
| Zip | string | No | — | DeliveryZip | ZIP code |
| UnitNumber | string | No | — | Suite | Apartment/unit number |
| PropertyType | string | No | — | — | House, Condo, Apartment, Commercial |
| TenantName | string | No | — | — | Current tenant (if rental) |
APPLIANCE
Appliance Ownership
→ PMApplianceHub (UnitAppliance)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| CustomerCode | string | Yes | — | CustomerCode | Links to customer/property owner |
| PropertyAddress | string | No | — | DeliveryAddress | Property where installed |
| ApplianceType | string | Yes | — | Category | Refrigerator, Range, Dishwasher, etc. |
| Brand | string | Yes | — | BrandName | Manufacturer brand |
| ModelNumber | string | Yes | — | ModelNumber | Product model number |
| SerialNumber | string | No | — | SerialNumber | Appliance serial number |
| PurchaseDate | DateTime? | No | — | InvoiceDate | Date purchased (from order) |
| PurchasePrice | decimal? | No | — | SellPrice | Price customer paid |
| InstallDate | DateTime? | No | — | DeliveryDate | Date installed |
| WarrantyExpires | DateTime? | No | — | WarrantyExpDate | Warranty expiration date |
| WarrantyType | string | No | — | WarrantyType | Manufacturer, Extended, None |
DAMAGE
Damage Reports
→ DealerOS / Warehouse| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| OrderNumber | string | No | — | InvoiceNumber | Related order (if applicable) |
| ModelNumber | string | Yes | — | ModelNumber | Damaged product model |
| SerialNumber | string | No | — | SerialNumber | Serial of damaged unit |
| DamageDate | DateTime | Yes | — | DamageDate | Date damage reported |
| Severity | string | No | — | Severity | Minor, Moderate, Severe |
| Description | string | No | — | Description | Description of damage |
| PhotoUrls | string | No | — | — | Damage photos (URLs, comma-separated) |
| Disposition | string | No | — | Disposition | Return to Vendor, Outlet, Scrap |
TRANSFER
Warehouse Transfers
→ DealerOS / Warehouse| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| TransferNumber | string | Yes | — | TransferNo | Transfer document number |
| FromLocation | string | Yes | — | FromWarehouse | Source warehouse/location |
| ToLocation | string | Yes | — | ToWarehouse | Destination warehouse/location |
| TransferDate | DateTime | Yes | — | TransferDate | Date of transfer |
| ModelNumber | string | Yes | — | ModelNumber | Product being transferred |
| SerialNumber | string | No | — | SerialNumber | Serial number |
| Quantity | int | Yes | — | Quantity | Quantity transferred |
| Status | string | No | — | Status | Pending, In Transit, Received |
QUOTE LINE
Quote Line Items
→ CRM Lite (CrmQuoteLineItem)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| QuoteNumber | string | Yes | — | QuoteNumber | Parent quote reference |
| ModelNumber | string | Yes | — | ModelNumber | Product model number |
| Brand | string | No | — | BrandName | Manufacturer brand |
| Description | string | No | — | Description | Product description |
| Quantity | int | Yes | — | Quantity | Quantity quoted |
| UnitPrice | decimal | Yes | — | SellPrice | Quoted price per unit |
| DiscountPercent | decimal? | No | — | DiscountPct | Line-level discount percentage |
| ExtendedPrice | decimal | No | — | ExtendedPrice | Quantity x UnitPrice - Discount |
VENDOR
Vendors / Suppliers
→ DealerOS / CRM Lite (Company)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| VendorCode | string | Yes | — | VendorCode | Vendor account code |
| VendorName | string | Yes | — | VendorName | Company name |
| ContactName | string | No | — | ContactName | Primary contact person |
| Phone | string | No | — | Phone | Phone number |
| string | No | — | Email address | ||
| Address | string | No | — | Address1 | Street address |
| City | string | No | — | City | City |
| State | string | No | — | State | State |
| Zip | string | No | — | ZipCode | ZIP code |
| AccountNumber | string | No | — | AccountNumber | Retailer's account # with this vendor |
| PaymentTerms | string | No | — | Terms | Net 30, COD, etc. |
| IsActive | bool | No | — | IsActive | Active vendor |
ADDRESS
Customer Addresses
→ CRM Lite (PersonAddress)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| CustomerCode | string | Yes | — | CustomerCode | Links to customer |
| AddressType | string | Yes | — | AddressType | Billing, Shipping, Service, Home |
| Address | string | Yes | — | Address1 | Street address |
| Address2 | string | No | — | Address2 | Suite, apt, unit |
| City | string | No | — | City | City |
| State | string | No | — | State | State |
| Zip | string | No | — | ZipCode | ZIP code |
| IsPrimary | bool | No | — | IsPrimary | Primary address for this type |
| Notes | string | No | — | Notes | Delivery instructions, gate code, etc. |
ROUTE
Delivery Routes / Stops
→ DealerOS / DeliveryFlow| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| RouteDate | DateTime | Yes | — | RouteDate | Delivery route date |
| RouteName | string | No | — | RouteName | Route identifier (Truck A, Route 1, etc.) |
| DriverName | string | No | — | DriverName | Assigned driver |
| TruckId | string | No | — | TruckId | Truck/vehicle identifier |
| StopNumber | int | Yes | — | StopSequence | Stop order on route |
| OrderNumber | string | Yes | — | InvoiceNumber | Order being delivered at this stop |
| CustomerCode | string | No | — | CustomerCode | Customer at this stop |
| Address | string | No | — | DeliveryAddress | Delivery address |
| TimeWindow | string | No | — | TimeWindow | Delivery window (8am-12pm, etc.) |
| ItemCount | int | No | — | ItemCount | Number of items on this stop |
| Status | string | No | — | Status | Scheduled, En Route, Delivered, Failed |
| CompletedAt | DateTime? | No | — | CompletedTime | Actual delivery time |
| DriverNotes | string | No | — | DriverNotes | Driver notes at delivery |
| SignatureUrl | string | No | — | SignatureUrl | Customer signature image URL |
| PhotoUrls | string | No | — | PhotoUrls | Delivery photos (comma-separated URLs) |
PRICING
Price Lists / Price Codes
→ PriceSync2 / DealerOS| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| PriceCode | string | Yes | — | PriceCode | Price list identifier (Retail, Builder, Employee, VIP) |
| Description | string | No | — | Description | Price list description |
| ModelNumber | string | Yes | — | ModelNumber | Product model |
| ListPrice | decimal | No | — | ListPrice | Manufacturer suggested retail price |
| SellPrice | decimal | Yes | — | SellPrice | Selling price for this price code |
| CostPrice | decimal | No | — | DealerCost | Dealer cost |
| MinPrice | decimal? | No | — | MinPrice | Minimum allowed sell price (MAP) |
| EffectiveDate | DateTime? | No | — | EffectiveDate | When this price takes effect |
| ExpirationDate | DateTime? | No | — | ExpirationDate | When this price expires |
PROMO
Promotions / Rebates
→ DealerOS / CRM Lite| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| PromoCode | string | Yes | — | PromoCode | Promotion/rebate identifier |
| PromoName | string | Yes | — | PromoName | Promotion name |
| PromoType | string | No | — | PromoType | Manufacturer Rebate, Store Promo, Co-op, Spiff |
| Brand | string | No | — | BrandName | Applicable brand (or blank for all) |
| ModelNumber | string | No | — | ModelNumber | Specific model (or blank for category) |
| Category | string | No | — | Category | Product category |
| DiscountAmount | decimal? | No | — | DiscountAmount | Fixed dollar discount |
| DiscountPercent | decimal? | No | — | DiscountPct | Percentage discount |
| RebateAmount | decimal? | No | — | RebateAmount | Mail-in/instant rebate amount |
| StartDate | DateTime | Yes | — | StartDate | Promotion start date |
| EndDate | DateTime | Yes | — | EndDate | Promotion end date |
| IsActive | bool | No | — | IsActive | Currently active |
WARRANTY
Warranty Claims
→ RepairPro| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| ClaimNumber | string | Yes | — | ClaimNumber | Warranty claim number |
| CustomerCode | string | Yes | — | CustomerCode | Customer filing claim |
| ModelNumber | string | Yes | — | ModelNumber | Product model |
| SerialNumber | string | Yes | — | SerialNumber | Appliance serial number |
| ClaimDate | DateTime | Yes | — | ClaimDate | Date claim filed |
| IssueDescription | string | No | — | Description | Description of the issue |
| ClaimStatus | string | No | — | Status | Filed, Approved, Denied, Paid |
| ClaimAmount | decimal? | No | — | ClaimAmount | Amount claimed |
| PaidAmount | decimal? | No | — | PaidAmount | Amount paid by manufacturer |
| ManufacturerRef | string | No | — | MfgReference | Manufacturer reference/case number |
NOTE
Customer Notes
→ CRM Lite (Communication)| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| CustomerCode | string | Yes | — | CustomerCode | Links to customer |
| NoteDate | DateTime | Yes | — | NoteDate | Date note was created |
| NoteText | string | Yes | — | NoteText | Note content |
| NoteType | string | No | — | NoteType | General, Phone Call, Follow-up, Complaint |
| CreatedBy | string | No | — | CreatedBy | Employee who wrote the note |
FINANCE
Financing Applications
→ DealerOS| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| ApplicationId | string | Yes | — | ApplicationId | Financing application ID |
| CustomerCode | string | Yes | — | CustomerCode | Customer applying |
| Provider | string | Yes | — | FinanceCompany | Synchrony, Wells Fargo, GreenSky, etc. |
| ApplicationDate | DateTime | Yes | — | ApplicationDate | Date applied |
| RequestedAmount | decimal | No | — | RequestedAmount | Amount requested |
| ApprovedAmount | decimal? | No | — | ApprovedAmount | Amount approved |
| Term | string | No | — | Term | 12mo, 24mo, 36mo, etc. |
| InterestRate | decimal? | No | — | Rate | Interest rate (0 for promos) |
| Status | string | No | — | Status | Pending, Approved, Denied, Expired |
| OrderNumber | string | No | — | InvoiceNumber | Order this financing is applied to |
PARTS
Parts Inventory
→ RepairPro| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| PartNumber | string | Yes | — | PartNumber | Part number / SKU |
| Description | string | No | — | Description | Part description |
| Brand | string | No | — | BrandName | Manufacturer |
| QuantityOnHand | int | No | — | QtyOnHand | Current stock count |
| CostPrice | decimal | No | — | Cost | Cost per unit |
| SellPrice | decimal | No | — | SellPrice | Sell price per unit |
| Location | string | No | — | BinLocation | Storage bin/shelf location |
| CompatibleModels | string | No | — | CompatibleModels | Appliance models this part fits (comma-separated) |
APPOINTMENT
Service Appointments
→ RepairPro| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| AppointmentId | string | Yes | — | TicketNumber | Service ticket/appointment ID |
| CustomerCode | string | Yes | — | CustomerCode | Customer |
| ScheduledDate | DateTime | Yes | — | ScheduledDate | Scheduled service date |
| TimeWindow | string | No | — | TimeWindow | Morning, Afternoon, 8-12, 1-5 |
| TechnicianName | string | No | — | TechName | Assigned technician |
| ServiceAddress | string | No | — | ServiceAddress | Where service is performed |
| ApplianceModel | string | No | — | ModelNumber | Appliance to be serviced |
| ApplianceSerial | string | No | — | SerialNumber | Serial number |
| ProblemDescription | string | No | — | Problem | Customer-reported issue |
| Status | string | No | — | Status | Scheduled, Dispatched, In Progress, Completed, Cancelled |
| EstimatedDuration | string | No | — | EstDuration | Estimated time (1hr, 2hr, etc.) |
TAX
Tax Codes / Rates
→ DealerOS / PriceSync2| Canonical Field | Type | Required | WhirlWind | EPASS | Description |
|---|---|---|---|---|---|
| TaxCode | string | Yes | — | TaxCode | Tax jurisdiction code |
| Description | string | No | — | Description | Tax jurisdiction name |
| Rate | decimal | Yes | — | TaxRate | Tax rate percentage |
| IsDefault | bool | No | — | IsDefault | Default tax code for new orders |
| State | string | No | — | State | State this tax applies to |
| County | string | No | — | County | County (if applicable) |
| City | string | No | — | City | City (if applicable) |
| EffectiveDate | DateTime? | No | — | EffectiveDate | When this rate takes effect |
Supported POS Systems
CSV / Excel Upload
Any POS system that can export to CSV or Excel. Manual upload, field mapping, preview before import.
AVAILABLE NOW
WhirlWind
WhirlWind POS integration. Product catalog, inventory, orders, customer records. Primary POS target for V1.
PHASE 2 — PRIORITY
EPASS XAPI
Direct API integration via EPASS XAPI. Customers, invoices, service requests, dispatching.
PHASE 2
STORIS
STORIS ERP integration for furniture/appliance retailers.
PHASE 3
API Endpoints (Phase 2)
When live API adapters are built, these will be the endpoints POSBridge exposes for other platform apps to call:
| Method | Endpoint | Description | Status |
|---|---|---|---|
| GET | /api/customers/{posId} | Look up customer by POS ID | Planned |
| POST | /api/customers/sync | Sync customer from POS to platform | Planned |
| GET | /api/orders/{posOrderNumber} | Look up order by POS order number | Planned |
| POST | /api/orders/sync | Sync order/invoice from POS | Planned |
| POST | /api/quotes/send-to-pos | Send a CRM quote to the POS system | Planned |
| GET | /api/inventory/{model} | Check POS inventory for a product | Planned |
| POST | /api/import/upload | Upload CSV/Excel for batch import | Phase 1 |
| GET | /api/import/{jobId}/status | Check import job progress | Phase 1 |