XtraDTF Platform Strategy
A product and channel strategy for selling DTF film, gang sheets, decorated products, partner wholesale, API white-label POD, and full print-shop tenant workflows — all powered by the same pricing and production core.
Everything that touches film — gang sheets, single prints, and prints applied to garments — should share one pipeline: upload, analysis, packing, and the same cost formula (film, ink, labor, equipment, cutting, margin).
What changes per audience is who they are, what they buy, the price they see, and who fulfills. This is one platform with multiple commercial surfaces — not five separate products.
RetailGang sheets
End users or small shops not on the platform. Order transfers on film; you print, cut, and ship.
RetailCatalog
End consumers pick category → product → variant, upload a design, receive a finished pressed garment.
WholesaleHeat press
Registered shops with presses order film at a discount through a logged-in portal (not public pricing).
White-labelDropship POD
Partners build their own sites using our API. We produce and dropship; they set retail pricing.
In-house opsNetwork
Print shops with own printers and presses use the full workflow, network fulfillment, and their own website.
┌─────────────────────────────────────┐
│ Shared: upload, pack, quote engine │
└─────────────────────────────────────┘
│
┌───────────────┬───────────────┼───────────────┬───────────────┐
▼ ▼ ▼ ▼ ▼
Public film Public POD Extranet API / embed Full tenant
(retail) (retail) (discount) (POD partner) (in-house + network)
| Buyer | End user or shop not signed up on the system |
|---|---|
| Product | DTF transfers on film (gang sheet builder) |
| Fulfillment | You print, cut, and ship film |
| Pricing | Public retail from shop pricing + printer markup |
| Buyer | End consumer |
|---|---|
| Product | Category → product → color/size; design on placement(s) |
| Fulfillment | You print film, heat press, ship finished goods |
| Pricing | Print cost (same formula) + blank cost + decoration labor + public markup |
| Admin need | Categories, products, variants, placements, and public markup rules |
A separate product-decorator UI is fine; it should call the same quote engine with different line types and catalog IDs.
| Buyer | Registered partner shop with a heat press |
|---|---|
| Product | Same as public film (gang sheets / prints) |
| Fulfillment | You print film; partner presses locally |
| Pricing | Same cost engine + partner tier / volume discount |
Same builder behind authentication, with a pricing channel such as partner_wholesale instead of public.
| Buyer | Partner’s end customer (on their website) |
|---|---|
| Seller | Shop using embed key + API |
| Product | Film and/or decorated products from their catalog |
| Fulfillment | You print, press, and ship in partner’s name |
| Pricing | Partner pays wholesale; they set their own retail |
| Operator | Print shop with own equipment on the platform |
|---|---|
| Fulfillment | Self (their printers/press), network overflow, or film ordered from XtraDTF |
| Capabilities | Shop admin, ops queue, their catalog, their embed, optional subscription |
One checkout and order spine; production behavior depends on line type:
| Line type | Customer sees | Production generates |
|---|---|---|
| gang_sheet | Gang sheet / film order | Packed sheets → print queue |
| print_only | Single sized design | Same pipeline (possibly 1-up) |
| decorated_product | “Black XL tee, front print” | Sheet item + pick blank + press + ship |
| blank_only | Optional blank add-on | Pick and pack only |
Print cost on decorated lines = quote engine on placement dimensions × quantity.
Line total = print cost + blank + decoration labor + channel markup.
One formula serves all channels via layered adjustments:
Base cost (internal)
film + ink + powder + labor + equipment + power + cutting
↓
+ Shop / printer margin
↓
= Production price
↓
+ Channel adjustment
• Public retail markup
• Partner discount (extranet)
• API wholesale (partner pays you)
• Tenant internal cost (they set own retail)
↓
+ Product layer (POD only)
blank cost + press labor + category/product markup
↓
= Final price (customer or partner)
Suggested pricing channels: public, partner_{tier}, api_wholesale, tenant_internal.
Categories (Apparel, Headwear, Bags…)
└── Products (Gildan 5000, Port & Co PC54…)
└── Variants (color + size) → SKU, blank cost, weight
└── Print placements (front, back, left chest…)
└── max width/height, default position
sell_public_filmsell_public_podsell_partner_filmapi_enabled| Tool | Audience | Primary output |
|---|---|---|
| Gang sheet / film builder | Public, extranet, API | Film line items |
| Product decorator (new) | Public POD, API POD | Decorated product lines |
| Shop admin | XtraDTF + tenants | Catalog, markup, policies |
| Extranet portal | Discount partners | Film orders at partner pricing |
| Ops | Production floor | Print queue & fulfillment |
/embed/{shop}/quote — film (exists today)/embed/{shop}/products — catalog/embed/{shop}/product-quote — design on variant/embed/{shop}/checkout — mixed cart (film + POD)| Scenario | Prints film | Presses | Ships | Branding |
|---|---|---|---|---|
| Public film | You | Customer | You → customer | Yours |
| Public POD | You | You | You | Yours |
| Extranet film | You | Partner | You → partner | Yours |
| API POD | You | You | You → their customer | Theirs |
| Full tenant (self) | Tenant | Tenant | Tenant | Theirs |
| Network job | Assigned shop | Assigned shop | Per agreement | Per shop |