XprintPro
{{ payReceiptCompany }} · Payment receipt {{ pmRcNo }}
{{ pmRcStatus }}
Amount paid {{ payReceiptAmount }}
{{ f.label }} {{ f.value }}
Applied to
{{ a.doc }}{{ a.amount }}
{{ pmRcRev }}
delete
Delete {{ custDeleteName }}? This removes the customer from your list. A customer with jobs or invoices on file is deactivated instead, so nothing in your records is orphaned.
delete
Delete this {{ cfgDeleteWhat }}? {{ cfgDeleteLabel }} will no longer be available when creating jobs. Existing jobs keep their pricing.
delete
Delete this payment? {{ payDeleteName }} will be removed and the customer's balance recalculated. This cannot be undone.
{{ jobCardNo }} {{ jobCardTitle }} {{ jobCardStatus }}
{{ f.label }} {{ f.value }}
Total {{ jobCardAmount }}
{{ pmTitle }} {{ pmSub }}
{{ f.label }}{{ f.value }}
Apply to invoices
{{ i.no }}{{ i.meta }}
{{ pmNoInvText }}
Payment amount{{ pmTotPay }} Amount allocated{{ pmTotAlloc }} Remaining unallocated{{ pmTotLeft }}
{{ pmLeftNote }}
{{ pmError }}
Allocate {{ paReceipt }} {{ paCustomer }}
{{ i.no }}{{ i.meta }}
This customer has no accepted invoices with an outstanding balance.
Payment amount{{ paTotPay }} Amount allocated{{ paTotAlloc }} Remaining unallocated{{ paTotLeft }}
{{ paError }}
{{ prTitle }} {{ prBody }} {{ prError }}
{{ svcLifeTitle }} {{ svcLifeBody }} {{ svcLifeError }}
{{ svcHistTitle }} {{ svcHistSub }}
{{ e.what }}{{ e.when }} by {{ e.who }}{{ e.detail }}
No recorded activity yet.
Message {{ cmName }} {{ cmPhone }}
{{ cmBlocked }} {{ cmCount }} {{ cmError }}
callCall forumWhatsApp mailEmail
Deactivate {{ custDeactName }}? The record and its full history stay in the system and in every report. New jobs, quotes and invoices are blocked until the customer is reactivated. Payments can still be recorded. {{ custDeactNote }}
{{ jeNo }} · {{ jeCategory }} Edit job
Dimensions (W × H)
×
Paper size
{{ jeError }}
{{ custMergeTitle }} {{ custMergeNote }}
Keeping {{ custMergeKeep }} Balance {{ custMergeKeepBal }}
Removing {{ custMergeDrop }} Balance {{ custMergeDropBal }}
Update Status {{ docStatusFor }}
Update Status {{ jobStatusFor }}
delete
Delete this job? {{ jobCancelName }} will be removed from the job list. Any payments already recorded against it stay on record. This cannot be undone.
Change Role {{ umRoleForName }}
Import Jobs {{ impName }}
error{{ impProblem }} check_circle{{ impDone }}
task_alt{{ impReadyCount }} ready block{{ impSkipCount }} will be skipped
LineJobCustomerAmountStatus
{{ r.line }} {{ r.title }} {{ r.customer }} {{ r.amount }} {{ r.note }}
{{ impMore }}
X Loading XprintPro…
{{ orgInitials }} {{ bizName }} Print CRM

Welcome back

Sign in to manage jobs, quotes and payments across the shop.
schedule {{ authNote }}
error{{ signError }}
Contact Admin
Trouble signing in? Contact your shop administrator.
boltProduction floor to invoice

Every job, quote and cedi in one place.

Track the press schedule, chase receivables and close the month without leaving the shop floor.

{{ s.value }} {{ s.label }}
{{ userInitials }} {{ userName }} {{ userEmail }}
Notifications {{ notifCount }} new
notifications_off You're all caught up
{{ apiNoteIcon }} {{ apiNote }}

{{ dashGreeting }}

Saks Initiative
public Company Time: {{ clock }}
insert_chart

{{ cashCardTitle }}

account_balance_wallet {{ cashReceivedLabel }}
{{ cashToday }} Money received from payments
credit_card {{ cashTxLabel }}
{{ txToday }} Number of payment transactions
receipt_long

Payment Breakdown

{{ row.method }} {{ row.amount }}
work

Job Summary

work Total Jobs
{{ totalJobs }} {{ jsTotalCaption }}
error Incomplete Jobs
{{ incompleteJobs }} Jobs pending or in progress
{{ stage.name }}
{{ stage.count }}

Income & Expense

Income
Expense
Income {{ ieIncomeTotal }}
Expense {{ ieExpenseTotal }}
Net {{ ieNetTotal }}
{{ tick }}
{{ m.label }}

Top Expenses

{{ topExpTotal }} this month
Top share {{ topExpLeadPct }} {{ topExpLeadName }}
{{ e.name }} {{ e.amount }} {{ e.pct }}
print

Jobs Due Soon

{{ job.title }} {{ job.customer }}
{{ job.status }} {{ job.due }}
event_available No jobs due yet.
credit_card

Outstanding Receivables

{{ receivablesTotal }}
{{ row.customer }} {{ row.invoice }} · {{ row.age }}
{{ row.amount }}
savings Nothing outstanding.
boltQuick tools

Get the shop moving in one click

Jump straight into the jobs, quotes and payments you run every day — no digging through menus.
{{ p.label }} {{ p.value }}
keyboard_command_key Shortcuts
Jump to any workspace
{{ cdInitials }}
{{ cdName }} {{ cdType }} {{ cdStatusLabel }}
call{{ cdPhone }} mail{{ cdEmail }} place{{ cdLocation }}
{{ s.icon }}{{ s.label }} {{ s.value }}
{{ cdTabLabel }}
{{ a.icon }}
{{ a.title }} {{ a.tag }} {{ a.detail }}
{{ a.date }} {{ a.time }}
Account flags
{{ f.icon }} {{ f.text }}
Notes
{{ r.icon }}
{{ r.title }} {{ r.sub }}
{{ r.status }} {{ r.amount }}
inbox {{ cdEmptyTitle }} {{ cdEmptyDesc }}

{{ ncFormTitle }}

{{ ncFormSub }}
warning
{{ ncConflictTitle }} {{ ncConflictNote }}
Record already on file {{ ncConflictOwner }} {{ ncConflictMeta }}
Customer Type *
Customer type affects pricing and service offerings.
Phone Number * {{ ncPhoneError }}

Customers

{{ custSubtitle }}
content_copy {{ custDupeNote }}
{{ s.icon }} {{ s.icon }}{{ s.label }} {{ s.value }} {{ s.hint }}
{{ selectedCount }} selected
 
call {{ c.phone }} warning{{ c.dupeLabel }}
{{ c.type }} {{ c.statusLabel }} {{ c.balance }} {{ c.openJobs }}
group_off {{ custEmptyTitle }} {{ custEmptyHint }}
{{ resultLabel }}
{{ custPageLabel }}

New Job

Pick a category and service — the price is worked out for you.
calendar_today calendar_month
1Service category {{ jdCatCountLabel }}
2Customer & service
Customer
{{ jdLockedName }} lock
No customer matches that search.
Service
{{ jdSvcNoneText }}
3Specification & pricing
straightenDimensions
Size Preset
Unit
tunePrice Adjustments
Assign To

Job Card

Every service rendered to one customer on one day, with sizes and quantities.
{{ s.icon }}{{ s.label }} {{ s.value }}
{{ jcHeading }}
{{ jcCountLabel }}
Job noServiceCategorySizeQtyAmount
{{ r.no }}
{{ r.service }} {{ r.status }}{{ r.dateLabel }}
{{ r.category }} {{ r.size }} {{ r.qty }} {{ r.amount }}
Total {{ jcTotalQty }} {{ jcTotalAmount }}
assignment {{ jcEmptyTitle }} {{ jcEmptyDesc }}

Job Management

Today's Jobs {{ jobDate }}
New job by category
{{ jobPageLabel }}
Job no.Job / serviceCustomerCategoryStatusPaymentAmount
{{ j.no }}
{{ j.title }} Due {{ j.due }} · {{ j.qty }}
{{ j.customer }} {{ j.category }} {{ j.status }} {{ j.alloc.label }}{{ j.alloc.note }} {{ j.amount }}
inventory_2 No jobs found for {{ jobDate }} Try adjusting your filters.
{{ qtTitle }}
{{ qtCustEmptyNote }}
{{ qtDueLabel }}
Item Quantity Price Amount Actions
{{ l.amount }}
Payment instruction
Subtotal {{ qtSubtotal }}
{{ qtDiscountValue }}
{{ qtVatValue }}
Total {{ qtTotal }}
Amount Due {{ qtTotal }}

Quotes & Invoices

Create estimates and turn approved ones into jobs
{{ docResultLabel }}
Doc no.TypeDescriptionCustomerIssuedDueStatusAmount
{{ d.no }} {{ d.type }}
{{ d.title }} Balance {{ d.balance }}
{{ d.customer }} {{ d.date }} {{ d.due }} {{ d.status }} {{ d.amount }}
description No documents found Try adjusting your search, customer or date range.

Payments

Every payment received, what it settled, and what is still unallocated
{{ k.icon }}{{ k.label }} {{ k.value }} {{ k.note }}
search
{{ pmResultLabel }}
Receipt noDateCustomerInvoice(s)AmountMethodStatus
{{ p.receipt }} {{ p.date }} {{ p.customer }}{{ p.phone }} {{ p.invoice }} {{ p.amount }} {{ p.method }} {{ p.status }}
payments No payments found Try a different search, date range or filter.

Receivables

{{ arOutstanding }} outstanding · average age {{ arAvgDays }}
mark_email_read {{ arToast }}
credit_cardOutstanding
{{ arOutstanding }} Across the current filter
descriptionTotal owed
{{ arInvoiced }} Total owed by customers
savingsPart payments
{{ arCollected }} Already collected
warningOver 30 days
{{ arOverdue }} Needs chasing this week
{{ arResultLabel }}
Customer owesCustomerOldest dueAgeOwedPaidBalance
{{ r.invoice }}
{{ r.customer }} {{ r.title }}
{{ r.dueLabel }} {{ r.days }} {{ r.amount }}
{{ r.paid }}
{{ r.balance }}
task_alt Nothing outstanding No open invoices match this ageing band or customer.

{{ expFormTitle }}

Record what was spent, who it went to, and how it was paid.
Category
Payment method

Expenses

Track what the shop spends against what it earns
trending_downTotal spend
{{ expTotal }} Across the current filter
check_circleSettled
{{ expPaid }} Already paid out
hourglass_topAwaiting payment
{{ expPending }} Bills still due
leaderboardBiggest category
{{ expTopCategory }} {{ expCount }} entries recorded
{{ expResultLabel }}
ReferenceExpenseCategoryVendorDateStatusAmount
{{ e.ref }}
{{ e.item }} {{ e.account }} · logged by {{ e.user }}
{{ e.icon }}{{ e.category }} {{ e.vendor }} {{ e.date }} {{ e.status }} {{ e.amount }}
lockEditing expenses needs permission
receipt_long No expenses found Try a different category, status or date range.

Reports

{{ repTypeLabel }} · {{ repRangeLabel }}
{{ k.label }}
{{ k.value }} {{ k.delta }}
{{ k.note }}

{{ repGroupTitle }}

Monthly target {{ repTarget }}
{{ g.name }}
{{ g.count }} {{ g.value }}
bar_chart {{ repGroupsEmptyNote }}
{{ k.label }} {{ k.value }} {{ k.note }}

Why each record is or isn't revenue

Only accepted invoices and confirmed jobs count, net of VAT. Quotes, drafts, raised invoices awaiting acceptance, declined, void and cancelled records count ₵0. A job billed on an invoice is counted on the invoice only.
RefCustomerTypeStatusDatePaidOutstanding
{{ r.ref }} {{ r.customer }} {{ r.type }} {{ r.status }} {{ r.date }} {{ r.paid }} {{ r.outstanding }}
No records in this period.
{{ raMore }}
SAKS INITIATIVE Profit & Loss Statement {{ plPeriod }} · accrual basis, job-based revenue
Net profit {{ plNet }} Net margin {{ plNetMargin }}
Cost of sales Operating expenses Net profit
Revenue
{{ r.name }} {{ r.pct }} {{ r.value }}
Total Revenue {{ plTotalRev }}
Cost of sales
{{ r.name }} {{ r.pct }} ({{ r.value }})
Total Cost of Sales ({{ plTotalCogs }})
Gross Profit Gross margin {{ plGrossMargin }}
{{ plGross }}
Operating expenses
{{ r.name }} {{ r.pct }} ({{ r.value }})
Total Operating Expenses ({{ plTotalOpex }})
Net Profit Net margin {{ plNetMargin }}
{{ plNet }}
info
Loan repayments {{ plExcluded }} {{ plExcludedNote }}
Total revenue {{ plTotalRev }}
Total expenses {{ plTotalExpenses }} {{ plEntryNote }}
Gross margin {{ plGrossMargin }}
Net margin {{ plNetMargin }}

{{ cfgSectionTitle }}

{{ cfgSectionDesc }}
{{ svcOtherNote }}
{{ r.icon }}
{{ r.name }}{{ r.status }} {{ r.code }} · {{ r.category }} · {{ r.unit }} · {{ r.price }} {{ r.detail }}
{{ svcOtherEmptyText }}
{{ cfgSvcCountLabel }}
ServiceCategoryUnitBase price 
{{ r.icon }}
{{ r.name }} {{ r.code }}
{{ r.category }} {{ r.unit }} {{ r.price }}
manufacturing {{ cfgSvcEmptyTitle }} {{ cfgSvcEmptyHint }}
{{ r.icon }}
{{ r.name }} {{ r.desc }}
{{ r.services }} {{ r.jobs }}
{{ r.initial }}
{{ r.name }} {{ r.desc }}
schedule{{ r.terms }} group{{ r.used }}
Preset nameDimensionsUsed forUnitPriceActions
crop_free {{ r.name }}
{{ r.dims }} {{ r.usedFor }} {{ r.price }}

{{ cfgFormTitle }}

{{ cfgFormSubtitle }}

Service Information

Category *

Pricing Tiers

straighten Dimensions & materials
Unit
Material
{{ c.label }} {{ c.value }}
Suggested rate {{ cfgFormTotal }}

Service Status

Control whether this service is active and available

Status Tracking

Mark this service if its jobs move through the status lifecycle (pending → in progress → completed).
Payment terms
Unit
Dimensions {{ cfgFormDimsPreview }}

Financial Settings

{{ finTotalBalance }} across {{ finAccountCount }} active accounts

{{ finFormTitle }}

warning {{ finUnlinkedNote }}
{{ a.icon }}
{{ a.name }} Primary
{{ a.detail }}
{{ a.status }}
{{ a.linkIcon }}{{ a.linkLabel }} {{ a.methods }}
south_west{{ a.moneyIn }} in north_east{{ a.moneyOut }} out
{{ a.movementNote }} · opening {{ a.opening }}
Current balance {{ a.balance }}
Charges {{ a.fees }}

Expense categories

{{ finSpendTotal }} recorded spend
{{ c.icon }}
{{ c.name }} {{ c.count }}
{{ c.total }}

Cost centers

{{ finBudgetTotal }} total budget
Cost centerMapped categoriesBudgetSpentRemainingUtilisation
{{ c.name }} {{ c.code }} · {{ c.owner }}
{{ c.categories }} {{ c.budget }} {{ c.spent }} {{ c.remaining }}
{{ c.pct }}

{{ setPageTitle }}

{{ setPageDesc }}
check_circleChanges saved
X
{{ bizName }} {{ bizAddress }}

Contact person

{{ umEditTitle }} {{ umEditSub }}
warning{{ umSeatError }}
Role
Plan Usage {{ umUsed }} / {{ umSeats }}
group
{{ umRemaining }}
Recent Activity {{ umActiveRecent }} / {{ umUsed }}
monitoring
Active in last 7 days
Permission Issues {{ umIssues }}
warning
Users without roles

{{ umListTitle }}

UserRoleLast LoginActions
{{ u.name }} {{ u.email }} {{ u.role }} {{ u.lastLogin }}
group_off No {{ umEmptyWord }} users Users you suspend will appear here.

Roles

{{ permRoleSummary }}

Permissions

for {{ permRoleName }}
{{ permSaveNoteIcon }}{{ permSaveNote }}
{{ g.count }}
{{ m.name }} {{ m.count }}
shield

Two-Factor Authentication

Add an extra layer of security to your account with email-based verification codes.
Email OTP Authentication Receive verification codes via email when logging in.
{{ twoFaBadge }}
{{ twoFaNoteIcon }} {{ twoFaNote }}
lock

Password Security

Manage your account password and security preferences.
Password Last updated: {{ passwordUpdated }}
Change password in User Management
vpn_key

Session Management

Monitor and manage your active sessions across devices.
Current Session Active since: {{ sessionSince }}
Active
devices
{{ s.device }} {{ s.place }} · {{ s.when }}
This device

Appearance & display

Data & backup

check_circle{{ backupNote }}
cloud_done
{{ b.name }} {{ b.detail }}
{{ b.status }}

Payment methods

Methods offered when recording a payment. Turning a method off hides it for new payments; past payments keep it. Customer credit is built in and applied from a customer's credit balance.
{{ m.name }}
{{ spNote }}
sms SMS service {{ smsNotifStatus }} {{ smsServiceLabel }}
mark_email_readSent this month {{ smsSentCount }} messages delivered
errorFailed {{ smsFailedCount }} retry from the message log

Custom sender ID

Messages sent through your own provider account are billed directly by that provider. Update the connection details under API Settings.

Notification triggers

Choose which events send an automatic message.
{{ t.name }} {{ t.desc }} {{ t.stateLabel }}
{{ tpl.title }} {{ tpl.desc }} {{ tpl.badge }}
Preview {{ tpl.preview }}
{{ tpl.testNoteIcon }}{{ tpl.testNote }}
{{ smsTplNoteIcon }}{{ smsTplNote }}
api

Gateway connection

{{ smsApiStatusIcon }}{{ smsApiStatus }}
Point XprintPro at your provider's HTTP API. Credentials are stored against your company only.
{{ c.label }}
{{ smsApiNoteIcon }}{{ smsApiSavedNote }}

Delivery webhook

Give this URL to your provider so delivery receipts update the message log.
{{ smsWebhookUrl }}
terminal

Send a test message

{{ smsApiMethod }} · {{ smsApiAuth }}
{{ smsApiCurl }}
RecipientMessageSentStatus
{{ m.to }} {{ m.number }} {{ m.text }} {{ m.note }} {{ m.when }} {{ m.status }}
forum No messages sent yet Every message the system sends will be listed here.

Bulk SMS

Send one message to a group of customers.
Audience
{{ smsBulkCost }} estimated cost · {{ smsBulkCount }} recipients
{{ smsBulkChars }}
check_circle{{ smsBulkNote }}
construction

{{ stubTitle }}

This module isn't built yet. Tell me what it should contain and I'll design it next.

Quick create