Fisher Platform modules

From order to payment, and from receipt to stock, without switching systems.

Purchasing and Warehouse cover the full cycle: you request, ask for quotes, approve, receive into your warehouse, match the supplier invoice against what was ordered and received, and pay by payment run. Your suppliers get their own portal, and whatever arrives at the door updates stock instantly.

  • Three-way match: order, receipt and invoice
  • Portal for your suppliers
  • Stock that updates on receipt
admin/purchase/dashboard
6steps in the cycle, from request to payment, in a single system
3match ways: order, warehouse receipt and invoice
5warehouse document types: receipt, issue, transfer, adjustment and inventory
1portal where your supplier follows their orders and responds
The purchasing cycle

Six steps, a single purchase file

Each step grows out of the previous one and leaves its trail. Click one to see what happens there; if you don't touch anything, it advances on its own.

1 · The request says what is needed

Whoever needs something requests it with its lines (item, unit, quantity, price, discount and VAT). If there is an approval circuit, the request waits for whoever must decide before moving on.

View requests →
  • Draft, pending approval, approved, rejected or closed.
  • Numbering with prefix, padding and annual reset, as you like.

Click a step or use the keyboard arrows · pauses on hover

Purchasing

Requests, approves and tracks what is committed and deliveries.

Warehouse

Receives, stores, transfers and counts. The one who confirms what actually arrived.

Supplier

Responds to quotes, follows their orders and uploads the documents requested.

Accounts payable

Matches, resolves differences, approves and schedules payment.

Request and order

Requests, quotes and orders, each in its place

Three lists with the same style: as cards or as a table, with figures on top that filter and each document opened in a panel on the right, without losing the list.

Requests

What is needed, ordered properly

  • Complete lines: item, unit, quantity, price, per-line discount, VAT and a global discount as a percentage or fixed amount.
  • Built-in approval: draft, pending approval, approved, rejected or closed; the status is set by the circuit, not typed by hand.
  • Next step one click away: request a quote from an approved request, with figures for what has no quote yet.
  • Attachments and notes with the document, and your own units of measure for the lines.
admin/purchase/requests
Requests. Twenty sample requests: closed, approved, rejected.
Supplier quotes

The offer, with its validity and its response

  • Linked to the request and the supplier, with supplier reference, validity and terms.
  • Figures that matter: those awaiting a response, those expiring in seven days, the expired ones and the accepted ones that are not yet orders.
  • Convert to an order without retyping a line.
  • Note for the supplier (they see it in their portal) kept apart from the internal note, which only your team sees.
admin/purchase/quotations
Quotes. Every offer with its validity and its status.
Orders

What is left to receive and what is left to pay, on the same sheet

  • Order sheet in a panel: total, paid, outstanding, delivery and lines, with next steps spelled out ("delivery was due 15 days ago", "partially received: the rest is missing").
  • Goods: not received, partially received or received. Warehouse sets it when the receipt is confirmed; it is only changed by hand if you don't use Warehouse.
  • Payments on the order: amount, date, reference and note; the sum paid never exceeds the total.
  • Overdue deliveries, to receive and to pay as filters and as alerts on the dashboard.
admin/purchase/orders
Order. Partially received, with the delivery overdue and what is left to pay.
Board

What is committed, what is pending and what needs attention today

  • What is committed and what is pending payment, open orders and what is committed in the year.
  • "Awaiting your decision" for the approver, late deliveries and expiring contracts.
  • Spend per month for the last twelve months and orders by status.
  • Supplier contracts with validity, amount and signature, and a notice before they expire.
admin/purchase/orders
Orders. Nine open, six with the delivery overdue.
Approve

Make sure nobody buys without the right person having seen it

Two levels, depending on what you need: a simple, ordered approval, or flows with steps, amounts and even the supplier itself.

Purchasing approval

Approvers in order, by document type

  • One flow per document: request, quote, order or contract, with an ordered list of approvers. The order of the list is the order in which they are asked.
  • "Your turn to decide" on each approver's record, with an optional comment and approve or reject buttons.
  • Clear statuses: pending, approved, rejected and cancelled, with the history of who decided what.
  • Document types are an open catalog: a module can add its own.
Approval flows

With the workflow engine, by amount and with supplier steps

  • Internal review, management depending on the amount, and going back if something doesn't add up: the flow is drawn in the Workflows module and purchase orders hook into it.
  • Steps that belong to the supplier: upload the invoice, the delivery note or whatever the step asks for, from their portal.
  • Payments, complements and closing as steps of the same flow, with going back and branching by amount.
  • A new installation starts with no flows: you define them to suit you.
Contracts

Contracts with your suppliers, with validity and signature

  • Number, subject, supplier, start, end and amount, with the contract text and attachments.
  • Signature: marked as signed (with its date) or unsigned, and filters by status and supplier.
  • Notice before it expires and expiring contracts on the dashboard; they can also go to approval.
  • The supplier can see their contracts in their portal, if you decide so.
admin/purchase/contracts
Contracts. Three sample contracts, with the footer "Showing 1–3 of 3 entries".
Supplier portal

Your supplier knows what is expected of them, without calling you

A portal of its own, with its own route and per-contact access. The supplier sees what is theirs and nothing else, and what they answer reaches your team with a notice.

  • What awaits them, first: the workflow steps that are theirs and the quotes pending a response.
  • Their orders with the goods status, so they can see what was received and what is missing, and their quotes with their validity.
  • Their contracts (if you enable that option) and the terms and notes you left them.
  • Per-contact access with password and second factor, and the same password policy as the rest of the platform.
  • It is switched on whenever you want and its route is configurable in Settings → Purchasing.
supplier-portal
Supplier portal. Their pending quote and their orders, with goods partially received.
Respond

Accept or reject a quote, with a single response

  • Full quote at a glance: lines, subtotal, taxes, total and terms.
  • Accept or reject: whoever sent it receives a notice and the response cannot be changed afterwards.
  • Upload invoice and delivery note: when an order follows a flow that asks for them, the supplier uploads them at the step that is theirs, with the required documents marked, and approves or rejects with a comment.
  • The invoice goes straight into Accounts payable (optional setting), ready to be matched.
supplier-portal/quotation
Quote. The supplier accepts or rejects it from here.
Bastino in the portal

Ask instead of searching

  • With Bastino enabled, the supplier asks about "my orders", "my quotes" and "my pending steps" in a conversation.
  • They can upload from the chat the invoice, the delivery note or whatever their step asks for, through the same route as the portal.
  • They only see what is theirs, and their uploads follow the same route as the portal.
supplier-portal/order
Order in the portal. The same as your team sees, minus what is internal.
Accounts payable

Pay for what you ordered and what you received, not a peso more

The supplier invoice hangs from the order, the supplier and the portal. It is matched automatically against what was ordered and received, and what doesn't add up is resolved with its reason before paying.

Board

What you owe, what is due and what needs attention

  • Pending payment and overdue, invoices with exceptions, first-time match rate and early-payment discounts captured or lost.
  • Curve of payments falling due per week, with what is already approved for payment shown separately.
  • "Needs attention": those blocked before approval and what is due soon, with their path and a button to go and resolve.
  • Inbox, exceptions, approvals, payment runs and audit, one click away from the tabs.
admin/purchase/payables
Accounts payable. Eleven pending invoices, six open exceptions.
Inbox

All invoices, by status and with their next step

  • Entry however suits you: by uploading the XML (CFDI), which fills in number, date, UUID, RFC and lines and picks the supplier by their RFC; by hand; through the API; with Bastino; or by itself from the portal.
  • Distribution bar by status (with exception, matched, held, in approval, in payment run, paid, rejected), supplier, age and early payment.
  • Next step on every row: "Resolve 1", "Send for approval", "Payment run of 10 Nov 2026".
  • Duplicates: flagged on entry by UUID, number and same amount from the same supplier, only against earlier ones.
  • Search, selection to build a payment run and export of everything or of the selection.
admin/purchase/supplier-invoices
Invoice inbox. Fifteen invoices in every status.
Three-way reconciliation

Order, receipt and invoice, side by side, line by line

  • Every invoice line is compared with the order price and with the quantity the warehouse actually received.
  • Exceptions with their reason: price, quantity, no receipt, line not on the order, total that doesn't add up, no order, duplicate, CFDI not found, different or cancelled.
  • Versioned tolerances (price, quantity, total and amount) adjusted in Settings: every change is a version of the rule, with its history.
  • Resolve with a mandatory reason: pay at the order price, pay what was received, accept what was invoiced, correct and request a credit note, remove the line. What was printed is never touched: the correction is a working copy.
admin/purchase/supplier-invoice/174
Reconciliation. The supplier invoiced 400 and the warehouse received 250: an exception that blocks approval.
Exceptions

The queue of what doesn't match, earliest due first

  • By reason and by supplier, with what was expected, what was invoiced and the difference in amount and percentage.
  • They block approval until someone resolves them, leaving their reason.
  • When goods are received again in Warehouse, the invoice is matched again automatically.
admin/purchase/invoice-exceptions
Exceptions queue. Six open exceptions across five invoices.
Approval

By amount tiers, and nobody approves what they submitted

  • Up to three tiers with their maximum amount and the roles that approve; the last one takes everything else.
  • Four eyes, administrators too: whoever enters or submits an invoice cannot approve it. It is a control, and configurable.
  • Automatic approval below an amount for invoices matched first time, and a notice to the approver.
  • Queues per tier with the selected invoice in view, time to approval and the chart of who approves each amount.
admin/purchase/invoice-approvals
Invoice approval. Two invoices waiting for an approver.
Payment runs

Group, close, export and mark as paid

  • Payment runs with a closing day and time (by default, Tuesdays and Thursdays, closed the day before at 09:00) or invoices picked by hand in the planner.
  • Early payment: the discount is calculated according to the payment run date, and you can see what was captured and what was lost.
  • Bank file in CSV, with extendable columns for the format your bank requires.
  • Mark as paid with its reference: each invoice becomes paid and the payment is recorded on the order, never exceeding what is outstanding.
  • The payment run does not move money: it prepares the file and records what was paid. You make the payment at your bank.
admin/purchase/payment-runs
Payment runs. One open with two invoices and one paid with its reference.
Audit

An append-only history that can be verified

  • Every status change writes exactly one event, per day or per invoice, with filters by type and by person.
  • Replay check: replaying each invoice's history produces the same status it has today, and events are chained by hash.
  • CSV export with the hashes, for those who audit outside.
To integrate

API, Bastino and events

  • REST API for supplier invoices, also to decide on them.
  • Bastino queries invoices and, with a confirmation card, records them, resolves exceptions, decides, schedules payment runs and changes their status.
  • Platform events for invoice received, approved and paid, for webhooks and automations.

Screenshots of the system with fictitious sample data, with no data from any customer.

Warehouse

Every item that comes in, goes out or moves, with its document

Stock is never edited by hand: the kardex moves it when a document is confirmed. That is why what you see always has a reason, a date and a person behind it.

Board

Warehouse value and what needs attention

  • Warehouse value at average cost, items in stock, those below the minimum and those about to expire.
  • Latest movements with their document, item, warehouse and signed quantity.
  • Value per warehouse and the "below minimum" list with what is on hand and what there should be.
  • Receipt, issue and stock one click away, from the buttons at the top.
admin/warehouse/dashboard
Warehouse dashboard. Three warehouses and 23 sample items.
Warehouses and locations

One, three or twenty warehouses, each with its own stuff

  • Warehouses with code, address and order, and locations within each: aisles, shelves or cold rooms.
  • Items with stock and value for each warehouse in the list.
  • A warehouse with movements is not deleted: it is hidden. The history is kept.
admin/warehouse/warehouses
Warehouses. Naucalpan, Apodaca and Tijuana, with their value.
Receipts

Receive an order, and let the order know

  • Receipt from the order: its lines come pre-filled, and it is marked "from an order".
  • Draft, confirm, cancel: nothing moves until you confirm. Once confirmed it cannot be edited: it is cancelled with reversing movements.
  • On confirming, the order becomes "partially received" or "received", and the invoice that was waiting for it is matched again.
  • Reason, reference (supplier delivery note) and remarks on every document, plus who created and confirmed it, and when.
admin/warehouse/documents/in
Receipt. Reception of an order: it has already moved stock and is not rewritten.
Real-time stock

What there is, where it is and what it is worth

Every confirmation writes the kardex and updates that warehouse's stock instantly. No month-end closings to know what you are counting with.

Stock

By warehouse, location, lot and expiry

  • Stock per item and warehouse, with location, lot, expiry, quantity, average cost and value.
  • Below minimum: the minimum is set per item and warehouse, and the list says how much there is and how much there should be.
  • About to expire with the days of advance notice you choose, so that what expires first goes out first.
  • Lot and expiry tracking item by item, or enabled by default for new ones.
  • Filters by warehouse and category and table search; count and adjustment one click away.
admin/warehouse/stock
Stock. Fifty-one records per item and warehouse, with the footer "Showing 1–10 of 51".
Items

The item record tells its story

  • Total stock, average cost and value, with stock per warehouse against its minimum.
  • Latest kardex movements, with their document, and the full kardex on the record.
  • What to look at: out of stock, below minimum or without a price, with the next step ("New receipt") spelled out.
  • Units, categories, barcode, SKU and prices; quick add and your own catalogs.
  • Stock and average cost are never changed by hand: the kardex moves them.
admin/warehouse/items
Item. Stock per warehouse against its minimum, and the latest movements.
Everything that moves stock

Transfers, adjustments, write-offs and physical inventory

Five document types, the same cycle: draft, confirm, cancel with reversing movements.

admin/warehouse/documents/transfer
Transfers. From one warehouse to another, with their cost.
admin/warehouse/documents/adjust
Adjustments and write-offs. With their reason and their value.
admin/warehouse/documents/count
Physical inventory. You count and the difference is written.
Suppliers

Each supplier's record, with everything you buy and what you owe them

The Suppliers module is what supports Purchasing: who they are, who you talk to and how the relationship is going.

  • Relationship dashboard: active and inactive suppliers, new ones per month, breakdown by group and by rating, without a contact or without a tax ID.
  • Tabbed record with general data, addresses, commercial data (rating, payment days), classification into groups and custom fields.
  • Contacts with a primary one, and the portal access of each, with password and second factor.
  • The record shows data from other modules (such as their invoices to pay), and the payment days on the record take precedence over those on their invoices.
  • Required fields you decide, REST API and export.
admin/suppliers/dashboard
Suppliers. Nine sample suppliers and eleven contacts.
Connected to the rest

Not an island: Purchasing, Warehouse and your platform talk to each other

Each module notifies the others through events, without writing to their tables.

Warehouse ↔ Purchasing

Confirming a receipt for an order leaves it partially received or received, and matches again the invoice that was waiting for it.

Workflows

Purchase orders follow approval flows by amount, with steps that belong to the supplier from their portal.

Fiscal

With the Fiscal module, every invoice looks up its CFDI and warns if it is not found, is different or is cancelled. Without it, no lookup is done.

Notifications

Notices for contracts about to expire, invoices awaiting approval, stock below minimum and lots about to expire, through the channel each person chooses.

Bastino

Queries and, with a confirmation card, approves or rejects purchases, changes data, records and decides on invoices, schedules payment runs, and confirms or cancels warehouse documents.

API, webhooks and automations

REST API for invoices, stock and warehouse documents, and platform events for invoice received, approved and paid.

Storage

Attachments for orders, invoices, PDF and XML go to the storage you have configured, with the same download rules.

Scheduled tasks

One task checks invoices, another checks stock below minimum and lots about to expire, with the intervals you set.

Export and plans

Invoices and lists go out through Export, and each module is activated separately.

Stated plainly

What it does and what it doesn't

Better to know before you sign up than to find out afterwards.

Designed with control in mind

Money and stock with real controls

  • Fine-grained, per-screen permissions: view, create, edit, delete, approve and pay, separately, for Purchasing, Warehouse and Accounts payable.
  • Four eyes on invoices, and confirming a warehouse document is a different permission from creating it.
  • What was printed is never touched and corrections leave their trail; the invoice history is append-only.
  • Bastino never decides alone: every action asks for a confirmation card and re-checks your permissions when you accept it.
What you need to know

What it does not include yet

  • It has no automatic comparison table for quotes from several suppliers: they are compared in the list.
  • Invoices do not read PDFs (no OCR): only the XML. There is no supplier bank data and no specific bank format: the payment run file is a generic, extendable CSV.
  • Invoices are in the base currency, no multi-currency. The payment complement (REP) and bank reconciliation live in other modules.
  • A paid invoice does not create an expense on its own, to avoid duplicating the entry that Fiscal already posts.
  • In Warehouse, there are no brands or sizes and automatic issue from a sales invoice does not come as standard; issues are made with their document.
  • A new installation starts with no approval flows defined: you build them to suit you.
Frequently asked questions

What we are usually asked

Can the supplier upload their invoice from the portal?

Yes. When an order follows a flow that asks the supplier for documents, they upload them from their portal (the invoice, the delivery note or whatever the step asks for) and the invoice goes straight into Accounts payable, where it is matched against the order and the receipt.

Does the warehouse update when I receive an order?

Yes. The receipt is an inbound document linked to the order. When you confirm it, stock is updated and the order becomes partially received or received, comparing what was ordered with what was received. If Warehouse is not active, the goods status is changed by hand on the order.

What happens if the supplier invoices more than we received?

The line becomes an exception ("quantity" or "no receipt"), with what was expected, what was invoiced and the difference, and the invoice cannot be approved until it is resolved with a reason: pay what was received, accept what was invoiced, correct and request a credit note, or remove the line.

Does the system pay my suppliers?

It does not move money. The payment run prepares the bank file and records what was paid with its reference; the payment is made at your bank. If the invoice goes with an order, the payment is also recorded on the order.

Can I use Warehouse without Purchasing, or Purchasing without Warehouse?

Yes, they are separately installable modules. Without Warehouse, invoice matching is two-way (order and invoice) except for orders marked as received by hand. Without Purchasing, the warehouse works with its own receipts, issues and transfers.

Can stock be controlled by lot and expiry date?

Yes, item by item, or enabled by default for new ones. Stock is issued by lot and expiry, and a scheduled task warns of lots expiring within the number of days you set.

Is it sold separately?

Purchasing, Suppliers and Warehouse are installable Fisher Platform modules: you activate or deactivate them separately and, when deactivated, their screens disappear. Contact us and we will tell you what your plan includes.

See it with your own purchases

We load a data set similar to your operation and walk through the cycle together: from order to receipt, from invoice to payment run.

About the screenshots and the data

The screenshots come from a demo environment with fictitious suppliers, items, orders, invoices and warehouse movements; no data corresponds to a real customer and no notice or email was sent. What you see depends on the active modules and on each person's permissions.

View plans