Loading…

Loading…
Chat with Kora™
Online
Powered by Kora™ — responses may not be 100% accurate
Everything you need to build, price, and submit canvas templates to the Kontraktr™ Marketplace — from specs to Stripe payout setup.
Hard limits the editor enforces.
| Width | 600 px | Fixed — do not change |
| Height | 600 px | Fixed — do not change |
| Background | "transparent" | Must be exactly the string "transparent" |
| Fabric.js version | 6.0.0 | Use the version string exactly as shown |
| Safe print area | 480 × 480 px | Keep all key art within this centred zone (60 px padding) |
| Canvas centre | left: 300, top: 300 | Use originX/Y: "center" for predictable placement |
Design at 1× (600 px = 600 px). The editor scales down to fit smaller screens automatically — your layout won't be distorted.
Never set a solid background fill. Buyers layer your template on top of a garment photo. A solid background will hide the shirt.
The exact structure Kontraktr™ expects.
A canvas template is a single JSON object. Here is the minimum valid structure — one editable text layer on a transparent background:
{
"version": "6.0.0",
"background": "transparent",
"objects": [
{
"type": "Textbox",
"text": "YOUR TEAM NAME",
"left": 300,
"top": 220,
"width": 400,
"fontSize": 52,
"fontFamily": "Impact",
"fill": "#ffffff",
"textAlign": "center",
"originX": "center",
"originY": "center",
"selectable": true,
"editable": true,
"data": { "placeholder": "Team Name" }
}
]
}And here is a more complete two-layer example (a decorative circle that buyers can't move, plus two editable text fields):
{
"version": "6.0.0",
"background": "transparent",
"objects": [
{
"type": "Circle",
"left": 300,
"top": 300,
"radius": 180,
"fill": "transparent",
"stroke": "#ffffff",
"strokeWidth": 4,
"originX": "center",
"originY": "center",
"selectable": false,
"evented": false,
"lockMovementX": true,
"lockMovementY": true
},
{
"type": "Textbox",
"text": "YOUR TEAM NAME",
"left": 300,
"top": 220,
"width": 380,
"fontSize": 48,
"fontFamily": "Impact",
"fill": "#FFD700",
"textAlign": "center",
"charSpacing": 80,
"originX": "center",
"originY": "center",
"selectable": true,
"editable": true,
"data": { "placeholder": "Team Name" }
},
{
"type": "Textbox",
"text": "EST. 2024",
"left": 300,
"top": 370,
"width": 200,
"fontSize": 20,
"fontFamily": "Arial",
"fill": "#ffffff",
"textAlign": "center",
"charSpacing": 300,
"originX": "center",
"originY": "center",
"selectable": true,
"editable": true,
"data": { "placeholder": "Established Year" }
}
]
}Validate your JSON at jsonlint.com before submitting. Malformed JSON will fail silently in the editor.
Every type the Mockup Editor can render.
Textbox
Multi-line editable text. Use for all buyer-editable copy.
Rect
Rectangle/square. Supports fill, stroke, and border-radius (rx/ry).
Circle
Perfect circle. Use radius to set size.
Line
Straight line from (x1, y1) to (x2, y2).
Triangle
Isoceles triangle. Use width and height to size it.
Path
SVG path data. Use for custom vector shapes.
Image
Raster image via URL. Must be publicly accessible.
Group
Group of objects that move and scale together.
Lock decorative elements by setting selectable: false, evented: false, lockMovementX: true, lockMovementY: true. Buyers can't accidentally drag them out of place.
How to mark text zones buyers should customise.
Add a data object to any Textbox you want buyers to edit. The Marketplace panel highlights these fields and prompts buyers to fill them in before printing.
{
"type": "Textbox",
"text": "YOUR CITY, ST",
"left": 300,
"top": 340,
"width": 300,
"fontSize": 22,
"fontFamily": "Arial",
"fill": "#cccccc",
"textAlign": "center",
"originX": "center",
"originY": "center",
"selectable": true,
"editable": true,
"data": {
"placeholder": "City & State",
"hint": "e.g. Austin, TX"
}
}data.placeholderrequiredShort label shown to the buyer. e.g. "Team Name", "City & State", "Year".data.hintoptionalOptional example text shown below the field. e.g. "e.g. Austin, TX".Use ALL-CAPS default text (e.g. "YOUR TEAM NAME") so it's obvious to buyers that this zone is a placeholder, not final copy.
Help buyers find your template in search.
Pick the single most relevant category. Use 5–10 specific tags.
Good tag examples
Avoid generic tags like "design", "template", or "printable" — they don't help buyers find your work in search.
Whole US dollar amounts. You keep 80%.
Free
$0
Builds reputation fast. Gets priority placement in search. Great for your first 3–5 listings.
Single Template
$3–$15
Best range for individual mockup templates and artwork packs.
Bundle
$20–$50
5+ templates or full garment mockup sets. Buyers expect significant savings vs. individual pricing.
You earn 80% of every sale. Kontraktr™ takes a 20% platform fee and handles all payment processing, delivery, and refunds automatically. No subscription required to sell.
Required before your first sale pays out.
Earnings accumulate in your seller balance. To withdraw, you need a connected Stripe account with identity verification and a bank account on file. This is a legal requirement — Kontraktr™ cannot bypass it.
Payouts are only released after the buyer's 30-day refund window closes. Refunds are deducted from your next payout, not charged back to your bank account.
Connect Stripe before you publish your first listing — there is no waiting period once your account is verified.
Step-by-step from editor to live listing.
Build in the Mockup Editor
Open any job and click the mockup editor, or go to Marketplace → "Create Template". Use the canvas tools to build your design.
Export the canvas JSON
Click File → Export → "Save as Marketplace Template". This copies the Fabric.js JSON to your clipboard.
Fill in the listing form
Name, description, category, tags, garment type, print location, and price. Description should mention the print method (screen print, DTG, heat transfer) the template is optimised for.
Upload preview images
Minimum 800×800 px PNG or JPEG. At least one image should show the template on a dark garment and one on a light garment. More images = more sales.
Submit for review
Click "Submit for Review". The Kontraktr™ team checks all listings within 2 business days. You'll receive an email when it's approved or if changes are needed.
What reviewers look for.
What gets approved and what gets rejected.
Every submission is reviewed within 1–2 business days. If your listing is rejected, you'll receive an email explaining why — fix the issue and resubmit with no limit on attempts.
Automatic rejection reasons
When in doubt, email marketplace@kontraktr.io before submitting. The review team can pre-screen your template and give feedback.
Apply as a seller, build in the Mockup Editor, and start earning on every download. Free to list.