# Welcome

Take charge of your hardware financial operations with Hardfin

Hardfin is the software platform that modern hardware companies use to track assets and sales programs with recurring components. These are often hardware subscriptions — usually *hardware-as-a-service (HaaS)* or *hardware-enabled SaaS* agreements.

We help equipment-based businesses track assets, manage projects, and run reporting in order to automate processes for the operations and finance teams. If your business has (1) a hardware component and (2) a recurring component, then we can help.

<figure><img src="/files/bwwwjOLugBVOsAnsl6UN" alt=""><figcaption><p>Components for a modern hardware business</p></figcaption></figure>

Some of our customers sell assets outright, some lease or rent the equipment, and some provide devices "free" as part of a broader commercial program. All of our customers offer recurring solutions such as services and software.

To manage these challenges, the Hardfin platform is focused on asset operations and project management. Our specialized software enables advanced reporting on device fleets through streamlined import/export and automated connections to data sources. All in service of team members being able to track every project, every asset, every day.

{% hint style="success" %}
Hardfin helps businesses significantly improve performance through more streamlined operations — leading to more revenue and driving assets to cash faster.
{% endhint %}


# Getting started

Hardfin is the platform modern hardware companies use to generate better reporting by streamlining project and hardware management.

There are two quick options to get started based on your needs.

## Choose your setup

Most users can complete basic setup from scratch in 5–10 minutes, while a fuller data import typically takes 30–60 minutes.

### [Start from scratch in 5 minutes](/getting-started/start-from-scratch-in-5-min) →

Perfect for new businesses or those starting fresh with asset tracking. Follow our [quick setup guide](#set-up-from-scratch-in-5-minutes) to create your organization, add your first customer, and start tracking assets immediately.

### [Start with existing data in 30 minutes](/getting-started/start-with-existing-data-in-30-min) →

Already managing assets in other systems? Use our [import and integration guide](#set-up-with-existing-data-in-30-minutes) to bring in your existing customer data, product information, and asset records from a spreadsheet, CRM, ERP, or other system.

{% hint style="info" %}
*If you have more advanced data, import, integration, or workflow needs, please* [*contact our sales team*](mailto:sales@hardfin.com?subject=Inquiry%20about%20Hardfin%20setup\&body=Hello%20-%20I%20am%20interested%20in%20setting%20up%20Hardfin%20and%20have%20questions%20about%20more%20advanced%20data%2C%20import%2C%20integration%2C%20or%20workflow%20needs.%0A%0ACan%20we%20schedule%20time%20to%20talk%3F%0A%0AThanks!) *to discuss custom implementations.*
{% endhint %}

## What to expect

* Simple, guided setup process
* Clear, step-by-step instructions
* Support for common integrations

{% hint style="info" %}
Need help along the way? Our team is here to support you. [Reach out to us](mailto:support@hardfin.com?subject=Getting%20started%20with%20Hardfin\&body=Hello%20-%20I%20am%20trying%20to%20set%20up%20Hardfin%20and%20have%20questions%20about%20getting%20started.%0A%0ACan%20we%20schedule%20time%20to%20talk%3F%0A%0AThanks!) if you have specific questions about getting started with Hardfin.
{% endhint %}


# Start from scratch in 5 min

Set up a new Hardfin organization from scratch in 5–10 minutes.

## Quick setup guide

A step-by-step guide to setting up your organization[^1] in the Hardfin platform.

### 1. Create your organization account

* [ ] [Sign in to Hardfin](https://assets.hardfin.com/) using your business email
* [ ] [Add basic information](/manage-your-account/organization) in your organization profile

### 2. Set up a customer

* [ ] [Create company records](/set-up-the-basics/companies#create-a-company) for your customers
* [ ] [Add essential information](#id-2.-set-up-a-customer) customer information (such as billing info)

### 3. Define a location

* [ ] [Set up an inventory location](/set-up-the-basics/locations#create-a-location) (such as warehouse or distribution center)
* [ ] [Set up a field location](https://guide.hardfin.com/getting-started/pages/ZXFt659q54cHYFv2C3MS#inventory-vs.-non-inventory) (such as R\&D facility or customer site)

### 4. Add a product and asset

* [ ] [Add an item](/set-up-the-basics/items#create-an-item) for your primary hardware
* [ ] [Add your first asset](/run-your-business/assets#create-an-asset) (enter serial number and inventory date)

### 5. Create a project

* [ ] [Create a project](/run-your-business/projects#create-a-project)
* [ ] [Specify details](/run-your-business/projects#edit-core-project-information) such as dates, customer, and locations

## Next steps

You're tracking with Hardfin!

* [Invite team members](mailto:?subject=Log%20in%20to%20Hardfin\&body=Hi%20team%20-%20I've%20set%20up%20Hardfin%20so%20we%20can%20manage%20our%20assets%20and%20projects%20in%20one%20place.%0A%0APlease%20log%20in%20when%20you%20have%20a%20chance%3A%20https%3A%2F%2Fassets.hardfin.com%0A%0AYou%20can%20find%20the%20user%20guide%20here%3A%20https%3A%2F%2Fguide.hardfin.com%2F%0A%0AThanks!) who need platform access
* [Continue adding data](/run-your-business/assets#bulk-creation) via batch or individual entry

{% hint style="info" %}
Need help along the way? Our team is here to support you. [Reach out to us](mailto:support@hardfin.com?subject=Getting%20started%20with%20Hardfin\&body=Hello%20-%20I%20am%20trying%20to%20set%20up%20Hardfin%20and%20have%20questions%20about%20getting%20started.%0A%0ACan%20we%20schedule%20time%20to%20talk%3F%0A%0AThanks!) if you have specific questions about getting started with Hardfin.
{% endhint %}

### Also consider exploring

<details>

<summary>Asset operations and project management</summary>

* [Asset movement](/run-your-business/assets#move-an-asset-change-an-assets-location) (manage asset logistics)
* [Project assignment](/run-your-business/projects#asset-assignment) (link assets to the project)

</details>

<details>

<summary>Advanced asset capabilities</summary>

* [Asset metadata](/run-your-business/assets#asset-metadata) (manage custom data fields)
* [Asset files and links](/run-your-business/assets#manage-asset-files-and-links) (upload serial records)
* [Asset accounting information](/run-your-business/assets#manage-asset-accounting-details) (enter costing for depreciation)

</details>

<details>

<summary>Advanced project capabilities</summary>

* [Product details for a project](/run-your-business/projects#adding-or-editing-product-details) (record line items)
* [Project files and links](/run-your-business/projects#manage-project-files-and-links) (upload contract files)
* [Project costs](/run-your-business/projects#manage-project-costs) (track billable and non-billable details)

</details>

*Looking to import existing data instead? Check out our* [*30-minute setup guide for working with existing systems*](/getting-started/start-with-existing-data-in-30-min)*.*

[^1]: Your company is an "organization" in Hardfin


# Start with existing data in 30 min

Set up a new Hardfin organization by import and integrating data in 30–60 minutes.

## Quick setup guide

A step-by-step guide to migrate existing data into Hardfin through our import tools and integrations.

### Prerequisites

* Basic information about your organization
* Your business data in one or more of:
  * Spreadsheets tracking asset deployments
  * Task management software recording projects
  * CRM system (HubSpot or Salesforce)
  * Exportable ERP/accounting data (such as QuickBooks Online or NetSuite)
* Access to data in these systems

### 1. Create your organization (5 minutes)

* [ ] [Sign in to Hardfin](https://assets.hardfin.com/) using your business email
* [ ] [Add basic information](/manage-your-account/organization) in your organization profile
* [ ] [Invite team members](mailto:?subject=Log%20in%20to%20Hardfin\&body=Hi%20team%20-%20I've%20set%20up%20Hardfin%20so%20we%20can%20manage%20our%20assets%20and%20projects%20in%20one%20place.%0A%0APlease%20log%20in%20when%20you%20have%20a%20chance%3A%20https%3A%2F%2Fassets.hardfin.com%0A%0AYou%20can%20find%20the%20user%20guide%20here%3A%20https%3A%2F%2Fguide.hardfin.com%2F%0A%0AThanks!) who can support platform onboarding

### 2. Import base data (10 minutes)

* [ ] Export your relevant data from other platforms
  * [ ] Customer data
  * [ ] Location data
  * [ ] Product data
  * [ ] Asset data
* [ ] Verify data and set up your import file
* [ ] Import data into Hardfin

### 3. Connect CRM system (10 minutes)

* [ ] Authorize your CRM system (HubSpot or Salesforce)
* [ ] Map your data fields for Customers[^1] and Projects[^2]
* [ ] Complete your first data sync

### 4. Verify your setup (5 minutes)

* [ ] Review imported data records
  * [ ] Locations
  * [ ] Products
  * [ ] Assets
* [ ] Validate CRM sync by updating a Customer record
* [ ] [Confirm project list](/run-your-business/projects#list-all-projects) includes relevant items

## Next steps

You're tracking with Hardfin!

* [Invite team members](mailto:?subject=Log%20in%20to%20Hardfin\&body=Hi%20team%20-%20I've%20set%20up%20Hardfin%20so%20we%20can%20manage%20our%20assets%20and%20projects%20in%20one%20place.%0A%0APlease%20log%20in%20when%20you%20have%20a%20chance%3A%20https%3A%2F%2Fassets.hardfin.com%0A%0AYou%20can%20find%20the%20user%20guide%20here%3A%20https%3A%2F%2Fguide.hardfin.com%2F%0A%0AThanks!) who need platform access
* [Set up a sandbox](/advanced-options/sandbox) for integration testing

{% hint style="info" %}
Need help along the way? Our team is here to support you. [Reach out to us](mailto:support@hardfin.com?subject=Getting%20started%20with%20Hardfin\&body=Hello%20-%20I%20am%20trying%20to%20set%20up%20Hardfin%20and%20have%20questions%20about%20getting%20started.%0A%0ACan%20we%20schedule%20time%20to%20talk%3F%0A%0AThanks!) if you have specific questions about getting started with Hardfin.
{% endhint %}

### Also consider exploring

<details>

<summary>Asset operations and project management</summary>

* [Asset movement](/run-your-business/assets#move-an-asset-change-an-assets-location) (manage asset logistics)
* [Project assignment](/run-your-business/projects#asset-assignment) (link assets to the project)

</details>

<details>

<summary>Advanced asset capabilities</summary>

* [Asset metadata](/run-your-business/assets#asset-metadata) (manage custom data fields)
* [Asset files and links](/run-your-business/assets#manage-asset-files-and-links) (upload serial records)
* [Asset accounting information](/run-your-business/assets#manage-asset-accounting-details) (enter costing for depreciation)

</details>

<details>

<summary>Advanced project capabilities</summary>

* [Product details for a project](/run-your-business/projects#adding-or-editing-product-details) (record line items)
* [Project files and links](/run-your-business/projects#manage-project-files-and-links) (upload contract files)
* [Project costs](/run-your-business/projects#manage-project-costs) (track billable and non-billable details)

</details>

## Common questions

#### What happens to my existing data?

Your data in connected systems remains unchanged. Hardfin creates a synchronized copy of relevant information.

#### Can I import partial data?

Yes, you can choose which data to import from each system. You can always add more data later.

#### What if I need to modify imported data?

Once imported, you can edit any information directly in Hardfin. Changes won't affect your original systems.

#### What if I have custom fields?

Hardfin supports custom field mapping during import. Contact us if you need help with specific custom fields.

[^1]: In Hardfin, Customers are a company that your organization works with:

    * HubSpot refers to these as *Companies*
    * Salesforce refers to these as *Accounts*

[^2]: In Hardfin, Projects are a commercial activity that your organization works on:

    * HubSpot refers to these as *Deals*
    * Salesforce refers to these as *Opportunities*


# Best practices getting started

### Organization Account Best Practices

* Keep your organization name consistent with legal documents
* Create a standardized naming convention for user accounts
* Assign at least two admin-level users for backup
* Document your permission structure for different user roles
* Keep your team member list updated as people join or leave

### Customer Profile Best Practices

* Use consistent naming conventions across all customers
* Include key contact information for multiple stakeholders
* Document any special handling requirements or preferences
* Maintain standardized fields across all customer profiles
* Keep billing and shipping information separate and clearly labeled
* Update CRM integrations regularly to ensure data accuracy

### Location Management Best Practices

* Create a clear location naming system (e.g., "LAX-WH1" for Los Angeles Warehouse 1)
* Document all access requirements and restrictions
* Include both primary and backup contact information
* Maintain updated photos or layouts of each location
* Set up clear hierarchies for multi-level locations
* Keep location capacity information current
* Tag locations with relevant attributes (climate-controlled, secure access, etc.)

### Product Setup Best Practices

* Use consistent product naming conventions
* Include detailed specifications for each asset type
* Document all tracking requirements clearly
* Set up meaningful categories and tags for easy filtering
* Include photos or diagrams when possible
* Maintain version control for product updates
* Link related products or accessories together

### Project Management Best Practices

* Create clear project naming conventions (e.g., "CustomerName-ProjectType-Date")
* Set realistic timelines for hardware deployments
* Document all customer-specific requirements
* Keep asset assignment records updated
* Maintain clear communication channels for each project
* Set up regular check-in points for long-term projects
* Create standard templates for common project types

### Integration Best Practices

* Verify data accuracy after each integration setup
* Document any mapping between systems
* Set up regular sync schedules
* Monitor integration health regularly
* Keep API keys and credentials secure
* Maintain backup procedures for critical data
* Test integrations in a sandbox environment first

### General Tips for Success

* Regularly review and clean up inactive records
* Document any custom workflows or processes
* Keep an audit trail of major system changes
* Schedule regular data backups
* Train new users thoroughly on your conventions
* Review and update procedures quarterly
* Monitor system performance and usage patterns

Remember: Consistency in naming and organization is key to long-term success with Hardfin. Take the time to establish clear conventions at the start to save time and prevent confusion later.


# Navigation

The navigation bar appears at the top of every page in Hardfin. It provides quick access to dashboards, core workflows, reporting tools, global search, and your account settings, allowing you to move between tasks without losing context.

## Layout of the navigation bar

The navigation bar is organized into distinct regions from left to right:

* **Organization logo and name** - Clicking the logo or organization name takes you back to the [assets dashboard](/monitor-the-details/dashboards#assets-dashboard)
* **Main navigation sections** - Six top-level sections that group related features like setup, planning, tracking, and reporting
* **Subsection bar** - A secondary bar that appears below the main navigation when a section is active, showing shortcuts to key pages within that section
* **Global search** - An AI-powered search bar for quickly finding navigation pages, assets, customers, locations, and projects
* **User menu** - Your account avatar with access to settings, help resources, and sign out

<figure><img src="/files/Z9hjFlfqKSKQE9Znab4P" alt=""><figcaption><p>Navigation bar with global search</p></figcaption></figure>

## Main navigation sections

The main navigation is divided into six sections, each containing related subsections. Hovering over a section reveals a dropdown menu with descriptions of each subsection. Some subsections may display a "Coming soon" label indicating features that are not yet available.

<figure><img src="/files/p4UIZG3mm6huveLifKY5" alt=""><figcaption><p>Main navigation sections</p></figcaption></figure>

### Dashboards

The dashboards section provides summary views of your projects, assets, products, customers, and locations with real-time analytics.

* **Assets** - Overview of your complete asset fleet by product and location, with links to detailed [asset reports](/monitor-the-details/reporting/asset-reports)
* **Products** - Summary of active SKUs with performance and logistics trends by product line
* **Customers** - Customer accounts and activity metrics, including asset ownership patterns
* **Locations** - Geographic distribution of assets across inventory and non-inventory locations, including the interactive map view

<figure><img src="/files/4K1bSrZhpLbe2XG40RKD" alt="" width="375"><figcaption><p>Dashboards menu</p></figcaption></figure>

### Setup & configure

The setup and configure section is where you manage foundational data for your organization.

* **Product catalog** - Update product details, bill of materials (BOM) definitions, and pricing models
* **Customers** - Set up and manage customer accounts
* **Locations** - Configure inventory and non-inventory locations where assets are stored or deployed

<figure><img src="/files/yc9KOvAydVomX2YKKDWX" alt="" width="375"><figcaption><p>Setup &#x26; configure menu</p></figcaption></figure>

### Plan & deploy

The plan and deploy section helps you prepare for and execute asset deployments.

* **Upcoming projects** - Review projects that are scheduled to start, including timelines and deliverables
* **Available assets** - Track assets in inventory that are ready to be deployed
* **Fulfillment** - Review fulfillment statuses of projects and line items to ensure assets are assigned correctly
* **Assets in transit to field** - Monitor assets currently being shipped to customer locations

<figure><img src="/files/kr2lvtsOmWPOF9aYKwJg" alt="" width="375"><figcaption><p>Plan &#x26; deploy menu</p></figcaption></figure>

### Track & manage

The track and manage section is for monitoring active operations and recording time and costs.

* **Active projects** - Review projects currently in progress, including timelines and deliverables
* **Deployed assets** - Monitor assets currently deployed in the field at customer locations
* **Time tracking** - Enter, update, and analyze hours spent on project and asset activity
* **Cost tracking** - Enter, update, and analyze costs associated with project and asset activity

<figure><img src="/files/6FR1PRjgilSMAWORXjHj" alt="" width="375"><figcaption><p>Track &#x26; manage menu</p></figcaption></figure>

### Support & repair

The support and repair section handles field issues and asset returns.

* **Tickets** - Record and resolve field issues, support requests, or action items
* **Assets returning to stock** - Monitor assets in transit back to inventory locations

<figure><img src="/files/nvyNycbDbRpcmS69dqQA" alt="" width="375"><figcaption><p>Support &#x26; repair menu</p></figcaption></figure>

### Bill & report

The bill and report section provides tools for billing management, accounting, and operational reporting.

* **Billing** - Manage billing periods and update payment history for your projects
* **Accounting** - Manage accounting periods, review journal entries, and perform monthly close processes
* **Reporting** - Run operational and financial performance reports across assets, projects, and billing
* **Audit logs** - Maintain compliance with full system change history tracking

<figure><img src="/files/aKN69W20NpZXiKJQFyM0" alt="" width="375"><figcaption><p>Bill &#x26; report menu</p></figcaption></figure>

## Subsection bar

When you select a main navigation section, a secondary bar appears directly beneath the navigation. This subsection bar displays the key pages for that section with icons and labels, making it easy to navigate between related features without returning to the dropdown menu.

The subsection bar highlights the page you are currently viewing. On smaller screens, the subsection bar is hidden and its functionality is incorporated into the mobile navigation menu.

<figure><img src="/files/UqIsLWdxjr9fuWpM6uvG" alt="" width="563"><figcaption><p>Example: the "Assets" subsection on the "Dashboard" bar</p></figcaption></figure>

## Global search

The global search bar in the navigation provides quick access to any area of the application. You can click the search bar or use the keyboard shortcut:

* **Mac**: Command + K (Cmd+K)
* **Windows/Linux**: Control + K (Ctrl+K)

<figure><img src="/files/rbt12KrWx8nFtLja40Ja" alt="" width="327"><figcaption><p>Global search bar</p></figcaption></figure>

[Global search](/monitor-the-details/search) uses Hardfin AI to search across navigation pages, assets, customers, locations, and projects. As you type, results appear organized by category, and you can use the arrow keys to navigate and Enter to select a result.

<figure><img src="/files/GHgXxMEUeZfMGgLKxLjx" alt="" width="375"><figcaption><p>Example global search results</p></figcaption></figure>

{% hint style="success" %}
Global search is the fastest way to navigate when you know the name, serial number, or project code you're looking for. For detailed information about search capabilities and filters, see [Search](/monitor-the-details/search).
{% endhint %}

## User menu

The user menu is accessed by clicking your avatar in the top right corner of the navigation bar. It displays your name and email, and provides access to account settings, help resources, and sign out.

<figure><img src="/files/lKDHRa9qCBTSIIFpoVrc" alt="" width="328"><figcaption><p>User menu</p></figcaption></figure>

### Administration

The administration section of the user menu provides access to:

* **User account** - Manage your personal profile, password, and notification preferences. See [Account](/manage-your-account/account) for details.
* **Organization settings** - Configure organization-wide settings including branding, workflows, and user management. See [Organization](/manage-your-account/organization) for details.
* **Integrations** - Set up and manage connections to CRM systems and other external tools. See [Integrations](/manage-your-account/integrations) for details.
* **Environment** - Switch between production and sandbox environments if your organization has multiple environments configured. See [Sandbox](/advanced-options/sandbox) for details.

### Help and documentation

The help section provides quick links to:

* **User guide** - Opens this documentation site in a new tab
* **API docs** - Opens the Hardfin API documentation for developers
* **Contact support** - Opens an email to the Hardfin support team

### Sign out

Click "Sign out" to end your session and return to the login page.

## Mobile navigation

On smaller screens, the navigation bar adapts to provide a mobile-friendly experience:

* **Menu button** - A menu icon appears on the left side of the navigation bar. Tapping it opens a side drawer that lists all main sections and their subsections with icons and descriptions.
* **Global search** - The search bar is replaced by a magnifying glass icon. Tapping it opens a full-width search overlay where you can type your query and view results.
* **User menu** - The avatar and user menu remain accessible in the top right corner.

{% hint style="info" %}
On mobile devices, use global search to quickly navigate to specific records or pages instead of browsing through the menu hierarchy.
{% endhint %}

## Tips for navigating efficiently

* **Use dashboards** for a high-level overview before drilling into specific records
* **Use the subsection bar** to quickly switch between related pages within a section
* **Use global search** when you know the name, serial number, or project code you're looking for
* **Use filtered views** like "Upcoming projects" or "Available assets" from the Plan & deploy section instead of manually filtering generic lists
* **Confirm your environment** in the user menu before making changes to ensure you're working in production or sandbox as intended


# Core modules

<figure><img src="/files/VTEBa8tYi9PKpiNVUSQz" alt=""><figcaption><p>Hardfin module overview</p></figcaption></figure>

Hardfin offers **three integrated modules** focused on the three key phases of a hardware-as-a-service (HaaS) program:

* **Supply chain:** pre-sale preparation
  * Assets - parts inventory tracking, building assemblies, asset completion
  * Project - CRM deal sync, line item planning, and solution pricing
* **Business operations:** deal execution
  * Assets - finished goods inventory and logistics management
  * Projects - project management, task tracking, and deployment coordination
* **Field and service:** ongoing value delivery
  * Assets - asset monitoring, status management, and field service
  * Projects - support for customer success operations

Naturally, *assets can also repeat their lifecycle journey* through returns and repairs. And *projects can also renew their management* through subscription extension or expansion.

{% hint style="success" %}
Hardfin is designed as a **suite** of tools to work together. All modules are available to all customers. However, organizations do not have utilize all the capabilities from every module in order to take advantage of Hardfin.
{% endhint %}

For more information about how Hardfin modules work together for operations and finance, see [Bridging operations and finance](/bridging-operations-and-finance).


# Bridging operations and finance

Hardfin is an **operational system** that tracks the complete lifecycle of every asset from inception to disposal in **real-time**. This approach differs from traditional **accounting ledger systems** that organize financial data into **discrete periods of time**. Understanding this distinction helps you use Hardfin effectively and integrate operations data properly into your finance workflows.

{% hint style="success" %}
**Did you know?** Hardfin is specifically designed to bridge the gap between operations (real-time) and accounting (period-based).
{% endhint %}

## Two worlds, two clocks

A hardware-as-a-service (HaaS) business needs to operate on two different systems simultaneously:

| Dimension        | Hardfin "real time" operations (subledger)          | Accounting "fixed period" (general ledger)                 |
| ---------------- | --------------------------------------------------- | ---------------------------------------------------------- |
| Time concept     | Continuous, life-to-date (every asset from day one) | Fiscal periods (month / year buckets)                      |
| Data stored      | All transactions since inception                    | Net movements per period; income/expense reset each period |
| Lock meaning     | “Everything up to this date is reconciled.”         | “This fiscal period is closed and totals won't change.”    |
| Primary users    | Operations, project managers, field teams           | Finance, accounting, auditors                              |
| Update frequency | Real-time as events happen                          | Period-end close (monthly, quarterly, annually)            |
| Historical view  | Complete transaction history always accessible      | Prior periods closed and summarized                        |

## Real-time operational tracking

Hardfin maintains a **complete, cumulative view** of your business operations. When you look at asset data or project information in Hardfin, you're seeing:

* **Life-to-date history**: Every asset tracked from the moment it enters inventory, through deployment, service, and eventual disposal
* **Continuous timeline**: No artificial breaks between reporting periods—just one unbroken record of what happened when
* **Point-in-time queries**: The ability to ask “what did my inventory look like on March 15th?”
* **Always additive**: New information extends or adjusts the historical record without disrupting data

This operational approach especially serves teams who need to **answer questions about physical reality**: Where is asset #12345 right now? Which projects have deployments scheduled for next week? How many units do we have in inventory at each warehouse location?

### Why real-time matters for operations

Hardware-as-a-service businesses face unique operational challenges:

* **Assets move constantly** between warehouses, customer sites, service depots, and return facilities
* **Project timelines shift** based on supply chain delays, installation schedules, and customer readiness
* **Service obligations vary** based on knowing precisely which equipment is deployed where and under what terms
* **Billing is dependent** on tracking the exact dates assets were assigned to customer projects

{% hint style="info" %}
Traditional monthly accounting close cycles don't provide the responsiveness operations teams need. A field technician can't wait until month-end close to know which spare parts are available. A project manager needs real-time visibility into asset fulfillment status to coordinate installations. The world can't stop turning if an asset is shipped on December 31, but the shipment isn't recorded until January 1.
{% endhint %}

## Accounting period locks

The accounting system, by contrast, organizes financial data into **discrete fiscal periods** (typically months, quarters, and years). This structure serves a different purpose:

* **Period boundaries**: Clear start and end dates defining when transactions belong to each reporting period
* **Close process**: A formal procedure that locks a period once all transactions are recorded and reconciled
* **Financial statements**: Income statements and cash flow reports that reset each period
* **Balance sheets**: Point-in-time snapshots showing cumulative assets, liabilities, and equity

Accounting periods enable **financial reporting and compliance**: producing consistent financial statements, filing tax returns, reporting to investors, and maintaining audit trails.

### Why periods matter for finance

Accounting period structures evolved to solve critical business needs:

* **Accrual accounting**: Matching revenue and expenses to the periods when they're earned or incurred, regardless of cash timing
* **Management accountability**: Evaluating business performance period-by-period to measure progress
* **Regulatory compliance**: Tax authorities and financial reporting standards require period-based reporting
* **Audit requirements**: Auditors need finalized, unchanging records to verify and certify

{% hint style="info" %}
Once an accounting period closes, the numbers don't (or shouldn't!) change. This stability provides confidence in financial reporting but conflicts with the continuous nature of operations. Traditional operational systems for asset tracking can't provide the level of certainty that a period-based accounting system can. Hardfin is specifically designed to bridge that gap.
{% endhint %}

## How they work together

Hardfin's **cumulative-to-date** operational view represents a similar view to your general ledger's **sum of all closed periods up to date**—just expressed differently. The key is understanding how the "right now" view for operations compares to the "locked" view for finance, and how to bridge between Hardfin's real-time operational view and your accounting system's period-based view.

### From operations to accounting

Hardfin doesn't enforce fiscal period boundaries the way a general ledger does. Your operational data in Hardfin is always shown in real-time, based on all the latest information entered in the system. This flow happens **continuously** in Hardfin as operational events occur, so that the operations team is always seeing the most up-to-date information.

Data will later flow into your accounting system through defined integration points:

* **Inventory movements** (shipments received, assemblies built, assets deployed) feed inventory accounting and cost basis calculations
* **Asset deployments and sales** trigger asset capitalization or cost of goods sold recognition

These events are cumulated in order to be exported to the accounting system when the period is closed.

### Reconciliation and period close

At period end, the two systems reconcile to ensure alignment:

* **Inventory reconciliation**: Hardfin's inventory counts as of period end should match your general ledger inventory balance
* **Asset value reconciliation**: Hardfin's asset snapshots for fixed assets should align with fixed asset balanced

Once reconciled, the accounting team **locks the period**. Hardfin stores the locked data in order to reconcile the next period. This **period review and approval** marks operational data as reviewed and confirmed:

* **“Everything up to this date is reconciled”** provides a reference point for financial reporting
* **Operations continue uninterrupted** even while historical data is marked as reconciled
* **Audit trail remains intact** so you can always see what happened and when
* **Future reconciliations build** on prior locked data, without reopening historical periods

Meanwhile, *Hardfin continues tracking operations in real-time without interruption*. This approach provides the best of both worlds: operations teams get the flexibility to track operations in real-time, while finance gets the stability they need for period close.

## Practical implications

Understanding these two worlds helps you use Hardfin more effectively:

### For operations teams

* **There are no periods**: Record asset movements, project updates, and time tracking as events happen
* **Trust real-time data**: Your current view in Hardfin reflects operational reality, not an outdated snapshot
* **Plan continuously**: Use Hardfin's real-time visibility to coordinate logistics, schedule installations, and manage inventory
* **Respond to change as needed**: Update project timelines, asset assignments, and resource allocation as conditions evolve

### For finance teams

* **Establish reconciliation cadence**: Decide how often to reconcile Hardfin data with the general ledger (monthly recommended)
* **Define integration points**: Set up your ledger accounts so Hardfin data feeds your GL appropriately
* **Use Hardfin exports**: Leverage Hardfin's reporting and export capabilities to extract period-specific data
* **Have confidence in audit trail**: Use the reconciliation process to retain records showing how operational data translates to financial entries

### For leadership

* **Two views, one truth**: Operations dashboards and financial statements may show different perspectives, but both accurately represent the business
* **Complementary insights**: Use Hardfin for operational metrics (unit counts, project timelines, deployment cycles) and accounting systems for financial metrics (gross margins, EBITDA)
* **Operational execution**: Being disciplined about entering operational data helps ensure that everyone is on the same page
* **Integration investment**: Properly connecting operational and financial systems reduces manual reconciliation work and improves data accuracy

## Best practices

To effectively bridge operational and accounting systems:

1. **Document your integration**: Clearly map which Hardfin accounts correspond to your general ledger accounts
2. **Reconcile regularly**: Monthly reconciliation reconciles discrepancies early before they compound
3. **Standardize timing**: Agree on when operational events should be recorded
4. **Train cross-functionally**: Help operations teams understand accounting requirements and finance teams understand operational realities

By respecting the different roles these systems play while ensuring they stay aligned, you get the best of both worlds: real-time operational visibility for execution, combined with reliable financial reporting for governance and compliance.


# Items

The **items catalog** is where you manage all the items your organization tracks in Hardfin. An item represents anything your business works with — whether it's a piece of equipment you deploy to customers, a service you offer, or a component you keep in inventory.

{% hint style="success" %}
**Item types**

Hardfin supports three types of items:

* **Tracked device** — A serialized item that becomes an asset when received or registered (e.g., equipment, devices, machines). Each unit is tracked individually with a unique serial number.
* **Service item** — A non-physical item such as software, a subscription, or a professional service. Service items do not have associated assets or inventory.
* **Bulk item** — A component tracked by quantity in inventory (e.g., parts, materials, fasteners). Bulk items can be used in assemblies and bills of materials.
  {% endhint %}

{% hint style="info" %}
**Understand item relationships**

A **tracked device** is usually *associated* with many **assets**, which correspond to all the assets of that item type. There can be many assets for a single tracked device, which helps to group assets. (Note: a single asset can belong to only one item type.)

For example: a single tracked device **Lawnmower** might be associated with many assets with serial numbers MOW-101, MOW-102, MOW-103, and so on.

A **bulk item** is *associated* with inventory, which tracks how many *units* of the item you have at each location. For example, you may have 100 units of bulk item LDR-4.1 in your Chicago warehouse.
{% endhint %}

## List all items

To see a list of all items, navigate to the [item catalog](https://assets.hardfin.com/items) under the "Setup & configure" menu.

The items catalog is a table with item SKUs, names, item type (tracked device, service item, or bulk item), and any associated assets (if applicable).

Use the **search** or **filter** options to refine the items catalog. You can also filter by item type using the tabs.

<figure><img src="/files/GXrzUUAw1EN7rquAp9Yf" alt=""><figcaption><p>Item catalog view</p></figcaption></figure>

### CRM integration status

If your organization has a CRM or ERP integration configured (such as Salesforce or NetSuite), the items table displays an integration column showing which items are linked to external systems. This column appears when items have integration links configured.

For linked items, clicking the integration indicator opens the corresponding record in the external system. This allows you to quickly verify integration status and access linked records directly from the items catalog.

#### Export items

You can export your items catalog to an Excel file by clicking the "Export" button on the items list page. The export includes multiple tabs:

* **Items** — All item data including SKUs, names, item types, and associated metadata
* **Accounting defaults** — Item accounting defaults including cost basis, useful life, salvage value, and advanced cost breakdown categories for each tracked device

The exported file can be used for reporting, analysis, or importing into other systems.

## View individual item details

To view the full details of an item, click the name of the item. The item details page will appear showing the item details.

<figure><img src="/files/E8dZoECatB727TrmEg3o" alt=""><figcaption><p>Item details page</p></figcaption></figure>

This page includes the item name, SKU, item type, and archive status. For tracked devices, it includes sections for [item fields](#item-fields), the [bill of materials](#define-bill-of-materials-bom), as well as all assets associated with this item:

<figure><img src="/files/fWN3c3zt5A1sjcQkgZJl" alt=""><figcaption><p>Item BOM example</p></figcaption></figure>

<figure><img src="/files/bZOqd3c6HR550f5fh6nW" alt=""><figcaption><p>Related assets for a tracked device</p></figcaption></figure>

Item details also include a full [audit log](/monitor-the-details/audit-log) of the changes made to the item over time.

## Create an item

To create an individual item, click the "Add item" button and a window will appear. Enter the item's name, an optional SKU, an optional description, and select the item type:

* **Tracked device** (such as equipment and devices) — serialized items that are tracked as assets
* **Service item** (such as software and services) — non-physical items without associated assets
* **Bulk item** (such as parts and materials) — components tracked by quantity in inventory

For tracked devices, you can also choose to record the bill of materials (BOM) if known.

<figure><img src="/files/snNc8WrReZuxxzsxKStf" alt="" width="375"><figcaption><p>"Add item" window</p></figcaption></figure>

**Name** and **SKU** are the only field required to create a new item. The **description** field allows you to add detailed information about the item, which is useful for distinguishing between similar items or providing additional context for your team. Bulk items allow selecting a *unit of measure* to track and report on different quantities.

#### SKU suggestions

When creating a new item, Hardfin suggests available SKUs based on your existing items catalog patterns. As you type in the SKU field, suggestions appear that follow your organization's naming conventions. This helps maintain consistent SKU formats across your items catalog.

#### Bulk creation

To import items in bulk, you can use the **CSV uploader** to create or update multiple items at once. Click the menu icon in the items catalog and select "Import items" to access the uploader.

The CSV uploader workflow includes:

1. **Download template**: Download a CSV template with the required columns and formatting
2. **Prepare your data**: Fill in the template with your item information (name, SKU, description, type, and other fields)
3. **Upload and validate**: Upload your CSV file and review any validation errors
4. **Review results**: See which items were created or updated successfully

{% hint style="info" %}
The CSV uploader validates your data before importing. Any rows with errors will be highlighted so you can correct them before proceeding.
{% endhint %}

You can also import tracked devices by [uploading new assets](/run-your-business/assets#bulk-creation) with new item information, and items will be created automatically. Additionally, you can configure an [integration with a CRM or ERP](/manage-your-account/integrations) or use your own data by [setting up API access](/advanced-options/api-access). If you'd like to set up an integration with your CRM or ERP, please [contact support](mailto:support@hardfin.com).

## Edit an item

To edit an item, click the pencil icon ✏️  at the top right in the item details page. A window will appear to edit the item's **name**, **SKU**, and **description**.

#### Changing item type

You can change an item's type from **service item** to **tracked device** if needed. You can only change an item's type from **tracked device** to **service item** if there are no assets currently associated with the item.

To change the item type:

1. Navigate to the item details page
2. Click the edit icon next to the item type
3. Select the new type
4. Save your changes

If assets are already associated with a tracked device, you will not be able to change the item type to service item.

## Define bill of materials (BOM)

A tracked device may have a default **bill of materials (BOM)** defined by adding [bulk items](#bulk-items) to the item. This BOM definition is used to pre-populate the expected unit counts for each bulk item when building an [assembly](/source-and-build/assemblies).

<figure><img src="/files/63f8BtmQs74tTH8xaX4F" alt=""><figcaption><p>Edit item bill of materials (BOM)</p></figcaption></figure>

BOMs can be changed at any time and will only affect new assemblies that are built after the change.

## Archive an item

{% hint style="info" %}
[Archiving objects](#archive-an-item) hides the object from the list view and dropdown menus. The object can still be viewed in the list by selecting the "Archived" option. Archived objects still appear in dropdown menus when searched by name.
{% endhint %}

To archive an item that is not yet archived, click the 👁️‍🗨️ Archive button at the top right of the item details page. A small badge will appear on the item indicating that it has been *Archived*.

The item will now be visible in the items catalog only when "Include archived items" is selected.

<figure><img src="/files/NJJvM7TU0NWYnN0YblDY" alt=""><figcaption><p>Archived item view in the items catalog</p></figcaption></figure>

To unarchive an item that is already archived, open the item details page and select the 👁️‍🗨~~️~~ Unarchive button.

## Merge duplicate items

You can **merge items** to consolidate duplicates in your items catalog, helping maintain clean data and consistency.

Item merging is useful when you have:

* Duplicate entries with slightly different names or descriptions
* Items that represent the same physical item but were created separately
* Legacy items that should be consolidated with current entries

<figure><img src="/files/jPfC4d3y1wLnmmnM1Pwv" alt="" width="563"><figcaption><p>"Merge items" selector</p></figcaption></figure>

### How to merge items

To merge items:

1. Navigate to the item you want to keep as the primary item
2. Click the "Merge" 🔀 button in the top right near the **Archive** option
3. **Select item to merge**: Choose the duplicate item you want to merge into the primary item
4. **Select data fields to merge**: Review and select which data fields to keep from each item
   * Compare names, descriptions, and other attributes side by side
   * Choose the most accurate or complete information for each field
   * Preview how the merged item will appear
5. Confirm the merge to complete the process

<figure><img src="/files/Qq87WtBJS97m8QHBfdEo" alt="" width="563"><figcaption><p>"Merge items" process</p></figcaption></figure>

### What happens during a merge

When you merge items:

* All assets associated with the duplicate item are transferred to the primary item
* The duplicate item is removed from your catalog
* An audit log entry records the merge for tracking purposes
* Any references to the duplicate item are updated to point to the primary item

{% hint style="warning" %}
Item merging cannot be undone. Make sure you have selected the correct items and field values before confirming the merge.
{% endhint %}

## Accounting defaults

Tracked devices include an **Accounting** tab that allows you to configure default accounting settings. These defaults are automatically inherited by new assets created from this item. This streamlines asset creation and ensures consistent accounting treatment across similar assets.

### Configuring accounting defaults

To set up accounting defaults for a tracked device:

1. Navigate to the item details page for a tracked device
2. Click on the **Accounting** tab
3. Configure the following default settings:
   * **Cost basis** - Default cost basis for new assets of this item type
   * **Useful life (months)** - Expected service life in months for depreciation calculations
   * **Salvage value** - Expected residual value at end of useful life

### Advanced cost breakdown

An **advanced cost breakdown** allows you to set default values for detailed cost categories:

**Acquisition costs**

* **Equipment or bill of materials (BOM)**: Cost of purchased devices, raw materials, parts, or assemblies that make up the asset
* **Direct assembly labor**: Labor directly attributable to assembling or preparing the asset before deployment
* **Indirect allocated overhead**: Indirect overhead tied to asset acquisition or preparation, such as supervision, facilities, and utilities
* **Inbound freight**: Transportation costs to bring materials or asset into your warehouse or staging site
* **Acquisition taxes**: Non-recoverable taxes (e.g., sales tax, use tax, or import VAT) paid on acquisition of the asset, materials, or parts
* **Import duties**: Customs duties, tariffs, and import fees on foreign-sourced assets, materials, or parts
* **Capitalizable interest**: Capitalizable financing costs incurred during construction or long deployment projects

**Deployment costs**

* **Outbound freight**: Transportation costs to deliver the asset from your warehouse or staging site to its operating location in preparation for deployment
* **Installation and setup**: Setup, site preparation, configuration, commissioning, and testing costs to prepare the asset for deployment and make it operational

<figure><img src="/files/0MmOAkm8Uevcugfez6pb" alt="" width="563"><figcaption><p>Example advanced accounting cost defaults</p></figcaption></figure>

*Acquisition vs deployment costs* If your organization is using advanced cost basis, and the distinction between **acquisition costs and deployment costs** is relevant for your accounting reports.

* Acquisition costs are always included in the cost basis for inventory. These are expected to be costs that were incurred in sourcing the asset. These costs move into fixed assets when an asset goes into service.
* In contrast, deployment costs are not included in your inventory cost basis. These are expected to be costs that are incurred as the asset is deployed (i.e., as it is leaving inventory and going into service). They capitalize at the time the asset goes into service.

### How accounting inheritance works

When you create new assets from an item with accounting defaults configured:

* **Automatic inheritance** - New assets automatically receive the item's default accounting values
* **Customizable per asset** - Individual assets can override inherited values as needed
* **Consistent treatment** - Ensures similar assets use consistent accounting methods
* **Reduced data entry** - Eliminates repetitive entry of common accounting information

### Best practices for accounting defaults

* **Set realistic defaults** - Use typical values based on historical asset data
* **Review regularly** - Update defaults as costs and market conditions change (monthly, quarterly, or annually depending on business model)
* **Use detailed breakdowns** - Configure advanced cost categories for better financial analysis
* **Document assumptions** - Keep records of how default values were determined

## Bulk items

A **bulk item** is a component tracked by quantity in inventory. Bulk items can be **serialized** (for more expensive or identifiable components such as a control board, motor, or tablet) or **non-serialized** (for less expensive or identifiable components such as frames, bolts, and screws).

Bulk items support:

* **Inventory tracking** — Track quantities at each location, with [transfers](/source-and-build/inventory#transferring-units) and [adjustments](/source-and-build/inventory#adjusting-inventory)
* **Bill of materials** — Reference bulk items in a tracked device's BOM with requisite quantities
* **Assemblies** — Use bulk items as components in [assemblies](/source-and-build/assemblies)
* **Asset components** — Track bulk items as components of an asset after registration, or when maintenance is recorded
* **Units of measure** — Specify how the item is counted or measured (e.g., each, kilogram, meter). See [units of measure](/set-up-the-basics/items/parts#units-of-measure) for the full list.

{% hint style="info" %}
Serial numbers are *not required*, even for bulk items that accept serial numbers. Bulk items are still tracked by unit quantity. This is different than tracked devices, where each asset is defined by a serial.
{% endhint %}

## Item fields

Item **fields** define data that may be relevant for all the assets of that item type. These fields appear on each asset of this item type, so that the fields can be filled in as asset metadata. [Learn more about managing item fields.](/set-up-the-basics/items/manage-item-fields)


# Manage item fields

Tracked device **fields** define data that may be relevant for all the assets of that item type. These fields appear on each asset of this item type, so that the fields can be filled in as asset metadata.

{% hint style="info" %}
Item fields are only available for **tracked device** products.
{% endhint %}

<figure><img src="/files/dqD6F5CZ9EU5HFw9jLYa" alt=""><figcaption><p>Example item fields</p></figcaption></figure>

For example: a product **Lawnmower** might be associated with fields **blade size** and **horsepower**. If assets with serial numbers MOW-101, MOW-102, and MOW-103 are associated with the Lawnmower product, the company can configure each serial number with appropriate metadata (such as 21" blades and 5 horsepower).

Some common use cases for item fields to define asset metadata:

* Revision
* Hardware version
* Firmware version
* Software version
* Brand/OEM
* Model number
* Color
* Source

## **Adding item fields**

Click the "Add field" button to add a new field for a tracked device. This new field will apply to all assets of this type. Enter the **name** of the field and choose the **type** of data to use for the field. Then click the "Add" button.

<figure><img src="/files/S74WPgVSBZ4RFqhnhzwu" alt="" width="563"><figcaption><p>Add item field</p></figcaption></figure>

## **Item field types**

There are eight different types of item field data that you can configure, depending on what type of metadata you're looking to store for your assets:

* Single-line text
* Multi-line text
* Integer
* Decimal
* Date
* Time
* Date + time
* Check box

Select the appropriate field type based on the data that you want to store. For example:

* A manufacturer name might be a single line of text
* A supplier lot number might be an integer number
* An installation date might be a date (if being logged manually), or a date+time combo (if coming from an internal database)

## **Edit item fields**

Hover over any item field and click the pencil icon :pencil2: to edit that field's name. The field's type cannot be changed.

<figure><img src="/files/s8ObYCege2105802vhEa" alt="" width="375"><figcaption><p>Edit an item field</p></figcaption></figure>

## **Rearrange field order**

The field order controls how the fields appear on each asset page when viewing asset metadata. The field management interface allows intuitive drag-and-drop for organizing your item fields.

**Field organization features**

* **Visual drag-and-drop** - Click and drag fields to reorder them in the desired sequence
* **Real-time preview** - See field arrangement changes immediately as you drag

Once you have re-arranged the fields using the drag-and-drop interface, click "Save order" to apply the new ordering. You can also use "Reset order" to return to the previous field arrangement if needed.

<figure><img src="/files/DAbPSFGroeUAbNvDCa2A" alt="" width="375"><figcaption><p>Enhanced field management with drag-and-drop reordering</p></figcaption></figure>

{% hint style="info" %}
The field layout configuration makes it easy to organize item fields logically, ensuring that the most important metadata appears prominently on asset pages.
{% endhint %}


# Units of measure

Bulk items are components tracked by quantity in inventory. They are one of three item types in the [items catalog](/set-up-the-basics/items). For full documentation on bulk items — including how to create, edit, and manage them, see the items catalog page.

{% hint style="info" %}
Bulk items were previously referred to as "parts" in earlier versions of Hardfin. All existing parts have been automatically migrated to bulk items in the unified items catalog.
{% endhint %}

## Units of measure

When creating or editing a bulk item, you can specify a unit of measure to indicate how the item is counted or measured. Hardfin supports 57 standardized units of measure based on UNECE Recommendation 20 codes. The following units of measure are available:

### Count / grouping

| Unit  | Abbreviation |
| ----- | ------------ |
| Each  | EA           |
| Piece | PC           |
| Pair  | PR           |
| Set   | SET          |
| Unit  | C62          |
| Dozen | DZN          |
| Gross | GRO          |
| Kit   | KT           |
| Lot   | LO           |

### Packaging / container

| Unit     | Abbreviation |
| -------- | ------------ |
| Bag      | BG           |
| Bottle   | BO           |
| Box      | BX           |
| Carton   | CT           |
| Case     | CS           |
| Crate    | CR           |
| Drum     | DR           |
| Envelope | EN           |
| Keg      | KE           |
| Pack     | PK           |
| Pallet   | PX           |
| Reel     | RL           |
| Roll     | RO           |
| Sheet    | ST           |
| Skid     | SV           |
| Tube     | TU           |

### Length

| Unit       | Abbreviation |
| ---------- | ------------ |
| Millimeter | MMT          |
| Centimeter | CMT          |
| Meter      | MTR          |
| Kilometer  | KMT          |
| Inch       | INH          |
| Foot       | FOT          |
| Yard       | YRD          |
| Mile       | SMI          |

### Weight / mass

| Unit           | Abbreviation |
| -------------- | ------------ |
| Milligram      | MGM          |
| Gram           | GRM          |
| Kilogram       | KGM          |
| Ounce          | ONZ          |
| Pound          | LBR          |
| Tonne (metric) | TNE          |
| Ton (US)       | STN          |

### Volume

| Unit            | Abbreviation |
| --------------- | ------------ |
| Milliliter      | MLT          |
| Liter           | LTR          |
| Fluid ounce     | OZA          |
| Pint            | PTI          |
| Quart           | QTI          |
| Gallon          | GLL          |
| Cubic inch      | INQ          |
| Cubic decimeter | DMQ          |
| Cubic meter     | MTQ          |
| Cubic foot      | FTQ          |
| Cubic yard      | YDQ          |

### Area

| Unit              | Abbreviation |
| ----------------- | ------------ |
| Square millimeter | MMK          |
| Square centimeter | CMK          |
| Square inch       | INK          |
| Square meter      | MTK          |
| Square foot       | FTK          |
| Square yard       | YDK          |

{% hint style="info" %}
Hardfin accepts common aliases and abbreviations when entering units of measure. For example, "kg" or "kilogram" will be recognized as KGM (kilogram), and "lb" or "pound" will be recognized as LBR (pound).
{% endhint %}


# Companies

A **company** is an organization that you do business with. Companies can be designated as customers (who purchase from you), suppliers (who you purchase from), or both.

{% hint style="info" %}
**Understand company relationships**

A **company** can be *associated* with many **locations**, where assets can be located. A single company can have multiple locations, which helps in tracking where assets are located and where services are provided. (A single location can belong to only one company.)
{% endhint %}

Companies can have one or both of these roles:

* **Customer** - A company that purchases from you
* **Supplier** - A company that you purchase from

## Company logos

Companies display logos automatically based on their domain name. When a company has a domain configured, Hardfin fetches and displays the company's logo from public sources. Logos appear on the company list and company details pages, making it easier to quickly identify companies when working with customer lists.

### Domain field

Each company can have a **domain** field that stores the company's web domain (for example, "acme.com"). This field:

* Enables automatic logo display for the company
* Can be set manually when creating or editing a company
* Syncs automatically from CRM integrations (HubSpot, Salesforce) when available

The domain field appears in the company basic information section and can be edited by clicking on the field.

## List all companies

To see a list of all companies, navigate to the [companies page](https://assets.hardfin.com/companies). Here you will see a table with company names, logos, role indicators (customer/supplier), associated locations, how many assets a company has on location, and information about owned assets.

Use the **search** or **filter** options to refine the company list. You can filter by:

* **All companies** - View all companies regardless of role
* **Customers** - View only companies designated as customers
* **Suppliers** - View only companies designated as suppliers

<figure><img src="/files/Ia92s4H512dyxNPJPyx3" alt=""><figcaption><p>Company list view with role filters</p></figcaption></figure>

## View individual company details

To view the full details of a company, click the company's name in the company list:

<figure><img src="/files/GnzAlCRO9z8U8eKJ427o" alt=""><figcaption><p>Link to open company details</p></figcaption></figure>

A company detail page will appear showing the complete company details:

<figure><img src="/files/xtQBLM9HF7XxToLyBJkY" alt=""><figcaption><p>Company details page</p></figcaption></figure>

The company detail page is oriented to give a comprehensive overview of your business relationship with the company:

* **Company value** - the ARR[^1] and [lifetime value](#user-content-fn-2)[^2] (for customer relationships)
* **Projects summary** - a summary of active, upcoming, and past projects for the company
* **Assets** - breakdown of assets [owned by the company](#user-content-fn-3)[^3] and [on location with the company](#user-content-fn-4)[^4]
* **Sites** - breakdown of company locations by active[^5] and inactive[^6] status

The page also includes a **billing summary** for the company across all the company's projects (for customer relationships).

Finally, this page includes detailed views to access the following information related to your company record:

* **Projects** - projects that are related to this company
* **Locations** - locations that belong to this company
* **Assets on location** - a list of assets that are located at this company's locations
* **Assets owned** - a list of assets that are owned by this company

{% hint style="info" %}
Note that *assets may be at a company's location even if they are not owned by that company*. This is usually the case for hardware-as-a-service business models.

Also note that *assets may be owned by a company even if they are not at a location owned by that company*. This is usually the case for assets that have been returned for service or repair.
{% endhint %}

Company details also include a full [audit log](/monitor-the-details/audit-log) of the changes made to the company over time.

## Create a company

To create an individual company, click the "Add company" button and a window will appear. Enter the company's name, specify whether the company is a customer, supplier, or both, and click "Add."

<figure><img src="/files/J2NAGRLXGt6zRfgJIzDa" alt="" width="375"><figcaption><p>"Add company" window</p></figcaption></figure>

**Name** is the only field required to create a new company. The role flags (customer/supplier) can be set during creation or edited later.

### Brand suggestions

As you type a company name (after 2 or more characters), Hardfin displays brand suggestions with company logos to help you quickly identify and select the correct company. Selecting a brand suggestion automatically populates the company name and domain fields, and displays the company logo on the record. This helps ensure accurate and consistent company information across your organization.

### Company roles

When creating or editing a company, you can specify:

* **Customer?** - Turn on if the company purchases from you (for projects and fulfillment)
* **Supplier?** - Turn on if you purchase from the company (for procurement)

A company can be both a customer and a supplier. Tags appear next to the company name throughout the interface to help you quickly identify company relationships.

**Default role assignment:**

* Companies created from customer contexts (such as project creation) automatically default to customer role
* Companies created from supplier contexts (such as procurement) automatically default to supplier role
* You can adjust these roles at any time

#### Bulk creation

To import companies in bulk, you can [configure an integration with a CRM or ERP](/manage-your-account/integrations), or [set up API access](/advanced-options/api-access). For more options, please [contact support](mailto:support@hardfin.com).

## Edit a company

To edit a company, click the pencil icon ✏️ in the company details window.

<figure><img src="/files/QT8Rr9d1pX5dQUkod2Xg" alt="" width="563"><figcaption><p>Edit company details button</p></figcaption></figure>

A small window will appear to edit the company's name, role flags (customer/supplier), billing contact, and billing address:

<figure><img src="/files/gKqBh0OX87wsutNS0hcC" alt="" width="375"><figcaption><p>Edit company details window</p></figcaption></figure>

Hover over the information icons next to the role flags to see tooltips explaining their purpose.

## Merge companies

When you have duplicate company records or need to consolidate company data, you can merge two companies into a single record. This process combines all associated data (projects, locations, assets, billing information) from both companies into one retained company record.

<figure><img src="/files/LYAOVAdhHY90qaqfVm6F" alt="" width="563"><figcaption><p>Merge companies window</p></figcaption></figure>

To merge companies:

1. Navigate to the company you want to keep (the "retained" company)
2. Click the merge icon in the top right of the company details window
3. Select the company you want to merge into this record (the "removed" company)
4. Review the merge details, including role indicators for both companies
5. Click "Merge companies" to complete the process

{% hint style="warning" %}
**Merging companies is permanent and cannot be undone.** All data from the removed company will be transferred to the retained company, and the removed company record will be deleted. Make sure you have selected the correct companies before proceeding.
{% endhint %}

The merge process automatically:

* Transfers all locations from the removed company to the retained company
* Consolidates all projects and associated billing information
* Moves all asset ownership and location assignments
* Combines role flags (if either company is a customer, the merged company will be a customer; same for supplier)
* Preserves audit history for **both** companies in the new merged company record
* Updates external system references if external IDs are configured

### External company ID

Each company can have an optional external ID field that stores identifiers from external systems such as a CRM, ERP, accounting software, or internal database. This field:

* Appears in the company basic information section
* Can be edited by clicking on the field
* Is included in company merge operations
* Helps maintain consistency when integrating with other business systems
* Is tracked in the audit log when changed

The external ID is particularly useful when merging companies, as it helps ensure the correct external system references are maintained after the merge.

## Archive a company

{% hint style="info" %}
[Archiving objects](#archiving-companies) hides the object from the list view and dropdown menus. The object can still be viewed in the list by selecting the "Archived" option. Archived objects still appear in dropdown menus when searched by name.
{% endhint %}

To archive a company that is not yet archived, click the archive icon 👁️‍🗨️ in the company details window.

<figure><img src="/files/Fawf7aMQagrh9pFsRQLN" alt="" width="563"><figcaption><p>"Archive company" button</p></figcaption></figure>

A small badge will appear on the company indicating *Archived*.

<figure><img src="/files/4hUUE7UVdkWPUiSBNZ8c" alt="" width="563"><figcaption><p>"Archived" badge for a company</p></figcaption></figure>

The company will now be visible in the company list only when "Include archived companies" is selected.

<figure><img src="/files/tYx2eWOcRzXqGxYoNMHD" alt="" width="563"><figcaption><p>Archived company showing in list</p></figcaption></figure>

To unarchive a company that is already archived, edit the company and select the unarchive icon 👁️‍🗨~~️~~ in the company details window.

<figure><img src="/files/uuPyqpy9vNqCVAqeYjoL" alt="" width="563"><figcaption><p>"Unarchive company" button</p></figcaption></figure>

[^1]: **Annual recurring revenue (ARR)** is the annualized total of recurring line items for all active projects associated with the company

[^2]: **Lifetime value** is the total value of the company for all projects associated with the company

[^3]: **Company-owned assets** are assets that your organization has sold outright to the company

[^4]: **On-location assets** are assets that are at a location associated with the company (they may be sold to the company or owned by your organization on a subscription program)

[^5]: **Active** locations have assets located at them

[^6]: **Inactive** locations do not have assets located at them


# Locations

A **location** is a place where assets may be located. Some organizations use other words to describe a location, such as:

* Site
* Place
* Space

{% hint style="info" %}
**Understand location relationships**

A **location** must be *associated* with one **customer**, which owns or operates the location. A single location can belong to only one customer. Locations help track where assets are located and where services are provided. (A single customer can have multiple locations.)
{% endhint %}

## List all locations

To see a list of all locations, navigate to the [locations page](https://assets.hardfin.com/locations). Here you will see a table with location names, associated customers, addresses, and how many assets are at each location.

Use the **search** or **filter** options to refine the location list.

<figure><img src="/files/O5BCldDkJNeak5os1d3D" alt=""><figcaption><p>Location list view</p></figcaption></figure>

## View individual location details

To view the full details of a location, click the right arrow ➡️ button in the location list.

<figure><img src="/files/VnbUdR9SyjYnZMWsTOVR" alt=""><figcaption><p>Arrow to open location details</p></figcaption></figure>

A side window will appear showing the location details.

<figure><img src="/files/wyxVhKVgdjw127jm4fs0" alt="" width="563"><figcaption><p>Location details window</p></figcaption></figure>

This window includes options for the following location information:

* **Company** - the company associated with this location
* **Address** - complete address for this location
* **Include in inventory** - whether the location is treated as part of your inventory
* **Assets** - list of assets currently at this location

{% hint style="info" %}
Note that *assets may be at a customer location even if they are not owned by that customer*. This is usually the case for hardware-as-a-service business models.
{% endhint %}

Location details also include a full [audit log](/monitor-the-details/audit-log) of the changes made to the location over time.

## Create a location

To create an individual location, click the "Add location" button and a window will appear. Choose the customer associated with the location and enter the location's name. You may optionally enter an address. Select whether to include the location in inventory. Then click "Add."

When entering an address, start typing and select from the address suggestions that appear. After selecting an address, the individual address components are automatically populated and displayed:

* **Address line 1** - Street address
* **Address line 2** - Suite, unit, or apartment number (optional)
* **City** - City or locality
* **State** - State, province, or region
* **Zip** - Postal or ZIP code
* **Country** - Country code

You can review and edit each component individually before saving. This is especially useful for complex or international addresses where the auto-populated values may need adjustment.

<figure><img src="/files/tZ7jxyjMO16p38MLjY29" alt="" width="375"><figcaption><p>"Add location" window</p></figcaption></figure>

**Customer** and **Name** are the only fields required to create a new location.

#### Inventory vs. non-inventory

Your company's locations default to inventory (i.e., they are included in your inventory totals); your customer's locations default to non-inventory (i.e., they are not included in your inventory totals). You can change these defaults at any time.

For example, a business may have an R\&D facility with some assets for development purposes. Those assets should be tracked at the company's location, but those assets should be treated as **non-inventory** because they are not available to be sold to customers. Conversely, a business may rely on a third-party logistics provider to store assets and dropship them. Those assets should be tracked at a customer location (the third-party warehouse), which should be designated as **inventory**.

### Bulk creation

Users can upload or update locations in bulk via a file upload, API connection, or direct integration.

#### Location data uploader

The **location data uploader** provides an intuitive interface for importing location information and updating locations in bulk. This tool streamlines the process of adding multiple locations to the platform, or of updating location data in bulk.

<figure><img src="/files/nsJ1iWDPTIb8yMi0xyRe" alt="" width="375"><figcaption><p>Location data uploader button</p></figcaption></figure>

**Using the uploader:**

1. Navigate to the locations page and choose the "Import location data" option
2. Choose your CSV data file with columns mapped to the appropriate locations fields
3. Upload your file and Hardfin will automatically validate and process your data
4. Review the data results to ensure accuracy

<figure><img src="/files/wzWy9jGDGs8lBnDZPyML" alt="" width="563"><figcaption><p>Location data uploader window</p></figcaption></figure>

The uploader will automatically validate customer associations and address formatting, providing detailed feedback for any issues that need resolution.

#### Other bulk creation options

To configure location sync using an integration with a CRM or ERP, or to set up API access, please [contact support](mailto:support@hardfin.com).

## Edit a location

To edit a location, click the pencil icon ✏️ in the location details window.

<figure><img src="/files/tgGjvt02CL2RlXxs68Kd" alt="" width="563"><figcaption><p>Edit location details button</p></figcaption></figure>

A small window will appear to edit the location name and address and inventory status. The customer associated with the location cannot be changed.

## Merge locations

When you have duplicate location records or need to consolidate location data, you can merge two locations into a single record. This process combines all associated data (assets, projects, inventory) from both locations into one retained location record.

<figure><img src="/files/W5TKkgLyfBr3B2BXdwAG" alt="" width="563"><figcaption><p>Merge locations window</p></figcaption></figure>

To merge locations:

1. Navigate to the location you want to keep (the "retained" location)
2. Click the merge icon in the location details window
3. Select the location you want to merge into this record (the "removed" location)
4. Review and confirm the merge details
5. Click "Merge locations" to complete the process

{% hint style="warning" %}
**Merging locations is permanent and cannot be undone.** All data from the removed location will be transferred to the retained location, and the removed location record will be deleted. Make sure you have selected the correct locations before proceeding.
{% endhint %}

The merge process automatically:

* Transfers all assets from the removed location to the retained location
* Consolidates inventory records and counts
* Updates project and assignment references
* Preserves audit history for **both** locations as part of the new merged location record
* Maintains customer associations (you can choose which customer reference to associate to the new location)

## Archive a location

{% hint style="info" %}
[Archiving objects](#archiving-customers) hides the object from the list view and dropdown menus. The object can still be viewed in the list by selecting the "Archived" option. Archived objects still appear in dropdown menus when searched by name.
{% endhint %}

To archive a location that is not yet archived, click the archive icon 👁️‍🗨️ in the location details window.

<figure><img src="/files/fFLcedpY97lRDBDp1sTF" alt="" width="563"><figcaption><p>"Archive location" button</p></figcaption></figure>

A small badge will appear on the location indicating *Archived*.

<figure><img src="/files/LzuTa11WX6lj7VQUW0AJ" alt="" width="563"><figcaption><p>"Archived" badge for a location</p></figcaption></figure>

The location will now be visible in the location list only when "Archived" is selected.

<figure><img src="/files/ehvrhGlGSfsK4eItasnj" alt="" width="563"><figcaption><p>Archived location view in the location list</p></figcaption></figure>

To unarchive a location that is already archived, edit the customer and select the unarchive icon 👁️‍🗨~~️~~ in the location details window.

<figure><img src="/files/AYo8FuYhDVlC2P0JYoMU" alt="" width="563"><figcaption><p>"Unarchive location" button</p></figcaption></figure>

## Location map

View all your locations on a map through the location dashboard. The map displays company locations and customer locations with real-time asset information.

To access the location map, navigate to Dashboard > Locations. The map shows:

* Company locations (your warehouse and staging sites)
* Customer locations (deployment sites)
* Asset counts at each location


# Purchase orders

A **purchase order** (PO) is how you track equipment and parts procurement from suppliers. Purchase orders help you manage what needs to be ordered, track order status, and link orders to inbound shipments as items arrive.

{% hint style="info" %}
Purchase orders provide visibility into *procurement* commitments and help coordinate *receiving* operations. They serve as the **planning layer** for inbound inventory before actual shipments arrive and parts are received into inventory.
{% endhint %}

> **Example:** Your supply chain team needs 50 units of a specific part to build assemblies for an upcoming project. A purchase order is created for the supplier with the part details, quantities, and expected delivery date. When the supplier ships the order, an [inbound shipment](/source-and-build/inbound-shipments) is created against the PO to track the delivery. Once the shipment is received, the parts are added to inventory and become available for assembly.

Purchase orders are part of the **procurement workflow** for managing inbound goods:

{% @mermaid/diagram content="---
title: Procurement workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
PurchaseOrder\["Purchase order"] --Record shipment--> InboundShipment\["Inbound shipment"] --Receive--> Inventory\["Inventory"]
style PurchaseOrder fill:#F5F9FF" %}

{% hint style="info" %}
**Understand purchase order relationships**

* Purchase orders may reference the **vendor** you are purchasing from.
* A **purchase order** includes a set of **parts** or **products** that you plan to procure from a supplier.
* Purchase orders can be linked to multiple **inbound shipments** as items are delivered in batches.
  {% endhint %}

## List all purchase orders

To see a list of all purchase orders, navigate to the [purchase orders page](https://assets.hardfin.com/purchase-orders). Purchase orders are listed in a table with the following information:

* **PO number** - Purchase order reference number automatically assigned by Hardfin (e.g., PO-2026-0001)
* **From/to location** - The supplier location and destination location for the order
* **Items** - The parts and products included in this PO with their quantities
* **Expected date** - When the order is expected to be delivered
* **Status** - Whether the PO is draft, open, partially received, received, or cancelled
* **Notes** - Any additional information about the purchase order

Use the tabs to **filter** purchase orders by status. Use the **search** to search all purchase orders.

<figure><img src="/files/HVQIiLz31FDVmAw9rPYW" alt=""><figcaption><p>Purchase order (PO) list view</p></figcaption></figure>

## Purchase order status

Purchase orders progress through different statuses as they are processed:

* **Draft** - Order is being prepared but not yet sent to the supplier
* **Awaiting 3PL** - Order has been sent to a third-party logistics provider and is awaiting processing\*
* **Shipping** - Order is being shipped to the destination location
* **Partial** (partially received) - Some items have been received but the order is not complete
* **Received** - All items in the order have been received
* **Cancelled** - The PO has been cancelled and is no longer valid

The status automatically updates as shipments are created and received against the purchase order.

{% hint style="info" %}
*Note:* "Awaiting 3PL" status only appears if your organization has been enabled for third-party fulfillment.
{% endhint %}

### Status levels

Purchase orders also display **status levels** that provide more detailed visibility into the shipment and receiving progress. These statuses combine the base status with shipment information:

<table><thead><tr><th width="157.7890625">Status level</th><th>Meaning</th></tr></thead><tbody><tr><td>Partial</td><td>Some (but not all) items have been recorded</td></tr><tr><td>Full</td><td>All items have recorded exactly</td></tr><tr><td>Overage</td><td>All items have recorded, and some have been recorded in excess</td></tr></tbody></table>

Status levels help you quickly understand both the overall PO status and the current state of associated shipments without needing to drill into the shipment details.

### Line item statuses

Each line item on a purchase order tracks its own quantities and status:

* **Open quantity** - Items expected but not yet in any shipment
* **Shipped quantity** - Items currently in transit
* **Delivered quantity** - Items delivered but not yet received into inventory
* **Received quantity** - Items received into inventory

Each line item displays a status combining a phase (open, shipped, delivered, received) with a level (partial, full, overage) based on these quantities. This provides visibility into the progress of each individual item within the purchase order.

## Add a purchase order

To create a new purchase order, click the "Add purchase order" button and a window will appear. Enter the appropriate details for the order:

* **Order details**
  * "From" location (supplier)
  * "To" location (destination) - *required*
* **Expected date** - When you expect the order to be delivered
* **Transportation**
  * "Carrier" - The shipping carrier for the order (e.g., FedEx, UPS, DHL)
  * "Tracking number" - The carrier's tracking number for the shipment
* **Items** - Parts or products to be ordered with quantities - *required*
* **Notes** - Any additional information about the PO

<figure><img src="/files/D2Yw18b6BmcD933xy6z9" alt="" width="563"><figcaption><p>"Add purchase order" window</p></figcaption></figure>

Once all required information is entered, click "Create purchase order" to confirm. The PO will be created in draft status.

Not all fields are required to create a purchase order. At minimum, you need to specify the "To" locations and at least one item to order.

## View a purchase order

To view a purchase order, click the PO in the purchase order list. It will open the full PO details page showing:

* Order details (PO number, locations, expected date, status)
* Transportation details (carrier and tracking number, with a clickable link to track the shipment)
* Line items (parts or products ordered with quantities)
* Shipments (inbound shipments recorded against this PO)
* Notes
* Files

From the PO details page, you can take action on the purchase order.

<figure><img src="/files/KeODMsJNrJ6ovW5fx0JS" alt=""><figcaption><p>Purchase order (PO) details page</p></figcaption></figure>

## Take action on a purchase order

Several actions can be taken on a purchase order:

* **Edit** - A draft or open PO can be edited to change order details, items, or quantities
* **Clone** - Creates a new draft purchase order with the same details (locations, items, quantities) as the original, allowing you to quickly create similar orders without entering all details from scratch
* **Send to 3PL** - Send the PO to the 3PL to be processed\*
* **Record shipment** - Create a new inbound shipment against the purchase order to track delivery
* **Cancel** - A purchase order can be cancelled if it is in Draft status

These actions appear at the top right of the purchase order details page.

{% hint style="info" %}
*Note:* If the "To" location is a 3PL location, you can send the PO to your 3PL to be processed by selecting the "Send to 3PL" action. This option will appear instead of "Record shipment" action. This option only appears if your organization has [third-party fulfillment](/advanced-options/third-party-fulfillment) enabled.
{% endhint %}

### Sending POs to 3PLs

If the "To" location is a 3PL location, you can send the PO to your 3PL to be processed by selecting the "Send to 3PL" action. This option will appear instead of "Record shipment" action. This option only appears if your organization has third-party fulfillment enabled.

When you select "Send to 3PL," the PO will be sent via your third party's API, including:

* Expected items and quantities
* Notes (if supported)
* Files (if supported)

When your third party responds to confirm the PO, the status will automatically move to "Awaiting 3PL."

**Third-party status updates**

As the third-party provides further updates on the PO over time (such as shipments delivered and received), the PO will automatically move to *Partial* and *Received*. If the third party cancels your PO, the PO status will automatically move to *Cancelled*.

{% hint style="success" %}
Want to learn more about third-party fulfillment? [Read more about third-party fulfillment.](/advanced-options/third-party-fulfillment) Contact your customer success manager to enable third-party fulfillment for your organization.
{% endhint %}

### Recording shipments against purchase orders

Once items begin shipping for a PO, you can record [inbound shipments](/source-and-build/inbound-shipments) against the PO to track deliveries. When creating an inbound shipment, you can select the purchase order from a dropdown, and the shipment will automatically populate with:

* From and To locations from the PO
* Items and quantities from the PO
* Link to the PO for tracking

As shipments are received against a purchase order, the PO status automatically updates. The details of each shipment appear underneath its corresponding line item (on the **Line items** tab) and listed by shipment (on the **Shipments** tab).

<figure><img src="/files/FQzbprz8Ini27eduG4Sa" alt="" width="563"><figcaption><p>Purchase order (PO) line items with shipments in progress</p></figcaption></figure>

This makes it easy to:

* Track which items from the PO are being shipped
* See how many units were ordered, how many have been recorded in shipments, and how many are still needed
* Maintain a clear link between procurement commitments and actual deliveries

{% hint style="info" %}
Note: POs sent to a third party cannot have shipments recorded against them manually. Those POs will be updated automatically as updates are provided by your third party.
{% endhint %}

### Cancelling purchase orders

If a purchase order needs to be cancelled (supplier unable to fulfill, order no longer needed, etc.), you can cancel the PO from the details page. Cancelled purchase orders remain in the system for record-keeping but are no longer active.

{% hint style="warning" %}
A purchase order can only be cancelled if it is in Draft status. Once shipments have been received against a PO (Partially received or Received status), the PO cannot be cancelled.
{% endhint %}


# Inbound shipments

An **inbound shipment** is how you track items destined to arrive at your facilities. A shipment can include quantities of any item from your [items catalog](/set-up-the-basics/items).

{% hint style="warning" %}
**IMPORTANT: Difference between inbound and outbound shipments**

Hardfin supports *two types of shipments* for different logistics needs:

**Inbound shipments** are for parts arriving at your facilities:

* Track parts from suppliers or vendors
* Receive parts into inventory
* Support the parts workflow for building assets

**Outbound shipments** ([see relevant documentation](/fulfill-and-deploy/outbound-shipments)) are for finished goods leaving your facilities:

* Ship assets and parts to customers or other locations
* Track in-transit inventory
* Support the fulfillment workflow for delivering to customers

Both shipment types provide tracking, status management, and inventory visibility, but serve different stages of your operations.
{% endhint %}

Inbound shipments are the first step in the **inventory workflow** for both parts and products:

{% @mermaid/diagram content="---
title: Inventory workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
Shipment --Receive **parts**--> Inventory --Build--> Assembly --Register--> Asset
Shipment --Receive **products**--> Asset
style Shipment fill:#F5F9FF" %}

{% hint style="info" %}
**Understand shipment relationships**

A **shipment** can include:

* **Parts** - Individual components from your parts catalog, each with a quantity. These arrive in parts inventory at their destination location.
* **Products** - Complete product units from your products catalog, each with a quantity. When received, products are automatically registered as [serialized assets](/run-your-business/assets).

You can include both parts and products in the same shipment.
{% endhint %}

{% hint style="warning" %}
Note: shipments track inbound inventory arriving at your facilities. To manage ongoing business operations and logistics for assets already in the field, see [moving assets](/run-your-business/assets/move-assets).
{% endhint %}

## List all shipments

To see a list of all shipments, navigate to the [inbound shipments page](https://assets.hardfin.com/shipments/inbound). Here you will see a table with each shipment, along with the following information:

* **Reference numbers.** Shipment reference number (assigned by Hardfin), PO number (entered when creating a shipment), and tracking number (optionally provided when recording a shipment)
* **From/to location.** The *from* location and *to* location of this shipment.
* **Items.** The part and product SKUs and unit quantities expected for each shipment.
* **Dates.** The dates associated with this shipment: ship date (the date that the sender sent the shipment), promise date (the date the sender committed to deliver the shipment), expected date (the date you or the carrier actually expect the shipment to arrive), delivered date (the date the shipment was actually delivered), received date (the date the contents of the shipment were received in inventory.
* **Status.** Whether the shipment is open, shipped, delivered, or received.
* **Actions.** For each shipment status, different actions are available. Open shipments can be *Marked delivered*; Delivered shipments can be *Marked received*; Received shipments are complete and can only be viewed.

Use the tabs to **filter** shipments by Open, Shipped, Delivered, or Received. Use the **search** to search all shipments.

<figure><img src="/files/uzV4GyKSPxPbVfWGDUCV" alt=""><figcaption><p>Inbound shipment list page</p></figcaption></figure>

### Partial phase indicators

Shipments that are partially complete display a **Partial** indicator next to their status. This helps you quickly identify shipments where some but not all items have been processed. For example, a shipment may show "Delivered - Partial" when some items have been delivered but others are still pending, or "Received - Partial" when some items have been received into inventory but others are still awaiting receipt.

## View shipment details

To view the full details of an inbound shipment, click on the shipment in the list. The shipment details page displays comprehensive information about the shipment including:

* **Shipment information** - Reference number, PO number, tracking number, carrier, and current status
* **Locations** - Origin (supplier) and destination locations with addresses
* **Items** - Complete list of parts and products in the shipment with expected and received quantities
* **Timeline** - Key dates including ship date, promise date, expected date, delivered date, and received date
* **Notes** - Any notes or comments associated with the shipment
* **Activity history** - A log of all status changes and updates to the shipment

From the shipment details page, you can take actions on the shipment based on its current status, such as marking it as delivered or receiving items into inventory.

## Add a shipment

To create a new inbound shipment, click the "Add inbound shipment" button and a window will appear. Enter the appropriate detail for the shipment that you have available, being sure to enter the appropriate unit quantities of parts and products in the shipment.

**Only the "To" location and a list of items are required to create a shipment.** The "From" location, expected dates, actual dates, and notes are all optional. You can add tracking information and other details later as they become available.

Once all required information is entered, click "Create shipment" to confirm. The shipment will be created in open status.

<figure><img src="/files/QyoeIIHVYCWNg7TmecWx" alt=""><figcaption><p>"Add inbound shipment" window</p></figcaption></figure>

#### Shipping against a purchase order (PO)

Once a [purchase order (PO)](/source-and-build/purchase-orders) has been selected from the dropdown, relevant details will populate automatically, such as "From" and "To" and the full items list.

Additionally, the current context of shipments against the PO will be provided inline based on how many units were *Ordered*, how many units have been *Recorded* (open, shipped, or delivered), and how many units are *Needed*.

<figure><img src="/files/9dYNdUcCTg5Zs1fDK0PX" alt=""><figcaption><p>Record a shipment against a PO window</p></figcaption></figure>

#### Bulk creation

To import shipments in bulk, configure an integration with an ERP, upload a CSV or XLSX file, or to set up [API access](/advanced-options/api-access), please [contact support](mailto:support@hardfin.com).

## Marking a shipment as delivered

Once a shipment is open, it can be marked **delivered** after the shipment has been delivered to its delivery location. When a delivery is recorded, the actual delivery date and actual delivery location can be specified. Notes can also be provided about the delivery.

<figure><img src="/files/dODoEEAb6aVbZBiWCeBb" alt="" width="375"><figcaption><p>"Mark shipment as delivered" window</p></figcaption></figure>

Marking a shipment as delivered changes the shipment status, but does **not** bring the items into inventory. To bring items into inventory, a shipment must be *received*.

## Receiving a shipment

Once a shipment is delivered, items can be **received** into inventory. The date of receipt is automatically recorded at the time the shipment is received in Hardfin. You can specify the receiving location, the received unit quantity for each item, and an optional reference ID, such as a supplier batch number. Notes can also be provided about the delivery.

When receiving a shipment:

* **Parts** are received into parts inventory and tracked by quantity at the receiving location
* **Products** can be received with serial numbers. Serialized products are automatically registered as assets when received.

<figure><img src="/files/oVtsTahpbZfKK0exk90Q" alt="" width="375"><figcaption></figcaption></figure>

### Receiving parts

When receiving parts shipments, the parts are added directly to your [parts inventory](/source-and-build/inventory) and become available for building assemblies or other inventory operations.

#### Collecting part serials

For serialized parts, you can *optionally* capture serial numbers during the receiving process. The serial number collection is optional and is for reference and historical tracking only — it is not validated against other parts in inventory.

### Receiving products

When receiving product shipments, the finished products are automatically processed through a streamlined workflow that converts them to assets. This is designed for finished goods that don't require assembly, simplifying inventory management for new assets.

#### Collecting asset serials

For serialized assets, you *must* record individual serials during the receiving process. Serials are unique across the application and cannot be duplicated.

To make this easy, the serial number collection provides real-time feedback to ensure accuracy:

* **Count status** - Shows how many serial numbers have been entered and how many are needed based on the received quantity
* **Validation feedback** - Identifies if any serial numbers are duplicated, invalid, or exceed the required quantity
* **Clear summary** - Displays counts in an organized format for easy verification

<figure><img src="/files/8GEUu2sdwQeOUbCy6E6Q" alt=""><figcaption><p>Serial entry when receiving serialized assets</p></figcaption></figure>

This feedback helps prevent errors and ensures all required serial numbers are captured before completing the shipment receipt.

#### Serial number preview

Before completing the receiving process, you can preview the serial numbers assigned to each line item directly on the shipment detail view. This allows you to verify serial assignments at a glance — confirming which serials are expected for each item — without needing to start the full receive workflow.

#### Bulk serial upload

For shipments with many serialized items, you can upload serial numbers in bulk using a CSV or TXT file instead of entering them manually. This is useful when receiving large quantities of serialized products.

To upload serials in bulk:

1. Click the "Upload" button in the serial number collection section
2. Select a CSV or TXT file containing your serial numbers (one serial per line)
3. The system validates the uploaded serials and displays any errors
4. Review the uploaded serials and confirm to proceed

The bulk upload supports the same validation as manual entry, checking for duplicates and ensuring the correct quantity of serials is provided.

### Receipt confirmation

Before finalizing shipment receipt, a confirmation step allows you to review and verify all receipt details. This confirmation modal displays:

* **Received quantities** - Review the quantities being received for each item
* **Location details** - Confirm the receiving location is correct
* **Reference information** - Verify any batch numbers or reference IDs
* **Notes and comments** - Add any final notes about the receipt

This confirmation step helps prevent errors by providing a clear review opportunity before committing receipt data to inventory.

Once a shipment has been received, the items are available in [inventory](/source-and-build/inventory) and the shipment can no longer be updated. If any additional modifications are needed, they should be made as inventory adjustments.

### Handling overages

Shipment receipts can accommodate receiving more items than originally expected in the shipment. When actual received quantities exceed planned quantities:

* **Overage recording** - The system allows you to record quantities above the original shipment amounts
* **Automatic tracking** - Overages are automatically tracked and linked to the original shipment
* **Inventory updates** - All received quantities, including overages, are properly added to inventory
* **Audit trail** - Overage information is maintained in the shipment record for future reference

Once a shipment has been received, the parts are available in [inventory](/source-and-build/inventory). Shipment information can be edited as needed to correct errors or update details.

## Editing shipments

Shipments can be modified throughout their lifecycle to accommodate changing business needs:

**Editable shipment information**

* **Core details** - Shipment items, quantities, and shipping information can be updated
* **Delivery details** - Carrier information, tracking numbers, and delivery dates can be modified
* **Receipt information** - Previously finalized receipts can be edited to correct errors or update quantities
* **Reference data** - PO numbers, batch references, and notes can be updated as needed

**When to edit shipments**

* **Delivery changes** - Update carrier or tracking information when shipping details change
* **Quantity corrections** - Adjust expected or received quantities when discrepancies are discovered
* **Receipt corrections** - Modify receipt details when errors are found after receiving
* **Reference updates** - Add or correct PO numbers, batch IDs, or other reference information

This reduces the need for shipment cancellation and recreation, making it easier to maintain accurate records.

## Batch tracking

Upon receipt, the inventory for each **part** is automatically assigned a unique batch identifier. This batch identifier is linked back to the shipment and to the shipment receipt date. **Products** are tracked individually as serialized assets.

For parts batches, Hardfin automatically follows the **first-in first-out (FIFO)** model of batch tracking. As parts are used — whether they are transferred, adjusted, built into [assemblies](/source-and-build/assemblies), or used for replacements — the oldest units are considered to be used first.

For more information, read about [batching and traceability](/source-and-build/inventory#batching-and-traceability) tracking in inventory.

{% hint style="info" %}
**Batch costing** is coming soon! Please [contact us](mailto:support@hardfin.com) if you'd like to enroll your team in the batch costing beta when it is released.
{% endhint %}


# Inventory

**Inventory** tracks items at your facilities. Any location can store quantities of items from your [items catalog](/set-up-the-basics/items).

Inventory is the second step in the **inventory workflow** as items move toward becoming production assets:

{% @mermaid/diagram content="---
title: Bulk items workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
Shipment --Receive **items**--> Inventory\[Inventory] --Build assembly--> Assembly --Register asset--> Asset
style Inventory fill:#F5F9FF" %}

{% @mermaid/diagram content="---
title: Products workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
Shipment --Receive **products**--> Inventory
Shipment -.-> Assembly\[Assembly registers automatically] -.->  Inventory\[Asset inventory]

style Inventory fill:#F5F9FF
style Assembly fill:#FFFFFF" %}

{% hint style="info" %}
**Understand inventory relationships**

A **location** includes a quantity of each **item** that is available at that location.

Inventory units can be **transferred** between locations. For example, you may move 25 units of item LDR-4.1 from your Chicago warehouse to your Milwaukee operations center.

Inventory counts can be **adjusted** for each location. For example, you may discover 5 units of item LDR-4.1 are missing from your Chicago warehouse and need to *adjust down*, or discover 5 units are present in your Milwaukee operations center and need to *adjust up*.
{% endhint %}

{% hint style="warning" %}
Note: inventory is primarily used to manage bulk item inventory, **not for tracking finished goods**. To manage ongoing business operations for finished goods in the warehouse or in the field, see [tracking assets](/run-your-business/assets). To manage logistics for assets already deployed in the field, see [moving assets](/run-your-business/assets/move-assets). For a comprehensive overview of your asset inventory, see the [asset inventory dashboard](/monitor-the-details/dashboards#assets-dashboard).
{% endhint %}

## List all inventory

Inventory can be viewed by **item** or by **location** on the [inventory page](https://assets.hardfin.com/inventory).

<figure><img src="/files/gZIoUxqpnoInbVfYgsyg" alt=""><figcaption><p>View inventory by item</p></figcaption></figure>

You can **drill down** for each area to understand the number of units of each item at each location.

<figure><img src="/files/cEjEASIFLCcLT4xAQdQS" alt=""><figcaption><p>View inventory by location with drilldown</p></figcaption></figure>

## Export inventory data

You can export your current inventory view to a CSV file by clicking the "Export data" button in the page header. The export includes SKU, item name, location, and quantity for each item-location combination based on your current view and filters.

This export is useful for:

* External reporting and analysis
* Integration with other systems
* Sharing inventory snapshots with stakeholders

### Viewing lot details

For each item-location combination, you can expand further to view **lot-level details**. This shows the individual inventory lots that make up the total quantity, including batch information and supplier details for each lot.

To view lot details, click on an item-location row to expand it, then click on the lot expansion control to see the breakdown. Each lot displays the batch number, quantity, and associated supplier information. You can also toggle "Show empty lots" to view historical lots that have been fully consumed, which is useful for traceability and audit purposes.

{% hint style="info" %}
Lot details are only visible for item-location combinations that currently have inventory. If a location previously had inventory of a bulk item but no longer does, that row will not appear in the inventory list, and historical lot information for that combination will not be accessible from this view.
{% endhint %}

## Transferring units

Units can be **transferred** between inventory locations. For example, you may move 25 units of item LDR-4.1 from your Chicago warehouse to your Milwaukee operations center. Unlike [shipments](/fulfill-and-deploy/outbound-shipments), transfers take effect *immediately*.

{% hint style="success" %}
Transferring units from one location to another is a normal day-to-day operation.
{% endhint %}

Click the "Transfer" button to transfer inventory. Clicking "Transfer" on an item or a location will pre-populate the window with the corresponding item or location information.

Unlike shipments, transfers **do not introduce new units** at the location. Instead, they decrement units from one location and send them to another. For that reason, you cannot transfer more units from a location than are already present at that location.

<figure><img src="/files/BsgS0EripEuQ7ZNqVivM" alt="" width="375"><figcaption><p>Transfer inventory window</p></figcaption></figure>

## Adjusting inventory

Unit counts can be **adjusted** for each inventory location. For example, you may discover 5 units of item LDR-4.1 are missing from your Chicago warehouse and need to *adjust down*, or discover 5 units are present in your Milwaukee operations center and need to *adjust up*.

{% hint style="danger" %}
Adjusting inventory manually is **not** part of normal day-to-day operations. It should be the exception rather than the rule, and may be reserved for managers or accounting staff.
{% endhint %}

Click the "Adjust" button to adjust inventory. Clicking "Adjust" on an item or a location will pre-populate the window with the corresponding item or location information.

#### **Adjusting up**

Adjusting inventory *up* will **introduce new units** at the location. Unlike shipments, the inventory does not come as part of a shipment associated with a PO and a source. Units are simply materialized at the locations.

Upwards adjustments are usually based on a true-up or reconciliation of prior inventory tracking errors. Adjustment upwards automatically creates a new batch to track the adjustment.

<figure><img src="/files/503f0KjwxhYDCeqdkL4B" alt="" width="375"><figcaption><p>Example upwards inventory adjustment</p></figcaption></figure>

#### **Adjusting down**

Adjusting inventory *down* will **remove existing units** from the location. Unlike transfers, the inventory does not go to another location. Units simply disappear from the location. For that reason, you cannot transfer more units from a location than are already present at that location.

Downwards adjustments are usually based on discarding inventory, or as part a true-up or reconciliation of prior inventory tracking. Adjustment downwards automatically removes units from batches based on the first-in first-out (FIFO) batch tracking.

<figure><img src="/files/mLQwUBBuuYP5wJyEn5eO" alt="" width="375"><figcaption><p>Example downwards inventory adjustment</p></figcaption></figure>

## Movement history

Each item in inventory has a **movement history** that shows all transfers, adjustments, and other changes that have affected that item's quantity at each location. To view the movement history for an item:

1. Navigate to the inventory page
2. Click on a specific part or product to view its details
3. Select the "Movement history" tab

The movement history displays a chronological list of all inventory changes including:

* **Transfers** - Units moved between locations
* **Adjustments** - Manual quantity corrections (up or down)
* **Receipts** - Units received from inbound shipments
* **Builds** - Units consumed when building assemblies
* **Replacements** - Units used for asset maintenance or repairs

Each entry shows the date, type of movement, quantity changed, source and destination locations (if applicable), and any associated reference numbers such as shipment or PO numbers. This provides complete traceability for audit, accounting, and regulatory purposes.

## Batching and traceability

Behind the scenes, Hardfin tracks the **batch** that each unit came from. Each group of units from the same batch, at the same location, is tracked as an **inventory lot**. Hardfin follows the **first-in first-out (FIFO)** model of batch tracking. As items are used — whether they are transferred, adjusted, built into [assemblies](/source-and-build/assemblies), or used for replacements — the oldest units are considered to be used first.

For example, for new item LDR-4.1:

* 100 units are received at the *Chicago Warehouse* on January 1. They are assigned batch #0001.
* 25 units are transferred to the *Milwaukee Operations Center* on January 5. These come from batch #0001.
* 200 more units are received at the *Chicago Warehouse* on January 23. They are assigned batch #0002.
* 120 units are transferred from the *Chicago Warehouse* to the *Milwaukee Operations Center* on January 27. Of these, 75 will come from batch #0001 and 45 will come from batch #0002.

#### **Summary table for item LDR-4.1 batch**

<table><thead><tr><th width="83.42189025878906">Time</th><th width="110.44686889648438">Event</th><th>Chicago Warehouse</th><th>Milwaukee Operations Center</th></tr></thead><tbody><tr><td>Dec 31</td><td>End of year</td><td>0 units</td><td>0 units</td></tr><tr><td>Jan 1</td><td>1st order</td><td>100 units (batch #0001)</td><td>0 units</td></tr><tr><td>Jan 5</td><td>Transfer</td><td>-25 units<br>= 75 units (batch #0001)</td><td>+25 units<br>= 25 units (batch #0001)</td></tr><tr><td>Jan 23</td><td>2nd order</td><td><p>+200 units<br>= 275 units</p><p>(75 from batch #0001,<br>200 from batch #0002)</p></td><td>25 units (batch #0001)</td></tr><tr><td>Jan 27</td><td>Transfer</td><td>-120 units<br>= 155 units<br>(155 from batch #0002)</td><td><p>+120 units<br>= 145 units</p><p>(100 from batch #0001,<br>45 from batch #0002)</p></td></tr></tbody></table>

Each group of units from the same batch, at the same location, is tracked as an **inventory lot**. A lot always corresponds to the *combination* of a location and a batch. If batches of units of the same item are split up across locations, they become *multiple* inventory lots. If a location has units of the same item from multiple batches, they become *multiple* inventory lots. This ensures that materials traceability is always maintained for accounting, audit, and regulatory purposes.

So in the above example, the month ends with 155 units in a lot at the Chicago Warehouse (from batch #0002), with 100 units in a lot at the Milwaukee Operations Center (from batch #0001), and with 45 units in another lot at the Milwaukee Operations Center (from batch #0002).

{% hint style="success" %}
Hardfin tracks all of these details **automatically** in the background so that operators do not have to worry about batching and traceability. The details are exportable as needed for accounting, audit, and regulatory purposes.
{% endhint %}


# Assemblies

An **assembly** is a collection of *bulk items* that is *built* together. Assemblies can be built from units of any bulk item in your [items catalog](/set-up-the-basics/items), but are usually built based on a [bill of materials (BOM)](/set-up-the-basics/items#define-bill-of-materials-bom) you've defined.

Assembly is the final step in the **parts workflow** before parts become a production asset:

{% @mermaid/diagram content="---
title: Parts workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
Shipment --Receive--> Inventory --Build--> Assembly --Register--> Asset
style Assembly fill:#F5F9FF
" %}

## List all assemblies

To see a list of all assemblies, navigate to the [assemblies page](https://assets.hardfin.com/assemblies). Here you will see a table with each assembly, along with the following information:

* **Reference number.** Assembly reference number (assigned by Hardfin)
* **Product.** The product that the assembly is based on
* **Location.** The location where the assembly was built
* **Build date.** The date that the assembly was built
* **Actions.** Actions to take on the current assembly

<figure><img src="/files/P0u076Q3v9WFmBvfp2l0" alt=""><figcaption><p>Assembly list page</p></figcaption></figure>

## Viewing assembly details

The **details** of any assembly can be viewed by clicking on the assembly. Assembly details break down across 3 sections:

* build information (an overview of the assembly and its build history)
* parts used (a detailed listing of the parts and serials used to build the assembly)
* notes provided as part of the assembly process

<figure><img src="/files/0RiL3ArqOS6Tuyzwu8Eu" alt=""><figcaption><p>Example assembly build information</p></figcaption></figure>

The build information section includes a link to the originating shipment when parts were received from an inbound shipment. This allows you to trace the assembly back to its source shipment for supply chain traceability and quality assurance purposes.

<figure><img src="/files/IkjpjrKsY5wlz2L3miyH" alt=""><figcaption><p>Example assembly parts information</p></figcaption></figure>

### BOM deviation indicators

When an assembly is built with parts that differ from the product's standard bill of materials (BOM), a **BOM deviation indicator** appears on the assembly. This helps quality assurance and operations teams quickly identify assemblies that were built differently than specified.

**Common reasons for BOM deviations:**

* Substituting alternative parts due to inventory shortages
* Using updated component versions
* Custom configurations for specific customer requirements
* Engineering changes not yet reflected in the product BOM

BOM deviations are automatically detected by comparing the parts used in the assembly against the expected BOM for that product. The system checks both part types and quantities to identify any differences.

## Add an assembly

You can **create** an assembly by clicking the "Create assembly" button.

<figure><img src="/files/ZaXxEvGTWjtfoldY2dAI" alt="" width="375"><figcaption><p>"Create assembly" window</p></figcaption></figure>

When you choose a product, the assembly interface will pre-populate with your [bill of materials (BOM)](/set-up-the-basics/items#define-bill-of-materials-bom) information, if available. You can fill in all the details of your assembly, including:

* assembly location
* build date
* planned serial number (optional)
* parts used
* parts quantities
* any serial numbers known for serialized parts (optional)

<figure><img src="/files/7sv5aiynFzNnRghHbh6K" alt="" width="375"><figcaption><p>Example "create assembly" with details</p></figcaption></figure>

When an assembly is created, the associated units are drawn down immediately from parts inventory at the location where the assembly takes place. If any additional modifications are needed, the assembly should be updated or disassembled.

### Exceeding available inventory

{% hint style="warning" %}
Note: Users are **allowed** to exceed available inventory when building an assembly.
{% endhint %}

You are allowed to exceed available inventory counts at a given location when building an assembly. This is **not** recommended. However, it is permitted to ensure that separate duties can be carried out effectively.

Team members assembling units (operations workers) are usually not the same team members (operations supervisors or finance team) responsible for inventory reconciliation. So assembly creation is the one place where the Hardfin platform allows inventory counts to go "negative" in order to ensure that assembly workflows are not blocked by a delayed inventory reconciliation. If the team members on the ground have the parts to do their job, delayed inventory counts should not slow them down.

In the event that negative counts are created, Hardfin automatically tracks them for future reconciliation as soon as new units are transferred to the assembly location. For more information, see [batching and traceability](/source-and-build/batching-and-traceability).

## Register an asset

An assembly can be **registered** as an asset by clicking the "Register as asset" button on an assembly row.

*Registering an assembly as an asset* opens a window that provides the key details about the assembly, offers an opportunity to confirm the asset **serial** and add an asset **description**. The serial numbers of each part can also be updated or confirmed.

<figure><img src="/files/TVWEY5ujipqnckfJK533" alt="" width="375"><figcaption><p>Register assembly as asset window</p></figcaption></figure>

If the product has metadata fields associated with it, the option to specify **metadata** for the new asset is also provided. This is most commonly used to specify additional asset details, such as firmware or software versions.

### Finalizing asset registration

When you **register** an assembly, you finalize the creation of a new [asset](/run-your-business/assets) from the assembly components, with the corresponding details you have provided. Once an assembly has been registered, the assembly links to the registered asset and the assembly itself can no longer be updated. If any additional modifications are needed, they should be made as modifications to the asset.


# Batching and traceability

## Assemblies

### Exceeding available parts inventory

You are allowed to exceed available inventory counts at a given when building an assembly. This is **not** recommended. However, it is enabled to ensure that separate duties can be carried out effectively.

Team members assembling units (operations workers) are usually not the same team members (operations supervisors or finance team) responsible for inventory reconciliation. So assembly creation is the one place where the Hardfin platform allows inventory counts to go "negative" in order to ensure that assembly workflows are not blocked by a delayed inventory reconciliation. If the team members on the ground have the parts to do their job, delayed inventory counts should not slow them down.

In the event that negative counts are created, Hardfin automatically tracks them for future reconciliation as soon as new units are transferred to the assembly location.


# Fulfillment orders

A **fulfillment order** (FO) is a way to track orders that [items](/set-up-the-basics/items) need to be fulfilled and sent to customers or between locations. Fulfillment orders help you manage what needs to be shipped, where it's going, and when it's promised to arrive.

{% hint style="success" %}
Fulfillment orders provide visibility into what needs to be shipped, in order to help ensure customer commitments are met. They serve as the **planning layer** before actual shipments are created and inventory is moved. It is essentially a **set of instructions**.

As such, an FO is a **business object** that tracks what needs to be shipped, where it's going, and when it's promised to arrive. The FO itself **does not track any items or real world movement**. It is a tool to help organize your logistics and ensure that each team knows what they need to do and when they need to do it.
{% endhint %}

> **Example:** The sales team closes a deal for 10 units of product LDR-4.1 with a customer in Milwaukee. A [project](https://github.com/hardfinhq/user-guide/blob/gitbook/run-your-business/projects.md) is created to track the sale. The supply chain team checks availability and creates a **fulfillment order** to ship 10 units of LDR-4.1 from your Chicago warehouse. The logistics team in the warehouse creates an **outbound shipment** to fulfill the order and ship the 10 units of LDR-4.1 from your Chicago warehouse to the Milwaukee customer location. When the shipment is shipped, the assets appear in transit. When the shipment is delivered, the assets appear in the customer's location.

Fulfillment orders are part of the **logistics workflow** for managing outbound goods:

{% @mermaid/diagram content="---
title: Fulfillment workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
Project\["Project"] --Issue an FO--> FulfillmentOrder\["Fulfillment order"]
FulfillmentOrder\["Fulfillment order"] --Fulfill--> OutboundShipment\["Outbound shipment"] --Ship--> AssetMovement\["Asset movement"]
style FulfillmentOrder fill:#F5F9FF
" %}

{% hint style="info" %}
**Understand fulfillment order relationships**

A **fulfillment order** includes a set of **parts** or **products** (serialized assets) that need to be sent from an origin to a destination.

Each fulfillment order can be linked to a **project** to track which customer engagement the order supports.

Fulfillment orders track optional **promise dates** for when items should ship and when they should arrive at the destination.
{% endhint %}

{% hint style="warning" %}
Note: fulfillment orders are for tracking what needs to be fulfilled and shipped. To actually ship the items and update inventory, you'll create an [outbound shipment](/fulfill-and-deploy/outbound-shipments) based on the fulfillment order.
{% endhint %}

## List all fulfillment orders

To see a list of all fulfillment orders, navigate to the [fulfillment page](https://assets.hardfin.com/fulfillment). Fulfillment orders are listed in a table with each fulfillment order, along with the following information:

* **Order number.** Fulfillment order reference number automatically assigned by Hardfin (e.g., FO-2024-0001), and optionally associated with a [project](https://github.com/hardfinhq/user-guide/blob/gitbook/run-your-business/projects.md)
* **From/to location.** The origin location where items should be shipped from and the destination location where items should be delivered
* **Items.** The parts and products included in this FO with their quantities
* **Promise dates.** Optional promise ship date (when items should be shipped) and promise delivery date (when items should arrive)
* **Status.** The current status of the fulfillment order
* **Notes.** Any additional information about the fulfillment order

<figure><img src="/files/t7dLFtgFG10bSTI5LC4b" alt=""><figcaption><p>Fulfillment orders (FO) list view</p></figcaption></figure>

Use the tabs to filter fulfillment orders by status. Use the **search** to search all fulfillment orders.

## Fulfillment order status

Fulfillment orders progress through different statuses as they are processed:

* **Draft** - Order is being prepared but not yet ready to fulfill
* **Awaiting 3PL** - Order has been sent to a third-party logistics provider and is awaiting processing\*
* **Open** - Order is active and ready to be fulfilled but no items have shipped yet
* **Shipped** - Items are in transit to the destination location
* **Delivered** - Items have been delivered to the destination location
* **Cancelled** - The FO has been cancelled and is no longer valid

The status automatically updates as outbound shipments are created and processed against the fulfillment order.

{% hint style="info" %}
*Note:* "Awaiting 3PL" status only appears if your organization has been enabled for third-party fulfillment.
{% endhint %}

### Status levels

Fulfillment orders also display **status levels** that provide more detailed visibility into the shipment and delivery progress. These levels combine with the base status to show exactly how much of the order has been processed:

<table><thead><tr><th width="164.58984375">Status level</th><th>Meaning</th></tr></thead><tbody><tr><td>Partial</td><td>Some (but not all) items have been recorded</td></tr><tr><td>Full</td><td>All items have been recorded exactly</td></tr><tr><td>Overage</td><td>All items have been recorded, and some in excess</td></tr></tbody></table>

For example, a fulfillment order might show "Shipped — Partial" (some items have shipped but not all), "Delivered — Full" (all items have been delivered), or "Delivered — Overage" (more items were delivered than originally requested).

Status levels help you quickly understand both the overall fulfillment order status and the current state of associated shipments without needing to drill into the shipment details.

### Line item statuses

Each line item on a fulfillment order tracks its own quantities and status:

* **Open quantity** - Items expected but not yet in any shipment
* **Shipped quantity** - Items currently in transit
* **Delivered quantity** - Items delivered to the destination

Each line item displays a status combining a phase (draft, open, shipped, delivered) with a level (partial, full, overage) based on these quantities. This provides visibility into the progress of each individual item within the fulfillment order.

## Add a fulfillment order

To create a new fulfillment order, click the "Add fulfillment order" button and a window will appear. Enter the appropriate details for the order:

* **Order details** - "From" location, "To" location, and optional project association
* **Promise dates** - Optional promise ship date and promise delivery date for customer commitments
* **Items** - Parts or products to be fulfilled
* **Files** - Any files associated with the fulfillment order, such as packing lists, shipping labels, or customer documentation
* **Notes** - Any additional information about the FO

If you associate an FO with a project, it will automatically populate with all the appropriate data to fulfill that project.

<figure><img src="/files/2j7z55ezfqwJd7LCe1de" alt="" width="563"><figcaption><p>Add fulfillment order window</p></figcaption></figure>

Once all required information is entered, click "Create fulfillment order" to confirm. The FO will be created in draft status.

Not all fields are required to create a fulfillment order. At minimum, you need to specify the "From" and "To" locations and at least one item to fulfill.

## View a fulfillment order

To view a fulfillment order, click the FO in the fulfillment order list. It will open the full FO details page showing all order information including:

* **Order details** - Reference number, from/to locations, and associated project
* **Items** - Parts and products to be fulfilled with quantities
* **Promise dates** - Ship and delivery dates for customer commitments
* **Files** - Any files attached to the fulfillment order
* **Notes** - Additional information about the order

<figure><img src="/files/BcynncqRruUEdocxPyxR" alt=""><figcaption><p>Fulfillment order (FO) details</p></figcaption></figure>

From the FO details, you can take action on the fulfillment order.

## Taking action on a fulfillment order

Several actions can be taken on a fulfillment order:

* **Edit.** A draft FO can be edited to change the order
* **Clone.** Creates a new draft fulfillment order with the same details (locations, items, quantities) as the original, allowing you to quickly create similar orders without entering all details from scratch
* **Send to 3PL.** If third-party fulfillment is enabled for your organization *and* the FO is coming "From" a 3PL location, you can send the order to the 3PL (see [Third Party Fulfillment below](#third-party-fulfillment-3pl))
* **Fulfill.** Creates a new outbound shipment against the fulfillment order
* **Cancel.** A fulfillment order can be canceled if it is in Draft or Partially Fulfilled status (unless it has already been sent to a 3PL).

These actions appear at the top right of the fulfillment order details page.

### Creating shipments from fulfillment orders

Once a fulfillment order is ready to ship, you can click "Fulfill" button to create an [outbound shipment](/fulfill-and-deploy/outbound-shipments) to actually move the items and update inventory. The shipment references the fulfillment order number and tracks:

* The actual quantity shipped (which may differ from what was ordered)
* The actual ship date
* The carrier and tracking information
* The actual delivery date

As shipments are created and completed for a fulfillment order, the fulfillment order status automatically updates to reflect the current shipment and delivery progress.

As shipments are shipped against a fulfillment order, the FO status automatically updates. The details of each shipment appear underneath its corresponding line item (on the **Line items** tab) and listed by shipment (on the **Shipments** tab).

<figure><img src="/files/LESZZRdSgeI1p2zIXX7A" alt="" width="563"><figcaption><p>Fulfillment order (FO) line items with shipments in progress</p></figcaption></figure>

## Third-party fulfillment (3PL)

Some fulfillment orders may be handled by third-party logistics providers (3PLs) rather than your own warehouse. Hardfin's 3PL integrations allow you to send fulfillment orders to your 3PL provider and automatically update the fulfillment order status to "Awaiting 3PL" when the order is sent.

If the "From" location has been designated as a 3PL location, the fulfillment order will automatically provide the option to "Send to 3PL" instead of "Fulfill" directly. Once the order is sent to the 3PL, the fulfillment order will automatically be marked as "Awaiting 3PL" status.

<figure><img src="/files/8QTHvk26I9goQr1H6ecA" alt=""><figcaption><p>"Send to 3PL" option on FO</p></figcaption></figure>

Third-party fulfillment orders still track the same information (what needs to be sent, where it's going, promise dates) but indicate that your organization is not directly handling the shipping logistics. When Hardfin receives confirmation from the 3PL that the order has been shipped, the fulfillment order status will automatically update to reflect the shipment and delivery progress.

{% hint style="info" %}
Third-party fulfillment is only available if your organization has third-party fulfillment enabled. Contact your Hardfin representative to enable third-party fulfillment.
{% endhint %}


# Outbound shipments

An **outbound shipment** is how you track assets and parts leaving your facilities for delivery to customers or other locations. Outbound shipments enable you to manage the logistics of finished goods, track in-transit inventory, and maintain visibility throughout the delivery process.

{% hint style="warning" %}
**IMPORTANT: Difference between inbound and outbound shipments**

Hardfin supports *two types of shipments* for different logistics needs:

**Outbound shipments** are for finished goods leaving your facilities:

* Ship assets and parts to customers or other locations
* Track in-transit inventory
* Support the fulfillment workflow for delivering to customers

**Inbound shipments** ([see relevant documentation](/source-and-build/inbound-shipments)) are for parts arriving at your facilities:

* Track parts from suppliers or vendors
* Receive parts into inventory
* Support the parts workflow for building assets

Both shipment types provide tracking, status management, and inventory visibility, but serve different stages of your operations.
{% endhint %}

Outbound shipments are part of the **fulfillment workflow** as assets move from your facilities to customer locations:

{% @mermaid/diagram content="---
title: Fulfillment workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
Asset --Ship--> InTransit\[In transit] --Deliver--> Customer
style InTransit fill:#F5F9FF
" %}

{% hint style="info" %}
**Understand outbound shipment relationships**

An **outbound shipment** includes assets and parts being sent from your facility to a destination. Each shipment is tracked with a unique shipment number (such as `SHP-2024-0001`) and can include tracking information for visibility throughout the delivery process. A shipment can also be associated with a fulfillment order (FO) in order to fulfill it.
{% endhint %}

{% hint style="warning" %}
Note: outbound shipments are for finished goods and assets leaving your facilities. For tracking parts arriving at your facilities, see [inbound shipments](/source-and-build/inbound-shipments).
{% endhint %}

## List all outbound shipments

To see a list of all outbound shipments, navigate to the [outbound shipments page](https://assets.hardfin.com/outbound-shipments). Here you will see a table with each shipment, along with the following information:

* **Reference numbers.** Shipment reference number (assigned by Hardfin), FO number (entered when creating a shipment), and tracking number (optionally provided when recording a shipment)
* **From/to location.** The *from* location and *to* location of this shipment
* **Items.** The assets and parts included in the shipment with their quantities
* **Dates.** The dates associated with this shipment: ship date (the date that the shipment left your facility), expected delivery date (the date you expect the shipment to arrive at its destination), actual delivery date (the date the shipment was actually delivered)
* **Status.** Whether the shipment is pending, shipped, in transit, delivered, or cancelled
* **Actions.** For each shipment status, different actions are available. Pending shipments can be *Marked shipped* or *Cancelled*; Shipped shipments can be *Marked delivered*; In transit shipments can be *Marked delivered*; Delivered shipments are complete and can only be viewed; Cancelled shipments are no longer active

<figure><img src="/files/rttRXw3f2Xdxc9cRiQcy" alt=""><figcaption><p>Outbound shipments list</p></figcaption></figure>

Use the tabs to **filter** outbound shipments by status (Pending, Shipped, In transit, Delivered, or Cancelled). Use the **search** to find specific shipments by FO number, tracking number, or destination.

### Partial phase indicators

Shipments that are partially complete display a **Partial** indicator next to their status. This helps you quickly identify shipments where some but not all items have been processed. For example, a shipment may show "Shipped - Partial" when some items have been shipped but others are still pending, or "Delivered - Partial" when some items have been delivered but others are still in transit.

## View shipment details

To view the full details of an outbound shipment, click on the shipment in the list. The shipment details page displays comprehensive information about the shipment including:

* **Shipment information** - Reference number, FO number, tracking number, carrier, and current status
* **Locations** - Origin and destination locations with addresses
* **Items** - Complete list of assets and parts in the shipment with quantities and serial numbers (if applicable)
* **Timeline** - Key dates including ship date, expected delivery date, and actual delivery date
* **Notes** - Any notes or comments associated with the shipment
* **Activity history** - A log of all status changes and updates to the shipment

From the shipment details page, you can take actions on the shipment based on its current status, such as marking it as shipped, delivered, or cancelled.

## Create an outbound shipment

To create a new outbound shipment, click the "Add outbound shipment" button and a window will appear. Enter the appropriate detail for the shipment that you have available, being sure to enter the appropriate unit quantities of assets and parts in the shipment.

**Only the "From location" and "To" location and a list of items are required to create a shipment.** The expected dates and notes are optional. You can add tracking information and other details later as they become available.

<figure><img src="/files/fHowPyrCNno4X94FLDEm" alt=""><figcaption><p>Create an outbound shipment</p></figcaption></figure>

Once all required information is entered, click "Create shipment" to confirm. The shipment will be created in pending status.

#### Fulfillment order numbers

Each outbound shipment can be optionally associated with a [**fulfillment order (FO)**](/fulfill-and-deploy/fulfillment-orders). When associated, the FO number will appear on the shipment record and in the shipment details screen. You can select an FO from the dropdown when creating a shipment, or you can later add an FO from the dropdown when editing a shipment.

When you select an FO relevant details, such as the "From" and "To" locations, are populated automatically.

<figure><img src="/files/EapotnKP5HjycW0z18Mb" alt=""><figcaption><p>Outbound shipment with fulfillment order pre-populated</p></figcaption></figure>

## Ship an outbound shipment

When a pending outbound shipment is ready to leave your facility, mark it as **shipped**. This action:

* Records the actual ship date
* Moves assets and parts into "in-transit" status
* Updates inventory to reflect items that have left your facility
* Makes the shipment visible in transit tracking

To mark a shipment as shipped, click the "Mark as shipped" action for the pending shipment. You can update the ship date such as shipment notes. If there are serialized assets on the shipment, the serials must be entered at this time.

<figure><img src="/files/aRnWqnO7EeuMPV9pfFAr" alt="" width="375"><figcaption><p>Mark outbound shipment as shipped</p></figcaption></figure>

When a shipment is shipped, its status updates to **Shipped** automatically.

{% hint style="danger" %}
Shipped shipments can only get **partial** updates: tracking information, "To" location, expected dates, and shipment notes.
{% endhint %}

### Correcting errors on shipped shipments

If you need to correct the quantity of bulk (non-serialized) items on a shipment that has already been shipped, you can use the **Correct error** action. This is useful when the actual shipped quantity differs from what was originally recorded.

To correct an error:

1. Navigate to the shipment details page for the shipped shipment
2. Click the "Correct error" action
3. Adjust the quantities for bulk items as needed
4. Confirm the correction

{% hint style="info" %}
The "Correct error" action is only available for bulk items (non-serialized parts). Serialized assets cannot be corrected in bulk after shipping because their serial numbers are tracked individually. To correct serialized asset errors, simply go to the corresponding asset and update its movement history.
{% endhint %}

## Carrier tracking

Outbound shipments support carrier tracking to help you monitor deliveries after items leave your facility. You can record the following carrier details on any outbound shipment:

* **Carrier name** — The shipping carrier handling the delivery (e.g., FedEx, UPS, DHL)
* **Tracking number** — The carrier-assigned tracking number for the shipment

Carrier tracking information can be added when creating a shipment, or updated at any time by editing the shipment. Once a tracking number and URL are recorded, the tracking number appears as a clickable link in the shipment list and detail views, allowing you to check delivery status directly from Hardfin. Shipment dates (ship, deliver) are updated automatically for known carriers.

## Track in-transit inventory

Once an outbound shipment is marked as shipped, the items in that shipment are tracked as **in-transit inventory**. This means:

* Assets and parts are no longer at your facility but haven't arrived at the destination yet
* You maintain visibility into what's currently being transported
* The items are not available for other shipments or projects until delivered
* You can track the location and status of items throughout the delivery process

In-transit inventory appears in your inventory views with a special status indicator showing the items are currently being shipped.

## Deliver an outbound shipment

When a shipped outbound shipment arrives at its destination, mark it as **delivered**. This action:

* Records the actual delivery date and location
* Completes the shipment lifecycle
* Updates asset locations to reflect their new destination
* Removes items from in-transit status

To mark a shipment as delivered, click the "Mark as delivered" action for the shipped shipment. You can confirm the delivery date and location, and add any notes about the delivery.

<figure><img src="/files/l1nU8pyeNpYnX9qEBH2c" alt="" width="375"><figcaption><p>Mark outbound shipment as delivered</p></figcaption></figure>

When a shipment is delivered, its status updates to **Delivered** automatically.

Once a shipment is marked as delivered, the assets and parts are considered to be at the destination location and the shipment record is complete.

## Cancel an outbound shipment

If an outbound shipment is no longer needed, you can cancel it. Cancelling a shipment is useful when orders change, customers cancel, or logistics plans need to be adjusted.

To cancel a shipment, click the "Cancel" action for a pending shipment. You will be prompted to provide a reason for the cancellation. This reason is recorded for audit purposes and helps maintain clear records of why shipments were cancelled.

When a shipment is cancelled:

* The shipment status updates to **Cancelled**
* The items remain at their current location (no inventory changes occur)
* The shipment is no longer active but remains in the system for record-keeping
* Any associated fulfillment order is updated to reflect the cancellation

{% hint style="warning" %}
Only **Draft** shipments can be cancelled. Once a shipment has been marked as shipped, it cannot be cancelled because items are already in transit. If you need to handle a shipment that has already been shipped, you should mark it as delivered and then process a return if needed.
{% endhint %}

Cancelled shipments appear in the Cancelled tab on the outbound shipments list and can be viewed for historical reference.


# Return orders

A **return order** (RO) is a way to track when a customer returns a product. Return orders help you manage the return process, including the reason for return, the status of the returned item, and any associated logistics.

{% hint style="success" %}
Return orders provide visibility into what needs to be returned, in order to help ensure customer returns are received. They serve as the **planning layer** before actual shipments are created and inventory is received. It is essentially a **set of instructions**.

As such, an RO is a **business object** that tracks what needs to be returned, where it's coming from, and when it's promised to arrive. The RO itself **does not track any items or real world movement**. It is a tool to help organize your logistics and ensure that each team knows what they should expect and when.
{% endhint %}

> **Example:** A customer in Milwaukee needs to return a unit of product LDR-4.1 that is no longer needed. The support team creates a **return order** to track the return: the customer will ship the unit back to your Chicago warehouse. The return order tracks the return reason, expected arrival, and receipt of the returned product.

## List all return orders

To see a list of all return orders, navigate to the [return orders page](https://assets.hardfin.com/return-orders). Return orders are listed in a table with the following information:

* **Order number.** Return order reference number automatically assigned by Hardfin
* **Product.** The product being returned
* **Reason.** The reason for the return
* **Status.** The current status of the return order
* **Created date.** When the return order was created

Use the tabs to filter return orders by status. Use the search to find specific return orders.

<figure><img src="/files/2qQ8LlGAfLfs1uhryRpp" alt=""><figcaption><p>Return orders (RO) list page</p></figcaption></figure>

## Return order status

Return orders progress through different statuses as they are processed:

* **Draft** - Order is being prepared but not yet active
* **Awaiting 3PL** - Order has been sent to a third-party logistics provider and is awaiting processing\*
* **Open** - Order is active but no items have shipped yet
* **Shipped** - Items are in transit back to the return location
* **Delivered** - Items have been delivered to the return location
* **Received** - Items have been received into inventory
* **Cancelled** - The RO has been cancelled and is no longer valid

The status automatically updates as inbound shipments are created and processed against the return order.

{% hint style="info" %}
*Note:* "Awaiting 3PL" status only appears if your organization has been enabled for third-party fulfillment.
{% endhint %}

### Status levels

Return orders also display **status levels** that provide more detailed visibility into the shipment and receiving progress. These levels combine with the base status to show exactly how much of the order has been processed:

<table><thead><tr><th width="172.92578125">Status level</th><th>Meaning</th></tr></thead><tbody><tr><td>Partial</td><td>Some (but not all) items have been recorded</td></tr><tr><td>Full</td><td>All items have been recorded exactly</td></tr><tr><td>Overage</td><td>All items have been recorded, and some in excess</td></tr></tbody></table>

For example, a return order might show "Shipped — Partial" (some items have shipped but not all), "Delivered — Full" (all items have been delivered), or "Received — Overage" (more items were received than originally expected).

Status levels help you quickly understand both the overall return order status and the current state of associated shipments without needing to drill into the shipment details.

### Line item statuses

Each line item on a return order tracks its own quantities and status:

* **Open quantity** - Items expected but not yet in any shipment
* **Shipped quantity** - Items currently in transit
* **Delivered quantity** - Items delivered but not yet received into inventory
* **Received quantity** - Items received into inventory

Each line item displays a status combining a phase (open, shipped, delivered, received) with a level (partial, full, overage) based on these quantities. This provides visibility into the progress of each individual item within the return order.

## Add a return order

To create a new return order, click the "Add return order" button and a window will appear. Enter the appropriate details for the order:

* **Return type** - The type of return (e.g., exchange, warranty, defective, etc.)
* **Return reason** - Why the product is being returned
* **Return location** - Where the product should be returned to
* **Dates promised** - The date when the product is expected to be returned
* **Transportation**
  * "Carrier" - The shipping carrier for the return (e.g., FedEx, UPS, DHL)
  * "Tracking number" - The carrier's tracking number for the return shipment
* **Items** - The parts or products being returned
* **Notes** - Any additional information about the return
* **Files** - Any files associated with the return

Once all required information is entered, click "Add return order" to confirm.

<figure><img src="/files/3ohsX44KG0E4YZW4ql2e" alt="" width="563"><figcaption><p>"Add return order" window</p></figcaption></figure>

## View a return order

To view a return order, click the order in the return orders list. The return order details page shows:

* The return type, reason, and any notes
* The items being returned
* Transportation details (carrier and tracking number, with a clickable link to track the shipment)
* The expected return location and dates
* Any associated inbound shipments
* The status and history of the return order

<figure><img src="/files/beTWNdQfJRiwJYF1Rsby" alt=""><figcaption><p>Return order (RO) details page</p></figcaption></figure>

## Taking action on a return order

Several actions can be taken on a return order:

* **Edit.** Update the return order details
* **Clone.** Creates a new draft return order with the same details (return type, reason, location, items) as the original, allowing you to quickly create similar orders without entering all details from scratch
* **Send to 3PL.** If third-party fulfillment is enabled for your organization *and* the return location is a 3PL location, you can send the order to the 3PL (see [Third-party fulfillment below](#third-party-fulfillment-3pl))
* **Fulfill.** Record shipment against the return order
* **Cancel.** Cancel the return order if no longer needed (only available for *Draft* return orders)

As shipments are received against a return order, the RO status automatically updates. The details of each shipment appear underneath its corresponding line item (on the **Line items** tab) and listed by shipment (on the **Shipments** tab).

## Third-party fulfillment (3PL)

Some return orders may be received by third-party logistics providers (3PLs) rather than your own warehouse. Hardfin's 3PL integrations allow you to send return orders to your 3PL provider and automatically update the return order status as items are received.

If the return location has been designated as a 3PL location, the return order will automatically provide the option to "Send to 3PL" instead of receiving directly. Once the order is sent to the 3PL, the return order will automatically be marked as "Pending" status.

Third-party return orders still track the same information (what is being returned, where it's coming from, expected dates) but indicate that your organization is not directly handling the receiving logistics. When Hardfin receives confirmation from the 3PL that items have been received, the return order status will automatically update.

{% hint style="info" %}
Third-party fulfillment is only available if your organization has third-party fulfillment enabled. Contact your Hardfin representative to enable third-party fulfillment. [Read more about third-party fulfillment.](/advanced-options/third-party-fulfillment)
{% endhint %}


# Exchanges

An **exchange** is a way to track when a customer exchanges one product for another. Exchanges help you manage product swaps, ensuring accurate records of what was returned and what was sent as a replacement.

{% hint style="success" %}
Exchanges provide visibility into product exchanges with customers. They track both the incoming product being returned (via a [return order](/fulfill-and-deploy/return-orders)) and the outgoing product being sent as a replacement (via a [fulfillment order](/fulfill-and-deploy/fulfillment-orders)), maintaining a complete record of the exchange transaction.
{% endhint %}

> **Example:** A customer in Milwaukee has a defective unit of product LDR-4.1 and needs a replacement. The support team creates an **exchange** to track the swap: the customer will return the defective unit, and your supply chain team will send a replacement unit from your Chicago warehouse. The exchange tracks both sides of the transaction in a single record.

## What is an exchange

An exchange is a **pair** of orders that are linked together:

* a [fulfillment order (FO)](/fulfill-and-deploy/fulfillment-orders) for the outbound items
* a [return order (RO)](/fulfill-and-deploy/return-orders) for the inbound items

By default, an exchange is set up to swap the **same** SKUs and quantities. But an exchange can easily adapt to send and receive **different** SKUs or quantities, depending on your needs.

#### Example: defective product replacement

You can use exchanges to replace defective products one for one.

{% columns %}
{% column %}
**Fulfill**

* Sensor *Basic* (Quantity: 2)
  {% endcolumn %}

{% column %}
**Return**

* Sensor *Basic* (Quantity: 2)
  {% endcolumn %}
  {% endcolumns %}

#### Example: unit upgrades

You can use exchanges to upgrade products in place (whether they are defective or not).

{% columns %}
{% column %}
**Fulfill**

* Sensor *Premium* (Quantity: 2)
  {% endcolumn %}

{% column %}
**Return**

* Sensor *Basic* (Quantity: 2)
  {% endcolumn %}
  {% endcolumns %}

#### Example: return defective, upgrade, and expand

You can also use exchanges to coordinate more sophisticated activity, such as concurrent returns, upgrades, and expansions.

{% columns %}
{% column %}
**Fulfill**

* Sensor *Premium* (Quantity: 4)
* *Wireless* Charger (Quantity: 4)
* *Add-on* Pack (Quantity: 2)
  {% endcolumn %}

{% column %}
**Return**

* Sensor *Basic* (Quantity: 2)
* *Wired* Charger (Quantity: 2)
  {% endcolumn %}
  {% endcolumns %}

## Add an exchange

To create a new exchange, click the "Exchange" button on a project and the exchange window will appear. Enter the appropriate details for the exchange.

**1) Set up fulfillment order (FO).** First enter the [fulfillment order](/fulfill-and-deploy/fulfillment-orders) details for the outbound items:

<figure><img src="/files/J7OrKLhSQ0mB9jI7Y3ET" alt=""><figcaption><p>Entering fulfillment order as part of exchange</p></figcaption></figure>

**2) Set up return order (RO).** Next enter the [return order](/fulfill-and-deploy/return-orders) details for the inbound items:

<figure><img src="/files/P6dsr8FtQT7ra3In2K2l" alt=""><figcaption><p>Entering return order as part of exchange</p></figcaption></figure>

**3) Review exchange summary.** Finally review and confirm the corresponding fulfillment and return details:

<figure><img src="/files/It8opvEbHW3Nve60msKP" alt=""><figcaption><p>Exchange confirmation window</p></figcaption></figure>

{% hint style="success" %}
**Exchanges support different items and quantities.** Sending out upgraded units? Swapping a mismatched quantity? No problem! The fulfillment and return orders on an exchange do not have to use the same SKUs or quantities.
{% endhint %}

Once all required information is entered, click "Add exchange order" to confirm. This will confirm the Exchange, show the Exchange number (such as `EX-2026-0001`) and set up both a fulfillment order and return order associated with the Exchange.  The FO and RO numbers will be shown and linked start executing the exchange.

<figure><img src="/files/2lk60d0CEPQi0u16isD3" alt="" width="563"><figcaption><p>Exchange confirmation window</p></figcaption></figure>

## View an exchange

Exchange information appears *inline* on both the related fulfillment order and exchange order.

#### On fulfillment and return pages

Exchange details, including the exchange code and the related order appear at the top of both the fulfillment order and the return order details pages.

<figure><img src="/files/At9CwTZY97K9cA12vOGZ" alt="" width="323"><figcaption><p>Example of exchange showing on FO detail page</p></figcaption></figure>

#### On the fulfillment and return lists

Fulfillment orders and return orders are also tagged as "Exchange" with a small badge on the order list pages. The exchange details, including the exchange code and the related order, appear in a tooltip by hovering over the badge.

<figure><img src="/files/k4WOZ1rvOdKkr7X8DKQe" alt="" width="563"><figcaption><p>Example of exchange showing on FO list page</p></figcaption></figure>

## Edit an exchange

Once the fulfillment order and the return order have been created from the exchange, each can be managed individually.  This allows flexibility to accommodate your workflow. You can decide whether your team needs to fulfill immediately, or wait to receive items first.

If you need to adjust the exchange, simply edit either the FO or the RO.  You can adjust SKUs, update quantities, correct locations, or make any other changes that you would normally make to an FO or RO.

If you need to cancel the exchange, you can cancel the FO and RO.  If you need to cancel only one side of the exchange, simply cancel either the corresponding FO or RO.

{% hint style="warning" %}
Once created, the details of both the fulfillment order and the return order can be updated. If you need to adjust the exchange, simply edit either the FO or the RO. Or if you need to cancel the exchange, you can cancel either or both the FO or RO.

But the *exchange itself* cannot be modified (for example, you cannot unlink the FO and RO, or link a different FO to the existing exchange).
{% endhint %}


# Assets

An **asset** is a physical thing that you offer to your customers. Assets may be located at locations. Some organizations use other words to describe an asset, such as:

* Hardware
* Device
* Machine
* Equipment

Other organizations may use more industry-specific terminology, such as endpoint, node, robot, printer, sensor, or other terms.

Assets can be imported directly into Hardfin (via CSV, API, or ERP). If you are using the [supply chain module](/core-modules), assets are the final step in the **parts workflow** after an assembly is registered:

{% @mermaid/diagram content="---
title: Parts workflow
config:
look: handDrawn
theme: neutral
--------------

graph LR
Shipment --Receive--> Inventory --Build--> Assembly --Register--> Asset
style Asset fill:#F5F9FF
" %}

{% hint style="info" %}
**Understand asset relationships**

An **asset** must be located at a **location**, unless it is *in transit*. (An asset cannot have more than one location at once.)

An **asset** must also have an **owner**, which is either your organization (for assets that have been leased or rented) or a customer (for assets that have been sold).
{% endhint %}

## List all assets

To see a list of all assets, navigate to the [assets page](https://assets.hardfin.com/assets). Here you will see a table with each asset's serial number, operational status, product type, associated project, location, owner, and recent activity.

Use the **search** or **filter** options to refine the asset list.

<figure><img src="/files/mn6r2aZhRkEmufq5ePk0" alt=""><figcaption><p>Asset list view</p></figcaption></figure>

#### Filter by deployment stage

The asset list includes a filter group to view assets by their current stage of the deployment lifecycle:

* **In stock** - Assets currently at inventory locations
* **In transit to field** - Assets being shipped to customer locations
* **In the field** - Assets deployed at customer locations
* **Returning to stock** - Assets being shipped back to inventory locations

Use the **Clear filters** button to reset all active filters and view the complete asset list.

## View individual asset details

To view the full details of an asset, click on an asset serial number in the asset list.

<figure><img src="/files/wUhwmHBEot8cRTdQghn8" alt=""><figcaption><p>Open asset details</p></figcaption></figure>

The asset details page will appear showing the asset details.

<figure><img src="/files/t9etqrXbavr3mk3qeQhh" alt=""><figcaption><p>Asset details page</p></figcaption></figure>

This page includes all the core details of the asset at the top of the page, including serial, description, status, owner, current location, and current project:

<figure><img src="/files/1dJgtz1QlLJCcj0i5Fw4" alt=""><figcaption><p>Core details of the asset</p></figcaption></figure>

Asset details also include full timelines for project assignment (commercial activity) and asset movement (logistics history):

<figure><img src="/files/tbTAfqnLmZAv6jSUP9U8" alt=""><figcaption><p>Assset timeline history</p></figcaption></figure>

Details also include sections for [activity history](#review-and-add-asset-activity), [asset metadata](#asset-metadata), [files and links](#manage-asset-files-and-links), and [accounting details](#manage-asset-accounting-details):

<figure><img src="/files/12kuSvuna3WiJq8ix3Js" alt=""><figcaption><p>Additional asset detail sections</p></figcaption></figure>

Asset details also include a full [audit log](/monitor-the-details/audit-log) of the changes made to the asset over time.

## Create an asset

Users can choose whether to add individual asset data or upload asset data in bulk. Navigate to the asset list and choose the "Add asset data" button.

<figure><img src="/files/s5reBwTXGeJs3mOPvYhm" alt="" width="563"><figcaption><p>"Add asset data" options</p></figcaption></figure>

{% hint style="success" %}
You can also sync assets via [direct integration](/manage-your-account/integrations) or [API connection](/advanced-options/api-access).
{% endhint %}

To create an individual asset, select "Add individual asset" button and a window will appear. Choose the appropriate product for the asset, enter the asset's serial. select the correct location, and choose the right [inventory date](#user-content-fn-1)[^1] for the asset, then click "Add."

<figure><img src="/files/oRMb1Cvphyy0v9TdAe2K" alt="" width="375"><figcaption><p>"Add asset" window</p></figcaption></figure>

All four fields are required to create a new asset.

### Bulk creation

Users can upload or update assets in bulk via a file upload, API connection, or direct integration.

#### Asset data uploader

The **asset data uploader** provides an intuitive interface for importing asset information and metadata in bulk. This tool streamlines the process of adding multiple assets to the platform, or of updating asset data/metadata in bulk.

**Using the uploader:**

1. Navigate to the assets page and choose the "Add asset data" button to open a chooser window
2. Choose from one of the three bulk options:
   * **Import new assets** - Upload file with new assets for your organization
   * **Update existing assets** - Update basic asset data (such as status or description) for assets already in the system
   * **Update asset metadata** - Update custom [asset metadata](/run-your-business/assets/manage-asset-metadata) that you have configured (such as OEM model or firmware version)
3. Choose your CSV data file with columns mapped to the appropriate asset fields
4. Upload your file and Hardfin automatically validates your data
5. Review the data results to ensure accuracy

Each uploader provides real-time validation and clear error messages to help you resolve any data issues before completing the import.

**Import time estimates:** When uploading large files, the uploader displays an estimated processing time based on the number of records in your file. A countdown timer shows the remaining time, and warnings appear for uploads that may take longer to process.

#### Other bulk creation options

To configure an integration with a CRM or ERP, or to set up [API access](/advanced-options/api-access), please [contact support](mailto:support@hardfin.com).

## Edit an asset

To edit details for an asset, hover over the detail you want to edit and click the pencil icon ✏️. For example, hover over the asset serial and you will see a small pencil:

<figure><img src="/files/lOY06fXRinQMaD9h71zk" alt="" width="195"><figcaption><p>Hover asset serial</p></figcaption></figure>

Click the pencil to open the edit interface:

<figure><img src="/files/O1hjOPIkt5ZIp7TLSogm" alt="" width="375"><figcaption><p>Asset serial edit</p></figcaption></figure>

Editing some details, such as status and ownership may require different information. For example, to change asset **status**:

<figure><img src="/files/AiM1zWsnqYvciWNYsozf" alt="" width="221"><figcaption><p>Asset status edit</p></figcaption></figure>

#### Asset status options

Assets can be assigned one of three functional status levels to track their operational condition:

* **Functional** - Asset is operating normally and available for use
* **Pending** - Asset requires review or attention before being considered fully operational (displayed with yellow warning icon)
* **Non-functional** - Asset is not currently operational and requires repair or replacement

{% hint style="info" %}
The **Pending** status is particularly useful for assets that need inspection, configuration, or approval before being deployed. This three-way status system provides better visibility into asset readiness and helps teams prioritize maintenance and deployment activities.
{% endhint %}

Status changes are automatically tracked in the asset's audit log, providing a complete history of operational state changes over time.

For example, to change asset **ownership**:

<figure><img src="/files/T0MPZR23mCswpui7794V" alt="" width="375"><figcaption><p>Asset ownership edit</p></figcaption></figure>

## Asset quick actions

**Quick actions** provide fast access to frequently used asset management functions directly from asset detail pages and list views. These streamlined buttons reduce the time needed to perform common asset operations.

* **Add ticket** - Open a ticket attached to this asset to track support requests, repairs, or action items. [Learn more about tickets.](/run-your-business/tickets)
* **Upload file** - Attach a file to the asset record
* **Add link** - Link a URL directly to the asset
* **Assign/unassign** - Assign the asset to a project
* **Move/plan** - Initiate asset movement to a new location
* **Action** - Log asset activity directly

## Assign an asset (change asset project)

You can change an asset's current **project** by assigning or unassigning the asset. This allows you to enter the full history of how your assets are related to your commercial activity. [Read more about assignments, how they work, and why they are important.](/run-your-business/assignments)

**Assigning** the asset to the project requires choosing the "Assign" button, selecting the project, and specifying the effective date of the assignment:

<figure><img src="/files/Oc83RukmunxzxTBeXXfk" alt="" width="375"><figcaption><p>Asset assignment window</p></figcaption></figure>

Assets may be assigned to a project however makes sense for your business, based on your downstream reporting needs.

### Unassigning an asset

You can remove an asset from its current project by **unassigning** the asset. This allows you to confirm the end date of that asset's affiliation with this commercial activity.

**Unassigning** the asset from the project requires choosing the "Unassign" button and and specifying the effective date of the unassignment:

<figure><img src="/files/ljsOnNsFM7PGBxyg9syJ" alt="" width="375"><figcaption><p>Asset unassignment window</p></figcaption></figure>

### Assignment date ranges

Assignment date ranges are exclusive and an asset cannot be assigned to two projects at once, so the dates cannot overlap. An asset must be unassigned from one project in order to be assigned to another.

## Move an asset (change an asset's location)

Asset **movement** allows you to record movements from one location to another, which automatically updates the asset's current location.

Asset moves are entered with an origin location and ship date (the date the asset left the origin) and a destination location and arrival date (the date the asset arrived at the destination).

You can enter shipment tracking information to automatically record shipment and delivery details from prominent shipping carriers.

Moves can be entered for an individual asset or for a group of assets. [Learn more about moving assets.](/run-your-business/assets/move-assets)

## Review and add asset activity

Asset **activity** shows the full history of the assets **movements** and **actions**.

<figure><img src="/files/F5jObQIKwoQAYssoDsjX" alt="" width="375"><figcaption><p>Asset activity history</p></figcaption></figure>

All movements appear in the history view automatically. Additional **actions** can be added to the history by choosing the "Action" button and selecting the appropriate event and date that correspond to this asset.

<figure><img src="/files/oDu5AiQVBlX7VL7eUxxD" alt="" width="375"><figcaption><p>Add asset action window</p></figcaption></figure>

The default events in Hardfin include Deploy, Activate, and Install. If you would like to customize the events available in your organization, please [contact support](mailto:support@hardfin.com).

## Manage asset ownership

Asset ownership controls whether an asset is owned by your organization or by a customer. This affects how the asset appears in reports, and how the asset is classified for accounting and financial reporting. Learn more about [managing asset ownership](/run-your-business/assets/manage-asset-ownership).

## Manage asset tickets

**Tickets** can be attached to asset records to track necessary actions and work items related to the asset. You can also attach existing tickets to assets or detach them as needed.

Asset tickets are visible on the "Tickets" tab for each asset. They can be filtered by status (All, Open, Closed) to help prioritize work.

Common use cases include:

* Installation tasks for new equipment
* Repair requests during service contracts
* Follow-up actions after asset deployment
* Investigation or inspection tasks
* General asset-related work items

<figure><img src="/files/hvEKL6Mj8mWDzRiuuPMX" alt=""><figcaption><p>Asset tickets tab</p></figcaption></figure>

**To create a ticket for an asset**

1. Navigate to the asset details page
2. Click on the "Tickets" tab
3. Click "Open ticket" to create a new ticket
4. The ticket will be automatically attached to this asset

[Learn more about tickets in Hardfin.](/run-your-business/tickets)

## Manage asset files and links

**Files and links** can be attached to asset records on the "Files and links" tab of the asset details screen. This functionality is primarily used for records related to the asset, such as procurement history, bill of materials breakdown, or sales records. [Learn more about files and links in Hardfin.](/monitor-the-details/files-and-links)

## Manage asset accounting details

You can provide asset **accounting details** on the "Accounting" tab of the asset details screen. These details are useful in order to report on the fleet costs, manage depreciation, and calculate gains on sale and disposal. The core details are visible on the "Accounting" tab and include cost basis, salvage value, useful life, and the asset in-service date:

<figure><img src="/files/dC8EYAo1euA64Rg67Buk" alt=""><figcaption><p>Asset accounting details</p></figcaption></figure>

### Automatic in-service date management

The **in-service date** determines when an asset begins depreciating and is a critical field for accurate financial reporting. Each asset can have its in-service date managed automatically by Hardfin AI ✨ or manually by the user. The default for all assets is automatic management, unless the asset was **imported with an in-service date**, in which case the asset will be set to manual mode so Hardfin AI knows not to override the date.

**Automatic management** tracks asset delivery events and automatically updates in-service dates based on the earliest date an asset is delivered to a customer non-inventory location. When the system updates or information is provided or deleted, Hardfin AI ✨ reviews and updates asset in-service dates if appropriate. This ensures consistent tracking based on actual deployment events without requiring manual data entry.

**Manual management** allows you to set and update the in-service date directly. This is useful for special cases where the automatic date doesn't reflect the actual in-service timing, such as assets that require additional setup time after delivery before becoming operational.

**Switching between modes:**

You can toggle between automatic and manual management at any time from the asset accounting section. When switching from manual to automatic, Hardfin AI ✨ will recalculate the in-service date. When switching from automatic to manual, the current date is preserved and will no longer be update automatically. You can edit it as needed.

Whenever a user edits the in-service date for an asset, that asset is immediately switched into manual management mode.

All changes to in-service dates are tracked in the [asset audit log](/monitor-the-details/audit-log), with automatic updates attributed to the system for clear visibility into how dates were determined.

### Advanced cost breakdown

For more detailed cost tracking and analysis, the **advanced cost breakdown** feature can categorize the total cost basis into specific cost components. This provides granular visibility into different cost categories for comprehensive financial reporting and cost management. An advanced cost breakdown allows users to set detailed cost categories:

**Acquisition costs**

* **Equipment or bill of materials (BOM)**: Cost of purchased devices, raw materials, parts, or assemblies that make up the asset
* **Direct assembly labor**: Labor directly attributable to assembling or preparing the asset before deployment
* **Indirect allocated overhead**: Indirect overhead tied to asset acquisition or preparation, such as supervision, facilities, and utilities
* **Inbound freight**: Transportation costs to bring materials or asset into your warehouse or staging site
* **Acquisition taxes**: Non-recoverable taxes (e.g., sales tax, use tax, or import VAT) paid on acquisition of the asset, materials, or parts
* **Import duties**: Customs duties, tariffs, and import fees on foreign-sourced assets, materials, or parts
* **Capitalizable interest**: Capitalizable financing costs incurred during construction or long deployment projects

**Deployment costs**

* **Outbound freight**: Transportation costs to deliver the asset from your warehouse or staging site to its operating location in preparation for deployment
* **Installation and setup**: Setup, site preparation, configuration, commissioning, and testing costs to prepare the asset for deployment and make it operational

<figure><img src="/files/WbjYUcUcO38hrQzueC3k" alt="" width="563"><figcaption><p>Advanced cost breakdown for an asset</p></figcaption></figure>

**Acquisition vs deployment costs** If your organization is using advanced cost basis, the distinction between **acquisition costs and deployment costs** is relevant for your accounting reports:

* **Acquisition costs** are always included in the cost basis for inventory. These are expected to be costs that were incurred in sourcing the asset. These costs move into fixed assets when an asset goes into service.
* In contrast, **deployment costs** are not included in your inventory cost basis. These are expected to be costs that are incurred as the asset is deployed (i.e., as it is leaving inventory and going into service). They capitalize at the time the asset goes into service.

**How advanced cost breakdown works:**

* **Detailed categorization** - Break down total cost basis into specific cost components
* **Financial reporting** - Generate detailed cost analysis reports for accounting and compliance
* **Cost management** - Better understand and manage different types of asset costs
* **Inheritance from products** - New assets can inherit cost breakdown defaults from their product templates

All of these values are included in your asset export for easy analysis when you export asset information.

### Bulk upload accounting data

You can update accounting details for multiple assets at once using the **accounting data uploader**. This feature allows finance teams to efficiently manage cost basis, depreciation, and other accounting information across your asset fleet.

**To upload accounting data:**

1. Navigate to the assets page and choose the "Add asset data" button
2. Select "Update existing assets" from the bulk options
3. Download the template file with the toggle for "Include advanced accounting fields" if needed
4. Fill in your accounting data in the CSV template
5. Upload your completed file

The uploader supports two accounting modes:

**Simple cost basis mode** - Use this mode when you track a single cost basis value for each asset. This is the most common approach and works well for straightforward asset accounting.

**Advanced accounting mode** - Use this mode when you need to track detailed cost components separately. Advanced fields include:

* Bill of materials cost
* Direct labor cost
* Allocated indirect costs
* Freight inbound cost
* Freight outbound cost
* Installation cost
* Tax
* Tariffs
* Interest

{% hint style="warning" %}
You cannot use both simple and advanced modes in the same upload. Choose one approach based on your accounting requirements.
{% endhint %}

The system validates all accounting data during upload, ensuring that values are non-negative and properly formatted. Clear error messages help you resolve any data issues before completing the import.

## Asset metadata

Asset **metadata** define details for each asset based on the [fields that are defined for that product](/set-up-the-basics/items/manage-item-fields). This metadata is set for the specific asset, so that each asset of this product type can have different metadata. [Learn more about managing asset metadata.](/run-your-business/assets/manage-asset-metadata)

## Scrapping assets at end of life

Assets are **scrapped** at the end of their life, most often when an asset has been disposed, dismantled, destroyed, or lost. Scrapped assets are not expected to return to service, although they may be dismantled and have their parts repurposed as part of other finished goods. [Learn more about scrapping assets.](/run-your-business/assets/scrapping-assets-at-end-of-life)

## Asset reports

Hardfin comes with many dashboards and reports available out of the box for assets.

[Learn more about asset dashboards.](/monitor-the-details/dashboards)

[Learn more about asset reports.](/monitor-the-details/reporting/asset-reports)

[^1]: The inventory date is the first date that the asset entered inventory. It is used to calculate time series for asset histories and accounting.


# Move assets

Asset **movement** allows you to record movements from one location to another. Moving the asset automatically updates the asset's current location.

Asset moves are entered with an origin location and ship date (the date the asset left the origin) and a destination location and arrival date (the date the asset arrived at the destination).

## Entering individual moves

Moves can be entered for an **individual asset** by going to the asset details page and choosing "Move / Plan" from the asset movement timeline:

<figure><img src="/files/HsdZEXxo2XjZITzbVG2A" alt="" width="563"><figcaption><p>Move or plan an individual asset</p></figcaption></figure>

This opens the move interface with all options for planning, updating, and tracking asset movements:

<figure><img src="/files/XUV7hZgzCFeKsRhhDi7x" alt=""><figcaption><p>Asset move window</p></figcaption></figure>

You can enter new asset moves in any order, and Hardfin will automatically recalculate the asset's entire location history and determine the asset's current location. For example, you may enter the most recent asset move first, [then record the original shipment later](#user-content-fn-1)[^1].

### Required move details

To **begin** recording a move, you must provide *both* an origin or destination location.

If you are specifying **times** yourself, you must provide *either* an ship date or a delivery date. Dates may be either expected or actual. If you are using [automatic carrier tracking](#automatic-carrier-tracking) then you only need to provide a carrier tracking number and the dates will be reported automatically by the shipping carrier.

For completeness, it's always best to enter as much information as you have. Hardfin's advanced algorithms will always automatically recalculate the asset's movement history based on partial information, in order to intelligently determine the asset's current location at any point in time.

To **complete** a move, you should provide *both* a ship *and* a delivery date.

You can always **edit** a move that has already been entered, whether partial or complete. Just click on the move and it will open the window to update the move record or enter additional details.

<figure><img src="/files/qqBRFKr5JrKjmt1AhG4n" alt="" width="375"><figcaption><p>Move details appear on hover</p></figcaption></figure>

### Expected move dates (including planned moves)

You can **plan** moves by entering expected move dates when you expect to ship or deliver assets. These dates are used for reporting in inventory calculations and demand planning. They are also used to trigger relevant [notifications](/monitor-the-details/notifications) when assets have passed their expected ship or delivery dates, but an actual date has not yet been recorded.

### Promise dates for asset moves

**Promise dates** allow you to set customer-facing delivery commitments for asset movements. These dates represent formal delivery promises made to customers and are tracked separately from internal planning dates. Promise dates provide enhanced visibility into delivery performance and help teams prioritize deliveries to maintain customer satisfaction through reliable deliveries.

### Carrier tracking details

You can record ship **tracking information** (carrier name and tracking number) for over 60 common carriers.

If your carrier is not available, you can specify "Other" and enter the carrier name manually. This is most common when shipping freight and looking to track a PRO or bill of lading (BOL) number.

### Tracking updates

If you are using a prominent shipping carrier, the detailed information from your shipment tracking will populate automatically within a few seconds after a tracking number is saved.

<figure><img src="/files/pFM3r5Kxo5pzd4VAiQ79" alt="" width="563"><figcaption><p>Shipping history details populate automatically from the carrier</p></figcaption></figure>

If you delete carrier tracking information from the asset move, Hardfin will stop displaying the shipping history next to the move details.

## Asset move status indicators

Asset moves display an intelligent status in the asset activity section to provide clear visibility into the state of each movement. The system accurately represents the status of asset movements:

<figure><img src="/files/jWy9s7Ay2mwHA3vppxqo" alt="" width="410"><figcaption><p>Asset activity list</p></figcaption></figure>

### Status types

Asset movements are reported using five status options to provide granular detail into the movement lifecycle:

* **Promised** - Indicates moves with promise dates only. This status is used when expected delivery commitments have been made but no actual shipping has occurred.
* **Planned** - Shows moves with expected dates only. This status appears for planned movements that are part of logistics planning but haven't been committed or shipped.
* **Scheduled** - Displayed for moves with mixed date types. This status indicates movements that have a combination of expected and promised dates.
* **In transit** - Shown when the asset has been shipped but not yet delivered. This status appears when a ship date exists but no delivery date has been recorded.
* **Delivered** - Displayed when the asset has been delivered to its destination. This status appears when an actual delivery date has been recorded for the move.

The status is automatically determined based on the planned, expected, and actual dates you've entered for each movement.

{% hint style="info" %}
Status indicators help teams **quickly understand the current state of asset movements** and identify which assets require attention for shipping, delivery, or logistics planning.
{% endhint %}

## Moving multiple assets at once

Moves can be entered for **multiple assets at once** by choosing "Move assets" from the [asset list view](https://assets.hardfin.com/assets):

<figure><img src="/files/UQTys9AQKZm9nwgOjY9r" alt="" width="563"><figcaption><p>Move multiple assets from the asset list view</p></figcaption></figure>

You can add details for multiple assets, multiple movements for the same asset, or both. Select the relevant asset, origin, and destination. You must set either a ship date *or* a delivery date in order to confirm the move. Choose "Add move" to add additional rows to record more movements.

<figure><img src="/files/sh6b2CGG2i1ugBogS2MC" alt="" width="563"><figcaption><p>Multiple movement window</p></figcaption></figure>

When moving multiple assets, Hardfin will automatically validate each move to ensure that it does not conflict with existing movements that have already been recorded for each asset:

<figure><img src="/files/3SZsoMIFDANZSV2xKHTl" alt="" width="563"><figcaption><p>Move validation</p></figcaption></figure>

## Automatic carrier tracking

If you are capturing shipment tracking details from a prominent carrier, this will automatically update the shipment time and delivery time for your asset movement.

If shipping or delivery have already occurred, the times are usually set within a few seconds after Hardfin receives the information from the carrier.

<figure><img src="/files/4FwkIHEypPiOoGUVIg5A" alt="" width="563"><figcaption><p>Carrier tracking details automatically update move events</p></figcaption></figure>

All carrier tracking information is applied *every time* Hardfin receives a carrier update. So each time the carrier sends an update, Hardfin will set the ship date (if available) and the delivery date (if available). At that time, if manual changes have been made to shipping or delivery information, the manual changes will be overwritten. Manual changes made to shipping or delivery information *after* the final carrier update will not be overwritten.

If you delete carrier tracking information from the asset move, the ship date and delivery date will remain set (i.e., Hardfin will *not* automatically clear the ship date and delivery date). You can choose to keep the dates set by the carrier, or you may clear them or override them.

### Supported shipping carriers

Hardfin supports automatic tracking for the following shipping carriers.

| Carriers supported for automated tracking |
| ----------------------------------------- |
| Airterra                                  |
| APC Postal                                |
| APG                                       |
| Aramex                                    |
| Asendia                                   |
| Better Trucks                             |
| BorderGuru                                |
| Boxberry                                  |
| Bring                                     |
| Chronopost                                |
| Collect+                                  |
| Correos BR                                |
| Correos Spain                             |
| DHL Benelux                               |
| DHL Express                               |
| DPD DE                                    |
| ePostGlobal                               |
| Estafeta                                  |
| Fastway Australia                         |
| FedEx                                     |
| Globegistics                              |
| Jitsu (formerly Axlehire)                 |
| La Poste                                  |
| Nippon Express                            |
| NZ Post                                   |
| Pitney Bowes                              |
| Posti                                     |
| Royal Mail Intersoft                      |
| Royal Mail SF                             |
| Russian Post                              |
| Sendle                                    |
| SkyPostal                                 |
| Stuart                                    |
| UDS                                       |
| UPS                                       |
| USPS                                      |
| Veho                                      |

We can also support tracking for the following carriers with special configuration. Please [contact support](mailto:support@hardfin.com) for details.

| Carrier supported for special tracking |
| -------------------------------------- |
| Australia Post                         |
| Canada Post                            |
| CDL                                    |
| Colissimo                              |
| Deutsche Post                          |
| DHL eCommerce                          |
| DHL Germany                            |
| DPD UK                                 |
| Evri UK                                |
| GLS US                                 |
| GSO                                    |
| Lasership                              |
| LSO                                    |
| Mondial Relay                          |
| OnTrac                                 |
| Passport                               |
| PCF                                    |
| Poste Italiane                         |
| Purolator                              |

[^1]: This is most common when onboarding, but may happen on an ongoing basis depending on the frequency with which assets move for your organization.


# Manage asset ownership

**Asset ownership** tracks whether an asset is owned by your organization or by a customer. Ownership changes are recorded by date and appear in the asset's audit log, providing a complete history of ownership transfers throughout the asset's lifecycle.

## Understanding asset ownership

Every asset has an owner at any point in time:

* **Manufacturer ownership** - Your organization owns the asset (common for leased or rented equipment in hardware-as-a-service models)
* **Customer ownership** - A customer owns the asset (common for assets that have been sold outright)

{% hint style="info" %}
**Ownership is independent of location.** For example: an asset owned by a customer may be at your facility for service, and an asset owned by your organization may be deployed at a customer location.
{% endhint %}

## Current owner

Hardfin automatically determines the current owner of an asset by looking at all ownership change records and selecting the owner from the most recent ownership change date. This ensures the current owner always reflects the latest ownership status based on the historical record.

## Record an ownership change

To record a new ownership transfer for an asset:

1. Navigate to the **asset details** page for the asset
2. Click the pencil icon next to the current owner in the asset details section
3. A dialog will appear to record the ownership change
4. Select the new owner (manufacturer or customer)
5. Enter the ownership change date
6. If selling to a customer, optionally enter the sale price
7. Click "Save" to record the ownership change

The ownership change will be recorded in the asset's audit log and the current owner will be updated based on the ownership history.

## Ownership change rules

When recording ownership changes, the following rules apply:

### One change per day

Only one ownership change can be recorded per asset per day. If you need to record multiple ownership changes, they must occur on different dates.

If you attempt to record an ownership change on a date that already has an ownership change, you will see an error message. You can either:

* Choose a different date for the new ownership change
* Edit the existing ownership change record for that date
* Delete the existing ownership change and create a new one

### No future dates

Ownership dates cannot be in the future. If you attempt to enter a future date, you will see an error message asking you to adjust the date to today or earlier.

### Historical changes

You can add or modify historical ownership records at any time. When you make changes to ownership history, the system automatically recalculates the current owner based on the most recent ownership change date.

For example:

* If you add a historical ownership change that is more recent than the current ownership record, the current owner will be updated
* If you modify an existing ownership change date, the current owner may be recalculated
* If you delete the most recent ownership change, the system will use the next most recent change to determine the current owner

## Common scenarios

### Selling an asset to a customer

When you sell an asset to a customer:

1. Navigate to the asset details page
2. Click the pencil icon next to "Manufacturer" (the current owner)
3. Select the customer who is purchasing the asset
4. Enter the sale date
5. Enter the sale price (optional but recommended for accounting purposes)
6. Click "Save"

The asset's current owner will be updated to the customer, and the sale will be recorded in the audit log.

### Repurchasing an asset from a customer

When you repurchase an asset from a customer (for example, at end of lease or for refurbishment):

1. Navigate to the asset details page
2. Click the pencil icon next to the customer name (the current owner)
3. Select "Manufacturer" as the new owner
4. Enter the repurchase date
5. Enter the repurchase price if applicable
6. Click "Save"

The asset's current owner will be updated to manufacturer, and the repurchase will be recorded in the audit log with the date displayed.

### Correcting ownership records

If you need to correct an ownership record:

1. Navigate to the asset details page
2. View the ownership history in the audit log
3. Locate the ownership change you need to correct
4. Click to edit the ownership change record
5. Update the date, owner, or sale price as needed
6. Click "Save"

The system will recalculate the current owner based on the updated ownership history.

### Deleting ownership records

If you need to remove an incorrect ownership record:

1. Navigate to the asset details page
2. View the ownership history in the audit log
3. Locate the ownership change you need to delete
4. Click to delete the ownership change record
5. Confirm the deletion

If you delete the most recent ownership change, the system will automatically recalculate the current owner based on the remaining ownership history. If you delete all ownership changes, the asset will default to manufacturer ownership with no date displayed.

## Ownership and accounting

Ownership changes have important implications for [organization accounting](/run-financial-operations/accounting) and financial reporting:

* **Asset classification.** Assets owned by the manufacturer are classified as inventory or fixed assets, while assets owned by customers are classified as sold
* **Revenue recognition.** Sale dates determine when revenue and costs are recognized for accounting purposes
* **Depreciation.** Manufacturer-owned assets may be subject to depreciation, while customer-owned assets are not
* **Gain/loss calculations.** When assets are sold or repurchased, the ownership change date and sale price are used to calculate gains or losses

For more information about cost basis and depreciation for assets, see [manage asset accounting details](/run-your-business/assets#manage-asset-accounting-details).

## Ownership history and audit log

All ownership changes are recorded in the asset's audit log with complete details:

* Date of ownership change
* Previous owner
* New owner
* Sale price (if applicable)
* User who recorded the change
* Timestamp of when the change was recorded

The [audit log](/monitor-the-details/audit-log) provides a complete, immutable history of all ownership transfers for compliance and reporting purposes.


# Manage asset metadata

Asset **metadata** define details for each asset based on the [fields that are defined for that item](/set-up-the-basics/items/manage-item-fields). Metadata is set for the specific asset, so that each asset of this product type can have different metadata.

Item **fields** define data that may be relevant for all the assets of that item type. These fields appear on each asset of this item type, so that the fields can be filled in as asset metadata.

{% hint style="info" %}
Item fields are only available for **tracked device** items.
{% endhint %}

<figure><img src="/files/dqD6F5CZ9EU5HFw9jLYa" alt=""><figcaption><p>Example product fields</p></figcaption></figure>

For example: a product **Lawnmower** might be associated with fields **blade size** and **horsepower**. If assets with serial numbers MOW-101, MOW-102, and MOW-103 are associated with the Lawnmower product, the company can configure each serial number with appropriate metadata (such as 21" blades and 5 horsepower).

Some common use cases for product fields to define asset metadata:

* Revision
* Hardware version
* Firmware version
* Software version
* Brand/OEM
* Model number
* Color
* Source

## **Adding item fields**

Click the "Add field" button to add a new item field. This new field will apply to all assets of this item type. Enter the **name** of the field and choose the **type** of data to use for the field. Then click the "Add" button.

<figure><img src="/files/Kz3RPwPHWAq5fH59qHKL" alt="" width="375"><figcaption><p>Add product field</p></figcaption></figure>

## **Rearrange field order**

The items field order controls how the fields appear on each asset page when viewing asset metadata. The field order can be rearranged using drag-and-drop. Once you have re-arranged the fields, click "Save order" to apply the new ordering.

<figure><img src="/files/DAbPSFGroeUAbNvDCa2A" alt="" width="375"><figcaption><p>Rearrange product field order</p></figcaption></figure>


# Scrap assets at end of life

Assets are **scrapped** at the end of their life, most often when an asset has been disposed, dismantled, destroyed, or lost. Scrapped assets are not expected to return to service, although they may be dismantled and have their parts repurposed as part of other finished goods.

Once scrapped, you cannot assign an asset to a project, and cannot update its status from "Scrapped." All other features (asset moves, description, metadata, etc) continue to be available.

Scrapped assets no longer appear in your asset list or your inventory and field reports, but they continue to be visible in project history and timelines where those assets were in service. All past information about scrapped assets will be preserved—so any data for an asset between its inventory date until its scrap date will continue to be reflected correctly in historical reporting.

### Scrap an asset

You can **scrap** an asset under the *More actions* menu at the top right of the asset details page, or scrap multiple assets at once via CSV upload.

#### Scrap individual assets

To scrap a single asset, use the *More actions* menu:

<figure><img src="/files/1mQoZ0D8V4xxDZkoNED8" alt="" width="375"><figcaption><p>Scrap asset menu</p></figcaption></figure>

Because scrapping an asset removes it completely from the core Hardfin experience, it should be used only when an asset is going out of service permanently. Scrapping the asset requires a **disposal date** for when the asset should be designated as scrapped in your historical reporting. For audit purposes, you can also provide a *disposal reason*. And for accounting purposes, you can also provide a *disposal price* in order to calculate gain or loss on disposa&#x6C;*.*

<figure><img src="/files/7PC8fId5qlAQaK581ilC" alt="" width="375"><figcaption><p>Asset scrap window</p></figcaption></figure>

{% hint style="info" %}
Note: the option to enter a *disposal price* will not appear if the asset has already been sold to a customer.
{% endhint %}

Once scrapped, the details are shown at the top of the asset page:

<figure><img src="/files/ogSyaP0T7NsI2C6ikVXj" alt="" width="340"><figcaption><p>Scrapped asset status details</p></figcaption></figure>

#### Scrap assets in bulk via CSV

To scrap multiple assets at once, use the "Update existing assets" option in the asset data uploader. Include the scrap information (disposal date, disposal reason, and optionally disposal price) in your CSV file along with the asset serial numbers. This allows you to efficiently retire multiple assets in a single upload.

### Cancel asset scrap (unscrap an asset)

Although scrapping an asset is intended to be a permanent change, the Hardfin platform *does* permit you to **unscrap** an asset in order to restore it to service. This usually means that the asset was scrapped accidentally. For example, an asset was thought to be lost and thus was scrapped; but the asset was subsequently found and needs to return to service.

Once an asset has been scrapped, the scrapped can be **cancelled** from the *More actions* menu at the top right of the asset details page:

<figure><img src="/files/8YaMnaHGyorHN6Ji7Frj" alt="" width="375"><figcaption></figcaption></figure>

Because cancelling an asset scrap is unusual, the system will ask you to confirm your intentions:

<figure><img src="/files/TtxdMByr4tEmkmIibAlg" alt="" width="375"><figcaption><p>Cancel asset scrap window</p></figcaption></figure>

Once an asset scrap is canceled, the disposal date, disposal reason, and disposal price (if given) are all reset. The history of the initial scrap and the cancellation are preserved in your audit log.


# Projects

A **project** is any sort of paid or unpaid commercial arrangement that involves doing work with your assets, including people or other products. Projects are designed to correspond to closed-won deals or opportunities in your customer-relationship management (CRM) system. So projects are *most often based on a customer contract or client engagement*.

Organizations use projects to manage all their commercial activity, such as:

* Closed deal
* New contract
* Renewal contract
* Proof of concept (POC)
* Trial period

Organizations also use projects to track locations and timing of other hardware deployments, such as:

* Demo units
* Trade shows
* R\&D assets

{% hint style="info" %}
**Understand project relationships**

Most **projects** have a **date range** associated with them, indicating the start and end dates of the commercial activity. (A project cannot have more than one date range.)

A **project** may also have an optional **customer** associated with the activity, based on your [customer list](/set-up-the-basics/companies). (A project cannot have more than one customer.)

A **project** may also have optional **locations** associated with the activity, based on your [location list](/set-up-the-basics/locations). (A project can have an unlimited number of locations.)

A **project** may also have optional **products** associated with the activity, based on your [items catalog](/set-up-the-basics/items). Each product can be have associated quantity, pricing, billing rules, and notes.

Each **project** can has **assets assigned** to the project for a period of time. Assets can come on (assign) and off (unassign) of a project over time. An asset may only be assigned to one project at a time. Assignment data is used for reporting on commercial activity.
{% endhint %}

## List all projects

To see a listing of all projects, navigate to the [projects page](https://assets.hardfin.com/projects). There are two ways to view projects, either by table or by timeline.

#### Timeline view

In the **timeline view** you will see a chart with each project's name, date range, and the number of assets assigned relative to the number requested on the project.

<figure><img src="/files/f5p9LxVFl0dOwdJ8v02r" alt=""><figcaption><p>Project timeline view</p></figcaption></figure>

You can *hover* over a project to get a quick view into the customer, locations, and products associated with the project, as well as the number of assets currently assigned to the project.

<figure><img src="/files/TARzsuefRQSqmfyNh4Kd" alt="" width="375"><figcaption><p>Project hover view</p></figcaption></figure>

The timeline view supports full vertical scrolling, allowing you to expand the timeline section to view more projects at once. You can scroll vertically through the timeline to see all your projects in chronological order, making it easier to navigate large project lists.

{% hint style="info" %}
Note: Only projects with a *start date **and** an end date* with appear on the project timeline.
{% endhint %}

#### Table view

In the **table view** you will see a table with each project's name, affiliated customer, timeline/dates, workflow stage, associated locations, and fulfillment status.

<figure><img src="/files/MMMOSIBDG5ECXhq0PkAZ" alt=""><figcaption><p>Project table view</p></figcaption></figure>

#### Filter by date status

The project list includes a toggle button group for filtering projects by their date status:

* **All** - Show all projects regardless of date status
* **Upcoming** - Projects with start dates in the future
* **Active** - Projects currently within their date range
* **Past** - Projects with end dates in the past
* **No date set** - Projects without defined date ranges

The **workflow stage column** provides visual progress indicators showing the current stage of each project within its workflow. This column displays:

* **Stage indicators** - Visual progress markers showing completed, current, and upcoming stages
* **Stage information** - Current workflow stage name and position
* **Sortable data** - Click the column header to sort projects by workflow stage progression

## View individual project details

To view the full details of a project, click on an project name in the project list.

<figure><img src="/files/c8BW6psleEzpXvwJpGl0" alt=""><figcaption><p>Project name on project list</p></figcaption></figure>

The project details page will appear. This page includes all the core details of the project at the top of the page, including name, previous project, dates, customer, locations, project value, and description:

<figure><img src="/files/9jHUjXEbQsQx4uMLUbkJ" alt=""><figcaption><p>Core details of the project</p></figcaption></figure>

The project details page continues with information about [product line items and billing](#manage-product-line-items-on-a-project):

<figure><img src="/files/Fuxw6tqiwEMcdi5we0q6" alt="" width="563"><figcaption><p>Project billing and line item details</p></figcaption></figure>

Details are also available on [asset assignment](#asset-assignment) and the project asset assignment history:

<figure><img src="/files/kDA8r7QH1FRTi3NOJSOa" alt="" width="563"><figcaption><p>Asset assignment rules and history</p></figcaption></figure>

Finally, the project details page include subsections for [commercial information](#manage-project-commercial-information) (billing/invoicing), [project notes](#manage-project-notes) (text comments), [files and links](#manage-project-files-and-links), and [project time and costs](#manage-project-costs). Project details also include a full [audit log](/monitor-the-details/audit-log) of the changes made to the project over time.

<figure><img src="/files/Yj5ewrf2vb9XE1hIrRan" alt="" width="563"><figcaption><p>Project subsections and additional detail</p></figcaption></figure>

## Create a project

To create an individual project, click the "Add project" button and a window will appear. Name the project, select the appropriate dates for the project, choose the right customer (if applicable), and select any relevant locations. Then click "Add."

<figure><img src="/files/rpc8vQNPDS5y0kvqmrlN" alt="" width="375"><figcaption><p>"Add project" window</p></figcaption></figure>

Only a name is *required* in order to create a new project.

#### Bulk creation

To import projects in bulk, configure an [integration with a CRM or ERP](/manage-your-account/integrations), or [set up API access](/advanced-options/api-access). For additional options, please [contact support](mailto:support@hardfin.com).

### Note on date ranges

A project cannot have more than one date range. If you need to manage multiple date ranges, you should either use multiple projects or use one project and make notes in the project description. The choice depends on how many date ranges are being referenced and should be based on the contract structure. For example:

* A business has a single year-long contract to operate hardware each Monday through Wednesday. The business should set up a single year-long project and note in the project description that the project is only active Mondays through Wednesdays.
* A business has series of commercial engagements, in four 6-month phases, each with different hardware requirements and pricing. The business should set up four 6-month-long projects, with each new project being the child of the prior project.

#### Date range shortcuts

When setting project dates, you can use convenient date range shortcuts for common time periods. These shortcuts automatically calculate the correct start and end dates:

* **Last 30 days** - Sets range from 30 days ago to today
* **Last 3 months** - Sets range from 3 months ago to today
* **Last 6 months** - Sets range from 6 months ago to today
* **Last 12 months** - Sets range from 12 months ago to today

Date range shortcuts ensure accurate date calculations and help you quickly set up projects for standard time periods.

## Update core project information

To edit an individual project, view the project details. The core project information includes:

* Date range
* Previous project
* Contract date
* Install date
* Customer
* Locations
* Project value
* Description

Hover on any piece core product information and a pencil icon :pencil2: will appear. Click the pencil to edit the details. Click "Save" to save the updated details.

<figure><img src="/files/axKJeGqRvftNKCrglL5C" alt="" width="281"><figcaption><p>Edit core project details example</p></figcaption></figure>

## Manage product line items on a project

**Product details (line items)** can be tracked for each project. Because projects are *most often based on a customer contract or client engagement, o*rganizations use projects to manage the products associated with this commercial activity, such as:

* Hardware sold
* Equipment leased
* Devices rented
* Accessories sold
* Professional services
* Software fees
* Other offerings included

[Read more about managing product line items and line-item billing for a project.](/run-your-business/projects/manage-project-line-items)

## Manage project workflows

It's easy to track **project workflows and stages** right from the main project details page. Workflows help manage a project through the stages from start to completion. You can create custom workflows with multiple stages and track project progress through each stage. Project workflows are enabled across your organization, and can be turned on or off for each project.

[Read more about project workflows in Hardfin.](/run-your-business/projects/manage-project-workflows)

## Asset assignment

**Asset assignment** allows organizations to change the project that each asset is associated with. [Read more about assignments, how they work, and why they are important.](/run-your-business/assignments)

The assignment section always includes any [items](/set-up-the-basics/items#edit-an-item) that have been added as line items on the project. These line items show `N requested` based on the quantity that have been set in the project details. For example, if a line item on the project includes 4 Premium Monitors, and none have yet been assigned to the project, then the assignment section will show `0 assigned / 4 requested`.

<figure><img src="/files/UY65Bm8j7fxhKTAeBVt1" alt="" width="563"><figcaption><p>Asset assignment section of a project</p></figcaption></figure>

The assignment section also includes any products for assets that have been *assigned* to the project, even if those products are not listed as line items on the project. Such product will show `0 requested` because they are not set as required on the project. For example, if 2 Power Supplies have been assigned to a project, but none have been included as line items for the project, then the assignment section will show `2 assigned / 0 requested`.

### Assignment history

The full assignment history for each product line item in the assignment section can be view by clicking the down arrow next to the line item. This view shows each asset serial that has been assigned to a project over time, including when each was assigned and unassigned from the project.

<figure><img src="/files/iuqhpoxkEZyYSMnQknlu" alt="" width="563"><figcaption><p>Product assignment history view on a project</p></figcaption></figure>

### Assign an asset

To assign an asset to a project, click the "Assign" button in the asset assignment section. You can choose an asset and an effective date. The effective date must not overlap with the asset's previous assignment (if applicable).

<figure><img src="/files/K0FvzvjGV8ZMnP1RbC6W" alt="" width="375"><figcaption><p>Asset assignment window on a project</p></figcaption></figure>

{% hint style="info" %}
*Only unassigned assets are available for assignment.* To assign an asset that is already assigned to another project, first unassign the asset from the other project.
{% endhint %}

### Unassigning an asset

Assets must be unassigned from the [asset details page](/run-your-business/assets#view-individual-asset-details). There an asset can be directly [unassigned from its current project](/run-your-business/assets#unassigning-an-asset). Assets can also be reassigned to a new project from the same screen.

## Manage project fulfillment

The **Fulfillment** tab provides comprehensive tracking of asset fulfillment for each project. This tab shows detailed information about requested quantities, filled quantities, and fulfillment status broken down by each product type.

Sometimes a project includes multiple line items that cover the same product for different prices, locations, etc. The fulfillment view consolidates this information to view the project's fulfillment status by product.

<figure><img src="/files/SKEtdTdhFlMZyIHDydY3" alt=""><figcaption><p>Project fulfillment view</p></figcaption></figure>

### Creating fulfillment orders from projects

To streamline the fulfillment workflow, you can create [fulfillment orders](/fulfill-and-deploy/fulfillment-orders) directly from the project details page. Click the **"Fulfill"** button in the project header actions to open the fulfillment order creation dialog.

When creating a fulfillment order from a project:

* The fulfillment order is automatically linked to the project
* Project details (customer, locations) are pre-populated
* Product line items from the project are available for selection
* You can specify which items to fulfill and their quantities

This provides a fast path from identifying fulfillment needs on the project to creating the fulfillment order that will coordinate the actual shipment and delivery of assets.

#### Understanding fulfillment metrics

* **Requested**: The total quantity needed for the project across all line items
* **Filled**: Assets currently assigned to fulfill the request
* **Need**: Remaining quantity required (*Requested* quantity less *Filled* quantity)
* **Overage**: Extra assets assigned beyond the requested amount

**Project and product fulfillment status**

Hardfin tracks fulfillment at two distinct levels to provide comprehensive visibility:

* **Product fulfillment status**: Specific fulfillment status for each product within the project
* **Project fulfillment status**: Overall completion status for the entire project, calculated based on each individual product fulfillment

This separation allows for more precise fulfillment reporting and better operational control. For example, a user may need to fulfill items from a specific warehouse, and needs to identify unfulfilled products of a specific product type. This distinction helps teams understand exactly what aspects of fulfillment are pending or completed.

{% hint style="success" %}
The fulfillment tab centralizes all project fulfillment information, making it easy to track project completion status and identify any gaps in asset assignments.
{% endhint %}

## Manage project commercial information

Project **commercial activity** shows the context of the project for **billing** and **invoicing** for accounts receivable purposes. It includes billing contact and address, payment terms, purchase order (PO) number, discount records, and required memo.

<figure><img src="/files/Snepzo0H5vPlhE947eEJ" alt=""><figcaption><p>Project commercial details for billing and invoicing</p></figcaption></figure>

If you would like to automate capture of this information from your customer-relationship management (CRM) system, please [contact support](mailto:support@hardfin.com).

## Manage project notes

Text **notes** can be added to a project on the "Notes" tab of the project details screen. Notes can be used to track any relevant information on the project over time.

A new note appears listed by user posting the note. A new note can be added by clicking the "Add note" button in the top right above the notes list.

<figure><img src="/files/lsAyw9jDCKKfcYbPj5DV" alt=""><figcaption><p>Project notes list</p></figcaption></figure>

Notes can be edited, deleted, and audited by clicking the menu button in the top right of each note.

## Manage project tickets

**Tickets** can be attached to project records to track necessary actions and work items related to the project. You can also attach existing tickets to projects or detach them as needed.

Project tickets are visible on the "Tickets" tab for each project. They can be filtered by status (All, Open, Closed) to help prioritize work.

Common use cases include:

* Installation tasks for new equipment
* Repair requests during service contracts
* Follow-up actions after project deployment
* Investigation or inspection tasks
* General project-related work items

<figure><img src="/files/xQMb6Q0zsB3TERgb5i5p" alt=""><figcaption><p>Project tickets tab</p></figcaption></figure>

**To create a ticket for a project**

1. Navigate to the project details page
2. Click on the "Tickets" tab
3. Click "Open ticket" to create a new ticket
4. The ticket will be automatically attached to this project

[Learn more about tickets in Hardfin.](/run-your-business/tickets)

## Manage project files and links

**Files and links** can be attached to project records on the "Files and links" tab of the project details screen. This functionality is primarily used for records related to the project, such as contract details, price lists, lease terms, or master service agreement (MSA). [Learn more about files and links in Hardfin.](/monitor-the-details/files-and-links)

## Manage project time and costs

You can log **project time (hours) and other (miscellaneous) costs** on the "Costs" tab of the project details screen. These details are useful in order to report on the ongoing cost of project, manage cost allocation, track service hours, record billable events, and calculate overall project margins. [Learn more about project time tracking and costing in Hardfin.](/run-your-business/projects/manage-project-time-and-costs)

## Project renewals

**Renewing** a project creates a new project that has the current project recorded as its previous project. A renewal can optionally copy over all the product details associated with the previous project. A renewal will also automatically reassign the assets when the project renews (subject to certain constraints). [Learn more about renewing projects and handling automatic renewals.](/run-your-business/projects/manage-project-renewals)

## Archive a project

{% hint style="info" %}
[Archiving objects](#archiving-customers) hides the object from the list view and dropdown menus. The object can still be viewed in the list by selecting the "Archived" option. Archived objects still appear in dropdown menus when searched by name.
{% endhint %}

To archive a project that is not yet archived, choose the "Archive project" option from the *More actions* menu.

<figure><img src="/files/XU46qtqUmTLX2yMzgLFu" alt=""><figcaption><p>"Archive project" button</p></figcaption></figure>

A small badge will appear on the project indicating *Archived*.

<figure><img src="/files/lLwcZelgmCeWJmT2tO8p" alt="" width="375"><figcaption><p>"Archived" badge for a project</p></figcaption></figure>

The project will now be visible in the project list only when "Archived" is selected.

<figure><img src="/files/gWML7s47o1IRj6HS1qHo" alt=""><figcaption><p>Archived project view in the project list</p></figcaption></figure>

To unarchive a project that is already archived, edit the project and choose the "Unarchive project" option from the *More actions* menu.

<figure><img src="/files/CgScvw4T0YWkxVIuIrnj" alt=""><figcaption><p>"Unarchive project" button</p></figcaption></figure>


# Manage project workflows

**Project workflows** help you track and manage the stages of your projects from start to completion. You can create custom workflows with multiple stages and track project progress through each stage.

Project workflows are enabled across your organization, and can be turned on or off for each project. Workflows can be managed in [organization settings](https://assets.hardfin.com/organization).

<figure><img src="/files/3fzupLoKo7Nmyp6SsylR" alt=""><figcaption><p>Example workflow definition</p></figcaption></figure>

### Customize workflows

You can quickly implement custom workflows tailored to your business processes.

<figure><img src="/files/hHh5JX6OBtvGsb0juHKK" alt="" width="563"><figcaption><p>Project workflow edit window</p></figcaption></figure>

To create a new custom workflow:

1. Click **Add** in the workflows section
2. Enter a name for your workflow
3. Add workflow stages by clicking **Add stage**
4. Use drag-and-drop to reorder stages as needed
5. Save your workflow

#### Manage workflow stages

Click **Edit** to modify an existing workflow. In the edit window:

* **Add stages**: Click "Add" to new workflow stages
* **Reorder stages**: Drag and drop stages to change their order
* **Edit stages**: Click on any stage to modify its name
* **Delete stages**: Remove stages that are no longer needed

#### Delete workflow stages

When deleting stages, Hardfin checks if your organization already has workflows sitting in those stages. If so, you'll be given the opportunity to reallocate those projects into another stage of your choosing. This ensures that each project is always in an appropriate stage, even as workflows are updated over time.

<figure><img src="/files/oGbSfpsMV36wBRtwovZM" alt="" width="563"><figcaption><p>Project workflow deletion window</p></figcaption></figure>

### Set default workflows

You can designate a default workflow that will automatically be applied to new projects:

1. In the workflows list, find your preferred workflow
2. Click **Set as Default**
3. All new projects will now use this workflow unless manually changed

### Delete workflows

You can delete workflows that are no longer needed for your organization. When deleting a workflow, you have options to handle existing projects that use the workflow.

#### Workflow deletion options

When deleting a workflow, you can choose how to handle projects currently using that workflow:

* **Migrate projects to another workflow**: Move all existing projects to a different workflow you specify
* **Clear project associations**: Remove the workflow from all projects without assigning a new one

#### Delete a workflow

1. Find the workflow you want to delete
2. Click the **Delete** button for that workflow
3. Choose your migration option:
   * Select **Migrate to workflow** and choose the replacement workflow, or
   * Select **Clear associations** to remove the workflow without replacement
4. Confirm the deletion in the dialog

{% hint style="warning" %}
Workflow deletion is permanent and cannot be undone. Make sure you've selected the appropriate migration option for your existing projects.
{% endhint %}

The system will show a confirmation dialog with details about how many projects will be affected and what action will be taken.

### Track project progress

Once workflows are enabled and assigned to projects:

* View workflow progress on individual project pages
* See current stage and completion status
* Move projects between workflow stages
* Track project progression over time

<figure><img src="/files/hLdqJuE24JJZ6oPvlC8u" alt=""><figcaption><p>Example project workflow</p></figcaption></figure>

{% hint style="info" %}
Workflow progress tracking appears on project detail pages, showing the current stage and allowing you to advance projects through your defined workflow stages.
{% endhint %}


# Manage project line items

**Product details** can be tracked for each project. Because projects are *most often based on a customer contract or client engagement, o*rganizations use projects to manage the products associated with this commercial activity, such as:

* Hardware sold
* Equipment leased
* Devices rented
* Accessories sold
* Professional services
* Software fees
* Other offerings included

Product details can be an unlimited number of line items on a project. Each product details line items must include a product from the organization's [items catalog](/set-up-the-basics/items) and a corresponding quantity. Product line items can optionally include the unit price, billing frequency, locations, and any additional notes.

### Transaction type

Each product line item has a **transaction type** that classifies the commercial arrangement:

* **Service** - A recurring arrangement such as a lease, rental, or hardware-as-a-service agreement. Service line items are included in annual recurring revenue (ARR) calculations. This is the default transaction type.
* **Sale** - A one-time equipment sale or purchase. Sale line items are excluded from ARR calculations.

The transaction type is visible on the product details section of the project page and can be changed when editing product details. Non-physical items (such as professional services or software fees) can only be classified as service transactions.

### Line item locations

Each product line item can have a specific [location](/set-up-the-basics/locations) associated with it. This allows different products within the same project to be shipped to or deployed at different locations, providing granular control over project logistics.

For example, a project might include:

* 10 units of Product A to be shipped to the customer's Chicago warehouse
* 5 units of Product B to be shipped to the customer's New York office
* 3 units of Product C to be deployed at the customer's Los Angeles facility

By configuring locations at the line-item level, you can track exactly where each product needs to go, even when multiple location are part of the same customer contract or project.

<figure><img src="/files/zFYTEHeemvJyv51T9I7C" alt=""><figcaption><p>Product details on a project</p></figcaption></figure>

{% hint style="info" %}
Product details on a project are **useful for billing and accounting purposes**. Each product line item appears in project reports and can be used for tracking organizational invoicing and revenue recognition determinations.
{% endhint %}

### Adding or editing product details

Product details can be edited by clicking the pencil icon :pencil2: in the top right of the product details section.

<figure><img src="/files/9Ptu2p3AB0JF59mfngim" alt="" width="563"><figcaption></figcaption></figure>

When in edit model, new line items can be added with the "Add product" button in the button left. Each part of existing line items can be edited. Line items can be deleted entirely by clicking the trash can icon 🗑️ next to the line item. All changes can be saved together by clicking "Save."

{% hint style="info" %}
Project details always include a full [audit log](/monitor-the-details/audit-log) of the changes made to the project over time, including any product details that have been edited or deleted.
{% endhint %}

## Managing billing periods for a project line item

Each product line item on a project can be associated with a set of **billing periods**:

<figure><img src="/files/3iIpkVVJPuRaL8LYBv50" alt=""><figcaption><p>Product line items with billing periods on a project</p></figcaption></figure>

### Creating, changing, or deleting billing periods

Billing periods are created automatically when a product line item is added to a project. The number of billing periods is computed for you based on the *product billing frequency* and the *length of the project*.

If additional billing periods need to be added, if existing billing period dates need to be adjusted, or if billing periods need to be removed, you can do so by opening the **billing details** for the product line item and selecting "Edit periods":

<figure><img src="/files/4wmRaeGTqJgilV4lyQt3" alt="" width="563"><figcaption><p>Billing periods management for a product line item</p></figcaption></figure>

Hardfin will automatically triage billing periods to help make sure that you do not double up on billing periods or miss billing periods, and will automatically handle ordering billing periods correctly for you.

### Marking billing periods as billed or paid

Billing periods should be marked "billed" when the invoice has been sent to a customer corresponding to this product line item, and should be marked "paid" when the invoice has been paid to cover the billable amount of the product line item.

Individual product line items can be marked billed or paid for each billing period associated with the product line item simply by clicking the :white\_check\_mark: or :ballot\_box\_with\_check: icon next to the billing period. Billing periods can also be marked billed and paid on a *bulk* basis by editing the billing periods for the project line item directly.

{% hint style="warning" %}
**For accounts receivable (A/R) purposes**, billing periods can also be viewed and updated through the billing reports interface. This provides a much more robust way to filter and update billing information based on the billing date, customer, project, product, or other aggregate characteristics.

If you are looking to manage invoices and reconcile payment records from third-party billing or payment systems, you should use the billing reports interface instead of updating product line items individually.
{% endhint %}

### Viewing billing period summary information

Based on the product line items and the billing periods you've configured, the **project billing summary** is automatically updated in real time to reflect the billing and payment status of all product line items on the product.

<figure><img src="/files/pEKfDrYHac643fPTMRDt" alt=""><figcaption><p>Project billings summary</p></figcaption></figure>

[Read more about billing information and reporting.](/run-financial-operations/billing)


# Manage project time and costs

You can log **project time and costs** on the "Costs" tab of the project details screen. These details are useful in order to report on the ongoing cost of project, manage cost allocation, track service hours, record billable events, and calculate overall project margins.

The core details include description, amount, and information on the reported date and user reporting the cost:

<figure><img src="/files/VIaQZVHQ0T2MR9JjYRKo" alt=""><figcaption><p>View and manage project costs</p></figcaption></figure>

You can track and report on **project time (hours)** and **other (miscellaneous) costs** separately or together. The "All" tab shows both cost types together; the "Hours" tab shows only project time tracking; the "Misc" tab shows only other costs.

{% hint style="info" %}
Project costs are **useful for billing, accounting, and FP\&A purposes**. Each project cost appears in project reports and can be used for tracking organizational invoicing, cost allocation, and margin reporting.
{% endhint %}

## Tracking time (hourly) project costs

New time can be **logged** with the "Add time" button. A basic project time record includes a person, date, and hours, and can also optionally include a rate and description.

If a rate is not included, only the hours are reported for timekeeping (and the cost reflects $0). If a rate is provided, the total amount is calculated automatically and included in project cost reporting. The reporting user and date are always logged automatically.

{% hint style="info" %}
**Rate visibility is controlled by user permissions.** Depending on your organization's settings and your user role, you may or may not be able to view hourly rates and cost information. Users with appropriate permissions can see full financial details, while others may only see time tracking without rate information.
{% endhint %}

<figure><img src="/files/eVrnom37KMNCYFUac3fE" alt="" width="375"><figcaption><p>Add project time window</p></figcaption></figure>

Individual time tracking can be **edited** by clicking the pencil icon :pencil2: next to a given project time item. Changes to the details can be saved by clicking the "Edit" button.

<figure><img src="/files/ELKjVC5ePmWPfp3Enop6" alt="" width="375"><figcaption><p>Edit project time window</p></figcaption></figure>

## Tracking other (miscellaneous) project costs

New miscellaneous costs can be **added** with the "Add cost" button. A project cost includes a description, amount, category, and optional project and person assignment. The reporting user and date are logged automatically.

<figure><img src="/files/esIkczQbgNPGrAS1AJCk" alt="" width="460"><figcaption><p>Add project cost window</p></figcaption></figure>

An individual miscellaneous cost can be **edited** by clicking the pencil icon :pencil2: next to a given project cost item. Changes can be saved by clicking the "Edit" button.

## Deleting project costs

Individual time and miscellaneous costs can be **deleted** by clicking the trash can icon 🗑️ next to a given project cost item. A warning will appear and you must confirm deletion by clicking the "Yes, delete" button.

<figure><img src="/files/ejQ3ogFSmLzUlknaYKJ0" alt="" width="375"><figcaption><p>Delete project cost confirmation</p></figcaption></figure>

## Cost audit trails and project connections

Project costs automatically create **audit trails** that cascade across connected projects. When costs are added or modified, the changes are tracked and visible in related project audit logs, providing complete visibility into cost impacts across your project portfolio.

{% hint style="info" %}
Project details always include a full audit log of the changes made to the project over time, including any project costs that have been edited or deleted.
{% endhint %}

## Reporting

Hardfin also provides a comprehensive **cost management dashboard** for centralized cost oversight across all projects, with advanced filtering, categorization, and bulk import/export capabilities. See the [financial reports section](/monitor-the-details/reporting/financial-reports) for more detail.

{% hint style="warning" %}
**Financial information visibility varies by user permissions.** Cost reports and financial data may show different levels of detail depending on your organization's permission settings. Contact your administrator if you need access to additional financial information.
{% endhint %}

## Categories

Project costs can be organized using **predefined categories** to improve cost tracking and reporting. Categories are grouped into functional areas to help you quickly find the right classification for your expenses:

**Labor & services**

* Consulting services - External advisory and specialized expertise
* Contract labor - Temporary or project-based workforce
* Training & development - Skills building and certification programs

**Materials & equipment**

* Raw materials - Base components and supplies for production
* Tools & equipment - Instruments and machinery for operations
* Software & licenses - Digital tools and subscription services

**Logistics & access**

* Shipping & freight - Transportation and delivery costs
* Travel & accommodation - Business trips and lodging expenses
* Facility access - Site visits and location-based services

**Engineering & setup**

* Design & engineering - Technical planning and development work
* Installation & setup - Implementation and configuration services
* Testing & validation - Quality assurance and verification processes

**Coordination & enablement**

* Project management - Oversight and coordination activities
* Documentation - Technical writing and record keeping
* Communication - Meetings, calls, and collaboration tools

**Professional services**

* Legal & compliance - Regulatory and contractual support
* Accounting & finance - Financial management and reporting
* Insurance & risk - Coverage and risk mitigation services

**Other**

* Miscellaneous - Costs that don't fit standard categories

{% hint style="info" %}
**Cost categories help with reporting and analysis**. Categorized costs can be filtered and grouped in project reports, making it easier to understand spending patterns and optimize project budgets.
{% endhint %}

## Direct links

You can use **direct links** to quickly add time and cost entries without navigating through the project interface. This allows you to bookmark or share links that automatically open the appropriate entry window.

**For time entry:** [Open the "Add time" window](https://assets.hardfin.com/time?add)

**For cost entry:** [Open the "Add cost" window](https://assets.hardfin.com/costs?add)

{% hint style="info" %}
**Direct links are useful for bookmarks and workflows.** You can bookmark URLs for quick access to frequently used entry forms, or share them with team members who need to log time or costs.
{% endhint %}


# Manage project renewals

**Renewing** a project creates a new project that has the current project recorded as its previous project. A renewal can optionally copy over all the product details associated with the previous project. A renewal will also automatically reassign the assets when the project renews (subject to certain constraints).

To renew a project, choose the "Renew project" option from the *More actions* menu.

<figure><img src="/files/nsIX2vvXul4GH0ZhIQWe" alt="" width="375"><figcaption><p>"Renew project" button</p></figcaption></figure>

A window will appear with suggested details for the new project's name, customer, and locations based on the data for the current project. The suggested date range for the new project will start on the day after the current project ends and run for the same number of days as the current project.

By default, the same product details will be carried over to the renewal project. You can optionally choose **not** to carry over the product details. Click "Add" to confirm the renewal.

<figure><img src="/files/z7273VbSY3TOk0ggZPbZ" alt="" width="375"><figcaption></figcaption></figure>

## Project tree

A *project can have multiple renewals*. For example, if one successful pilot project is renewed into two new contracts. However, each project can have *only one previous project*.

### Previous project

The previous project (if applicable) is always visible in the core project details:

<figure><img src="/files/7zu6TeoqU0kbfU472ppg" alt="" width="375"><figcaption><p>Core project details: previous project</p></figcaption></figure>

The previous project can be updated simply by clicking on the current project.

<figure><img src="/files/bxuZafOyAh1t0AhnAxbc" alt="" width="375"><figcaption><p>Edit previous project</p></figcaption></figure>

### Project history

The full history of the current project, its previous project, and any other projects that refer to this project as previous can be viewed by clicking the "tree" diagram option in the previous project detail.

<figure><img src="/files/dfILD24kDGQlk0bjmuFG" alt="" width="269"><figcaption><p>Project history tree diagram</p></figcaption></figure>

The full project history shows an interactive timeline of the current project, each previous project up the timeline, and all projects that refer to this project as previous. You can expand/contract the arrow icons ↑↓ in order to view more or fewer project up and down the history tree.

<figure><img src="/files/huiX7dpcYEU1z0vOgFi4" alt=""><figcaption><p>Project history timeline</p></figcaption></figure>

By default, "sibling" projects of each project are not included. These can be displayed by selecting "Show siblings" option in the bottom left.

## Asset reassignment

Assets are automatically reassigned to renewals when the renewal starts. This occurs at midnight in the [organization's time zone](/manage-your-account/organization) for every project starting on the next day that has a previous project set.

If a renewal project is found and the previous project has assets assigned, those assets will be unassigned from the previous project as of the prior day and assigned to the renewal project as of the renewal project's start date.

<figure><img src="/files/TUtzcAYYgA64IbiTy2ta" alt="" width="563"><figcaption><p>Audit log for a system reassignment</p></figcaption></figure>

### Normal renewal

A normal renewal ends on one day and starts on the next, for example:

* Previous project ends on December 15
* Renewal project starts December 16

At 12:01 AM on December 16, all assets currently assigned to the previous project will be ended as of December 15 at 11:59:59 PM and assigned to the renewal project December 16 at 12:00:00 AM.

{% hint style="info" %}
Note: this ensures that the assets are reassign precisely from the previous project to the renewal project.
{% endhint %}

### Early renewal

An early renewal starts before the previous project ends, for example:

* Previous project ends on December 15
* Renewal project starts December 8

At 12:01 AM on December 8, all assets currently assigned to the previous project will be ended as of December 7 at 11:59:59 PM and assigned to the renewal project December 8 at 12:00:00 AM.

{% hint style="info" %}
Note: the previous project will spend the rest of its term with *no* assets unassigned.
{% endhint %}

### Delayed renewal

A delayed renewal starts well after the previous project ends, for example:

* Previous project ends on December 15
* Renewal project starts December 23

At 12:01 AM on December 23, all assets currently assigned to the previous project will be ended as of December 22 at 11:59:59 PM and assigned to the renewal project December 23 at 12:00:00 AM.

{% hint style="info" %}
Note: assets will *linger* on the previous project after its term until the renewal starts.
{% endhint %}

### Multiple staggered renewals (starting different dates)

Multiple staggered renewals happen if the previous project is being renewed into multiple projects over multiple days, for example:

* Previous project ends on December 15
* Renewal project #1 starts December 16
* Renewal project #2 starts December 21

In this case **the first renewal "wins" the race**. At 12:01 AM on December 16, all assets currently assigned to the previous project will be ended as of December 15 at 11:59:59 PM and assigned to renewal project #1 on December 16 at 12:00:00 AM.

{% hint style="info" %}
Note: assets will *never* be assigned to the second renewal project and must be manually reassigned if they are being split up from the previous project and spread across multiple renewals.
{% endhint %}

### Multiple coincident renewals (starting the same date)

Multiple coincident renewals happen if the previous project is being renewed into multiple projects that all start on the same day, for example:

* Previous project ends on December 15
* Renewal project #1 starts December 16
* Renewal project #2 starts December 16

In this case Hardfin is unable to determine which renewal "wins" and will **take no action**. At 12:01 AM on December 16, all assets currently assigned to the previous project will *remain* assigned and *no assets* will be assigned to either renewal project.

{% hint style="info" %}
Note: assets will *never* be unassigned from the prior project and must be manually reassigned based on how they are being split up from the previous project and spread across the multiple renewals.
{% endhint %}


# Assignments

**Assignment** allows organizations to track how commercial activity (projects) and equipment activity (assets) are related over time. This connects each asset with an associated project, such as when assets are deployed at customer sites.

{% hint style="info" %}
**Understand assignment relationships**

An **asset** can be **assigned to** a project. An asset *cannot* be assigned to more than one project at once.

A **project** can have **assets assigned to it**. A project can have *multiple* assets assigned to it at once.

An **assignment** for a *specific asset* on a *specific project* includes a **start date** and an **end date**.
{% endhint %}

<figure><img src="/files/fLGarAupcnWlOsNILpRv" alt=""><figcaption><p>Example asset assignment (first to a project, then to the renewal)</p></figcaption></figure>

## Why assignments?

**Assignment is critical for hardware-as-a-service businesses** because asset lifecycles become complex in hardware subscriptions. From a commercial perspective (project revenue), organizations need to understand the asset costs that are being incurred against the project. From a hardware perspective (asset cost), organizations need to understand the project revenue that is being driven by the asset.

{% hint style="info" %}
**Interested in diving deeper?** Read [our article about asset lifecycle management for hardware subscriptions](https://blog.hardfin.com/how-to-manage-asset-lifecycles-effectively-for-hardware-subscriptions) to learn more.
{% endhint %}

## Assignment history

{% hint style="success" %}
**Did you know?** *Visualizing* an assignment history is the clearest way to understand what asset activity has occurred on a project over time.
{% endhint %}

Visualizing an assignment history might look like:

<figure><img src="/files/lNd8ew0LcRiJp851gDlH" alt=""><figcaption><p>An example assignment history</p></figcaption></figure>

This same assignment history represents the following:

* An upcoming project had assets TWR-1002 and TWR-1003 reserved for it in September
* The project "Watsonville first HaaS deal" starts in October
* In November, asset TWR-1003 needs to be returned for repairs, so is unassigned from the project
  * A few days later, a replacement asset (TWR-1006) is sent out and assigned to the project
* Then in December, asset TWR-1002 also needs to be returned for repairs, so is unassigned
  * A few days later, another replacement asset (TWR-1008) is sent out and assigned to the project
* As of March, the project is still ongoing and both of the replacement assets TWR-1006 and TWR-1008 are still assigned to the project

## Assignment models

Assets may be assigned to a project however makes sense for your business, based on your downstream reporting needs. Some common patterns that Hardfin customers use:

**1) Logistics-based assignments.** In many cases, teams will assign asset to a project *when the asset ships out to the customer*.

This means that the asset and its costs are allocated to the project as soon as the asset leaves your warehouse.

**2) Reservation-based assignments.** In other cases, organizations will assign assets to a project *as soon as the affiliation is known*. That is, as soon as an asset has been designated to a customer, the assignment is made to the project.

This means that the asset and its costs are allocated to the project as soon as the asset is effectively "reserved" for the customer.

**3) Value-based assignments.** Less commonly, organizations will assign assets to a project *after the asset is delivered or starts doing work*. That is, the assignment is not made to the project until after the asset is on site and deployed.

This means that the asset and its costs are not allocated to the project until the asset is producing value for the customer, and costs outside of that range are allocated to overhead.

**4) Commercial-based assignments.** Least commonly, organizations will assign assets to a project *when the project begins*. That is, the assignment starts when the project starts.

This means that the asset and its costs coincide with the project dates exactly, even if the asset is delivered early or late. This approach is not recommended because it does not take advantage of Hardfin's native ability to track asset and commercial activity independently.

### Assigning and unassigning

Assignments can be created, updated, and deleted from [the asset details page](/run-your-business/assets#assign-an-asset-change-asset-project) or from [the project details page](/run-your-business/projects#asset-assignment). Use whichever approach makes sense for your businesses.

Some companies work on an individual project to send out a *corresponding* batch of assets, which is a more *project-centric* workflow. This is common for smaller devices, such as sensors or handhelds.

Some companies work on an individual asset and send out a single asset to its *corresponding* project, which is a more *asset-centric* workflow. This is common for larger devices, such as heavy machinery and equipment that drives.

## Intelligent auto-assignment

Hardfin intelligently allocates assets to the correct projects based on contextual information you've provided to the application. Auto-assignment ensures that your device and commercial information are in sync with minimal effort, which saves time and maximizes reporting accuracy.

{% hint style="success" %}
**Auto-assignment example.** The *Wal-Mart Inc Super Project* is for 12 SuperMachines is starting at *Wal-Mart Des Moines #5321* on September 1. Hardfin detects 12 SuperMachines shipped to *Wal-Mart Des Moines #5321* on August 27. The platform automatically assigns those 12 SuperMachines to *Wal-Mart Inc Super Project* on August 27.
{% endhint %}

Auto-assignment runs a sophisticated algorithm to identify the correct project for a given asset based on all the project, asset, assignment, and movement data available across the Hardfin platform at any time. The auto-assignment algorithm runs in real time whenever Hardfin processes a new [asset movement](/run-your-business/assets/move-assets).

**Project timing.** For auto-assignment, Hardfin dynamically prioritizes any active project and any projects that are upcoming within 30 days of the date of shipment.

**Location match.** Hardfin considers exact location matches across all your projects. If customer AcmeCo has 3 current projects, but only one of them is for the Springfield location, Hardfin will automatically assign assets that are shipped to the Springfield location.

**Customer match.** Hardfin considers exact customer matches across all your projects. If your business has 10 upcoming projects, but only one of them is for customer AcmeCo, Hardfin will automatically assign assets that are shipped to any location associated with AcmeCo.

**Product match.** Hardfin uses product configuration as a tie-breaker to determine the correct project to assign. For example, is there are 2 active projects for AcmeCo (Project A is for the DevicePlus and Project B for the DevicePro) Hardfin will automatically assign DevicePlus assets to Project A and automatically assign DevicePro assets to Project B.

When Hardfin is *unable* to find a matching project to assign for the project, we introduce additional variables such as location type to consider what is happening to the asset. For example, if the asset destination is a company warehouse or third-party inventory location, Hardfin will stop processing auto-assignment and leave the asset unassigned while it returns to inventory.

### Exception and notification alerting

If Hardfin determines that something unusual is happening, or that insufficient data is available to assign the asset automatically, a notification is sent to users that the asset requires clarification.

**Warnings.** If Hardfin determines that something *should* happen but the system does not have sufficient data to resolve *exactly* what action to take, users are provided the relevant context and notified that action should be taken.

**Information.** If Hardfin determines that something *might* need to happen but it is not exactly clear what action would be needed, users are provided the relevant context and notified as FYI.

See [notifications](/monitor-the-details/notifications) for more information on subscribing to Hardfin notifications.


# Tickets

**Tickets** are used to track support requests, action items, repairs, investigations, and follow-up tasks within Hardfin. Tickets provide a structured way to manage work that needs to be done, whether related to specific assets, projects, or general organizational tasks.

{% hint style="info" %}
**Understand ticket relationships**

A **ticket** can be *attached* to any number of **assets** and **projects**.

A **ticket** can be *assigned* to a **team member**.
{% endhint %}

## Ticket details

Tickets are organized by **status** and by **category**.

### Status

Tickets have two possible statuses:

* **Open** - The ticket is active and requires attention
* **Closed** - The ticket has been completed and closed

When a ticket is first created, it starts with an **Open** status. As work progresses, the ticket can be updated and eventually **Closed**.

### Category

Each ticket must be assigned one of the following categories to help organize and classify the type of work:

* **Todo** - General tasks or items that need to be completed
* **Check** - Inspection or verification tasks
* **Defect** - Issues or problems that need to be addressed
* **Repair** - Maintenance or repair work required on equipment
* **Miscellaneous** - Miscellaneous items that don't fit other categories

Categories help teams filter and prioritize tickets based on the type of work involved.

## View tickets

Tickets can be viewed and filtered in several ways.

### List all tickets

Navigate to the [tickets page](https://assets.hardfin.com/tickets) to see all tickets in your organization, including basic information such as title, category, and assignee.

<figure><img src="/files/AzPNbBF8G0CgfgQHf3Xw" alt=""><figcaption><p>Full ticket list view</p></figcaption></figure>

### View tickets for an asset

To see all tickets related to a specific asset:

1. Navigate to the asset details page
2. Click on the "Tickets" tab
3. Tickets attached to this asset will be displayed

### View tickets for a project

To see all tickets related to a specific project:

1. Navigate to the project details page
2. Click on the "Tickets" tab
3. Tickets attached to this project will be displayed

### View ticket details

Clicking on the ticket title goes to the **ticket details page**. The ticket details page includes all information about the ticket and its history.

<figure><img src="/files/Ywq25TmTsW0GCUVWlOJT" alt=""><figcaption><p>Ticket details page</p></figcaption></figure>

Tickets details also include a full audit log of the changes made to the ticket over time. [Learn more about audit logs in Hardfin.](/monitor-the-details/audit-log)

## Create a ticket

Tickets can be created in several ways depending on your workflow. When creating a ticket, the following fields are available:

**Required fields**

* **Title** - A brief summary of the ticket
* **Description** - Detailed information about the work to be done
* **Category** - Select from the available categories listed above

**Optional fields**

* **Assigned to** - Select a team member to handle this ticket
* **Assets** - Attach one or more assets to the ticket
* **Projects** - Attach one or more projects to the ticket

### Create from tickets page

Navigate to the [tickets page](https://assets.hardfin.com/tickets) and click "Open ticket" to create a new ticket. This creates a standalone ticket that can later be attached to assets or projects as needed.

<figure><img src="/files/3dFFrCGog26xRspdL9fe" alt="" width="563"><figcaption><p>Create standalone ticket window</p></figcaption></figure>

### Create from an asset

To create a ticket directly attached to an asset:

1. Navigate to the asset details page
2. Click on the "Tickets" tab
3. Click "Open ticket"
4. The ticket will be automatically attached to the asset

You can also use the "Open ticket" quick action button on asset detail pages to quickly create a ticket attached to that asset.

### Create from a project

To create a ticket directly attached to a project:

1. Navigate to the project details page
2. Click on the "Tickets" tab
3. Click "Open ticket"
4. The ticket will be automatically attached to the project

You can also use the "Open ticket" quick action button on project detail pages to quickly create a ticket attached to that asset.

## Edit a ticket

All ticket fields can be edited from the ticket details page. The following fields can be edited:

* **Title** - Update the ticket summary
* **Description** - Modify the detailed description
* **Category** - Change the ticket category
* **Status** - Update the ticket status
* **Assigned to** - Reassign the ticket to a different team member

Changes to ticket fields are automatically tracked in the ticket's audit log.

## Attach a ticket to assets or projects

Tickets can be attached to one or more assets and projects to track work related to specific assets and projects:

1. Open the ticket details page
2. Click "Attach" on the assets or projects section
3. Add or remove assets or projects as needed
4. Click "Save"

Attaching assets to tickets helps track which equipment requires attention and provides a clear history of work performed on each asset. Attaching projects to tickets is particularly useful for tracking installation work, repairs during a service contract, or follow-up tasks related to customer projects.

## Add files to tickets

Files can be attached to tickets to provide supporting documentation, photos, or other relevant materials:

1. Navigate to the ticket details page
2. Click on the "Attachments" section
3. Click "Upload file"
4. Select the file to upload
5. The file will be attached to the ticket

Hardfin accepts all file formats. Attached files can be viewed, downloaded, or deleted from the ticket details page.

## Add notes to tickets

Notes provide a way to add timestamped comments and updates to tickets:

1. Navigate to the ticket details page
2. Click on the "Notes" section
3. Click "Add note"
4. Enter your note content
5. Click "Add"

Each note is automatically timestamped and attributed to the user who created it. Notes are useful for:

* Documenting progress on the ticket
* Recording communications about the work
* Adding updates or findings
* Explaining decisions or changes

Notes can be viewed, edited, and deleted from the ticket details page.

## Close a ticket

When work on a ticket is finished, the ticket should be closed:

1. Navigate to the ticket details page
2. Click "Close ticket"
3. Optionally provide a reason for closing the ticket

Closing a ticket sets its status to **Closed**.

## Reopen a ticket

If a closed ticket needs additional work, it can be reopened:

1. Navigate to the closed ticket's details page
2. Click "Reopen ticket"
3. Optionally provide a reason for reopening the ticket

Reopening a ticket sets its status back to **Open** and clears the closed information, allowing work to continue.


# Time tracking

**Time tracking** in Hardfin allows you to track time spent across your business with comprehensive recording, categorization, and reporting capabilities. This system provides centralized time tracking that spans across projects, people, and activities. You can easily import or export time (and hourly cost) information to or from other systems, such as payroll, to keep everything in sync.

{% hint style="info" %}
Time tracking provides organization-wide time tracking that complements [cost tracking](/run-financial-operations/cost-tracking). While costs focus on financial aspects, time tracking emphasizes operational visibility and resource allocation.
{% endhint %}

## Overview

The time tracking system enables you to:

* **Record time entries** including hours and costs
* **Track time details** such as assigning people, projects, and categories
* **Export time data** to Excel for external analysis and reporting
* **Import time data** from CSV files with flexible formatting support
* **Report on time** with comprehensive reporting and analytics

Time records include essential details such as date, duration, category, person, rate (optional), project (optional), and descriptive notes. All time entries are automatically audited for accountability.

## Access time tracking

Navigate to the **Time tracking** section in the main navigation to access all time tracking features. The time tracking interface provides a comprehensive view of all time records with filtering, search, and management capabilities.

### View time records

Time records are listed include the date, person, hours, rate, total, project, category, and description. Records can be quickly filtered or searched to drill into the most relevant details. Choose the "Table" view on the time tracking page to view the time tracking data, time series reports, and analysis charts.

<figure><img src="/files/nIs95yd7fsvIvh0mLuxL" alt=""><figcaption><p>Time record table view</p></figcaption></figure>

### View time analytics

Time tracking integrates with Hardfin's reporting system to provide comprehensive insights into resource allocation, project time distribution, and operational efficiency. Filters and searching apply instantly to analytics, to make it easy to report only on relevant details.

Choose the "Analytics" view on the time tracking page to view the time tracking data, time series reports, and analysis charts. Users can toggle the view between Time (hours) or Dollars (cost).

Time analytics include **summary data** that provide immediate visibility into key time metrics without scrolling through detailed records. These summary widgets display at the top of the time records page:

* **Total hours** - Sum of all time entries in the current view
* **Total value** - Aggregate billable value of all time records
* **Weighted average hourly rate** - Average rate across all time entries, weighted by hours
* **Total time records** - Number of individual time entries logged

Time analytics also includes **configurable visual charts** with comprehensive breakdowns by person, project and category,

<figure><img src="/files/C3Itc37PyEIvvPegTAUn" alt=""><figcaption><p>Time record analytics view</p></figcaption></figure>

## Log time records

A new time record can be added in moments in the Hardfin app, or can be [imported in bulk](#import-time-data) from other applications.

### Add new time records

Create new time entries using the "Add time" button. Each time record includes:

* **Date** - When the work was performed
* **Duration** - Time spent (supports flexible formats like "1h 30m", "90m", or "1.5h")
* **Person** - Person who performed the work
* **Category** - Classification of the work type (see [time categories](#time-categories))
* **Description** - Additional details about the work performed

Optional information includes:

* **Project** - Associate time with a specific project
* **Rate** - Hourly rate for cost calculations (if applicable) \[ADMIN ONLY]

<figure><img src="/files/ndYwbQETABDWcBwl47vU" alt="" width="506"><figcaption><p>Add time window</p></figcaption></figure>

{% hint style="warning" %}
**Time entry validation.** When entering time records, users will receive a warning to help ensure accurate time tracking. These warning appear when logging over 8 hours or over 16 hours for a single day. These thresholds helps identify potential data entry errors or excessive work hours that may need attention.
{% endhint %}

#### Default rates

Admins can configure **default rates** that automatically apply to each user for time tracking activities. This ensures consistent rate records across projects and reduces manual rate entry. It can also prevent pricing errors.

Default billing rates are configured at the organization level for each user and serve as the foundation for time tracking. To configure default billing rates, [manage your organization users](/manage-your-account/organization/user-management#setting-default-rates).

{% hint style="info" %}
**Only users with admin permissions can see rate information.** If a user has access to rate information, their default rate will be pre-populated when they log time, and the user will be able to modify the rate if needed. If a user does not have access to rate information, their default rate will be hidden and will be used automatically when the user logs time.
{% endhint %}

#### Direct link

You can use a **direct link** to quickly add time entries without navigating through the time tracking interface. This allows you to bookmark or share a link to automatically [open the "Add time" window](https://assets.hardfin.com/time?add).

{% hint style="info" %}
**Direct links are useful for bookmarks and workflows.** You can bookmark URLs for quick access to frequently used entry forms, or share them with team members who need to log time.
{% endhint %}

### Edit time records

Existing time records can be modified by selecting the edit option for any entry. Changes are tracked in the audit log, providing complete visibility into modifications and maintaining accountability for time tracking accuracy.

### Delete time records

Time records can be removed when necessary, with confirmation dialogs to prevent accidental deletion. Deletion actions are logged in the audit system for compliance and tracking purposes.

## Time reporting and analytics

Access comprehensive time-tracking analytics across your time and project portfolio from the **Analytics** tab. Detailed time analytics includes:

* Time-series breakdown (over time)
* Person-level breakdown (time reported by user)
* Project-level breakdown (time reported by project)
* Category-level breakdown (time reported by category)

All time analytics can be viewed by **hours** (for all time records) or **dollars** (for time records with an hourly rate associated).

<figure><img src="/files/UyPlWGBkoSfaUm7XOctn" alt="" width="563"><figcaption><p>Time analytics view</p></figcaption></figure>

## Export time data

Time data can be exported to Excel for additional analysis and reporting. You can also export time data for rapid import into other systems, such as payroll.

{% @mermaid/diagram content="---
title: Simple export example
config:
look: handDrawn
theme: neutral
--------------

graph LR
Hardfin --Export--> Payroll
style Hardfin fill:#F5F9FF
" %}

### Excel export

Export comprehensive time data to Excel format for external analysis, reporting, and integration with other systems. Time exports include:

* **Complete time details** - All recorded information including person, project, duration, and categories
* **Calculated totals** - Automatic summation of hours and costs where applicable
* **Formatted output** - Professional Excel formatting for immediate use

To export time data, simply click the "Export time data" button at the bottom of the time tracking table. Your data will be downloaded in Excel format.

## Import time data

Time data can be imported from CSV files for rapid assignment of time to projects and people. You can also import time data for rapid sync with other systems, such as payroll.

{% @mermaid/diagram content="---
title: Simple import example
config:
look: handDrawn
theme: neutral
--------------

graph LR
Payroll --Import--> Hardfin
style Hardfin fill:#F5F9FF
" fullWidth="false" %}

### Bulk CSV import

Import large volumes of time data efficiently using CSV files. The import system supports flexible formatting and validates data to ensure accuracy. Required fields include:

* **Date** - Work date in standard date formats
* **Duration** - Time spent (flexible format support)
* **Category** - Work classification
* **Person** - Person assignment

Supported duration formats include:

* Hours and minutes: "1h 30m", "2h 15m"
* Minutes only: "90m", "135m"
* Decimal hours: "1.5h", "2.25h"
* Mixed formats within the same import file

To import time data, click the "Import from file" button in the dropdown menu next to the "Add time" button. Follow the simple wizard instructions to upload your data.

<figure><img src="/files/gYJlzEbtZbnfY893J0nR" alt="" width="563"><figcaption><p>Import time window</p></figcaption></figure>

## Time categories

{% hint style="success" %}
**Categories improve reporting and analysis**. Categorized time can be filtered and grouped in reports, making it easier to understand resource allocation and optimize operational efficiency.
{% endhint %}

Time records are organized using predefined categories that align with common business activities:

#### **Engineering & setup**

* **Product design & development** - Mechanical/electrical design, prototyping
* **Site planning & survey** - Floorplan work, cable routing, on-site assessments
* **Hardware setup & staging** - Power setup, racking, ID labeling, barcoding
* **Firmware & software configuration** - OS installs, firmware updates, remote provisioning
* **Customization & engineering** - Electrical/mechanical mods, harness design, kit prep
* **Integration & testing** - Bench tests, firmware QA, field commissioning
* **Quality assurance & rework** - Field fixes, QA inspections, validation testing

#### **Field activity**

* **Deployment & installation** - On-site setup, physical install, power and network connection
* **Field service & repair** - Troubleshooting, diagnostics, equipment repair
* **Retrieval & decommission** - Uninstall, asset return, end-of-service collection
* **Travel** - Driving, flying, commuting between job sites

#### **Coordination & engagement**

* **Project planning & external coordination** - Scoping work, managing resources, status tracking
* **Team meetings & internal coordination** - Standups, internal syncs, cross-functional planning
* **Documentation & process development** - Writing SOPs, documenting field lessons
* **Customer training & onboarding** - Training users, walking through documentation
* **Support & issue resolution** - Troubleshooting remotely, fielding post-deployment questions

#### **Professional services**

* **Legal & regulatory services** - Contract review, IP support, site-specific compliance advice
* **Accounting & finance services** - Bookkeeping, financial planning, tax advisory
* **Strategic consulting** - Field ops advisors, GTM consultants

#### **Development & strategy**

* **Training & certification** - Online courses, safety training, certifications
* **Research & innovation** - Evaluating new tools, prototypes, experimental features
* **Strategic planning** - Roadmapping, long-term design discussions

#### **Other**

* **Other** - Unclassified or uncategorized time


# Cost tracking

**Cost tracking** in Hardfin allows you to track expenses and costs across your business with comprehensive recording, categorization, and reporting capabilities. This system provides centralized cost tracking that spans across projects, people, and activities. You can easily import or export cost information to or from other systems, such as accounting software or expense management tools, to keep everything in sync.

{% hint style="info" %}
Cost tracking provides organization-wide cost tracking that complements [time tracking](/run-financial-operations/time-tracking). While time focuses on labor and hourly aspects, cost tracking emphasizes financial costs and expenses.
{% endhint %}

## Overview

The cost tracking system enables you to:

* **Record cost entries** including amounts and expenses
* **Track cost details** such as assigning people, projects, and categories
* **Export cost data** to Excel for external analysis and reporting
* **Import cost data** from CSV files with flexible formatting support
* **Report on costs** with comprehensive reporting and analytics

Cost records include essential details such as date, amount, category (optional), person (optional), project (optional), and descriptive notes. All cost entries are automatically audited for accountability.

## Access cost tracking

Navigate to the **Cost tracking** section in the main navigation to access all cost tracking features. The cost tracking interface provides a comprehensive view of all cost records with filtering, search, and management capabilities.

### View cost records

Cost records are listed and include the date, amount, description, person, project, and category. Records can be quickly filtered or searched to drill into the most relevant details. Choose the "Table" view on the cost tracking page to view the cost tracking data, time series reports, and analysis charts.

<figure><img src="/files/v0MIIyym6PcKNEis6nvC" alt=""><figcaption><p>Cost record table view</p></figcaption></figure>

### View cost analytics

Cost tracking integrates with Hardfin's reporting system to provide comprehensive insights into spending patterns, project cost distribution, and financial efficiency. Filters and searching apply instantly to analytics, to make it easy to report only on relevant details.

Choose the "Analytics" view on the cost tracking page to view the cost tracking data, time series reports, and analysis charts.

Cost analytics include **summary data** that provide immediate visibility into key cost metrics without scrolling through detailed records. These summary widgets display at the top of the cost records page:

* **Total costs reported** - Number of individual cost entries logged
* **Total value reported** - Sum of all cost entries in the current view
* **Average cost reported** - Average amount across all cost entries

Cost analytics also includes **configurable visual charts** with comprehensive breakdowns by person, project and category.

<figure><img src="/files/DuNtR2AMDGwJHffRCEUn" alt=""><figcaption><p>Cost record analytics view</p></figcaption></figure>

## Log cost records

A new cost record can be added in moments in the Hardfin app, or can be [imported in bulk](#import-cost-data) from other applications.

### Add new cost records

Create new cost entries using the "Add cost" button. Each cost record includes:

* **Date** - When the cost was incurred
* **Amount** - Cost amount in dollars
* **Description** - Additional details about the expense

Optional information includes:

* **Person** - Associate the cost with a specific person
* **Project** - Associate cost with a specific project
* **Category** - Classification of the cost type (see [cost categories](#cost-categories))

<figure><img src="/files/QsMY7FzVYIRArbLuKTbc" alt="" width="375"><figcaption><p>Add cost window</p></figcaption></figure>

#### Direct link

You can use a **direct link** to quickly add cost entries without navigating through the cost tracking interface. This allows you to bookmark or share a link to automatically [open the "Add cost" window](https://assets.hardfin.com/costs?add).

{% hint style="info" %}
**Direct links are useful for bookmarks and workflows.** You can bookmark URLs for quick access to frequently used entry forms, or share them with team members who need to log costs.
{% endhint %}

### Edit cost records

Existing cost records can be modified by selecting the edit option for any entry. Changes are tracked in the audit log, providing complete visibility into modifications and maintaining accountability for cost tracking accuracy.

### Delete cost records

Cost records can be removed when necessary, with confirmation dialogs to prevent accidental deletion. Deletion actions are logged in the audit system for compliance and tracking purposes.

## Cost reporting and analytics

Access comprehensive cost-tracking analytics across your cost and project portfolio from the **Analytics** tab. Detailed cost analytics includes:

* Time-series breakdown (costs reported over time)
* Person-level breakdown (costs reported by user)
* Project-level breakdown (costs reported by project)
* Category-level breakdown (costs reported by category)

All cost analytics are reporting by **dollars**.

<figure><img src="/files/oBFOWnvBU3P24GDRSRWD" alt="" width="563"><figcaption><p>Cost analytics view</p></figcaption></figure>

## Export cost data

Cost data can be exported to Excel for additional analysis and reporting. You can also export cost data for rapid import into other systems, such as accounting software or expense management tools.

{% @mermaid/diagram content="---
title: Simple export example
config:
look: handDrawn
theme: neutral
--------------

graph LR
Hardfin --Export--> Accounting
style Hardfin fill:#F5F9FF
" %}

### Excel export

Export comprehensive cost data to Excel format for external analysis, reporting, and integration with other systems. Cost exports include:

* **Complete cost details** - All recorded information including person, project, amount, and categories
* **Calculated totals** - Automatic summation of costs where applicable
* **Formatted output** - Professional Excel formatting for immediate use

To export cost data, simply click the "Export cost data" button at the bottom of the cost tracking table. Your data will be downloaded in Excel format.

## Import cost data

Cost data can be imported from CSV files for rapid assignment of costs to projects and people. You can also import cost data for rapid sync with other systems, such as accounting software or expense management tools.

{% @mermaid/diagram content="---
title: Simple import example
config:
look: handDrawn
theme: neutral
--------------

graph LR
Accounting --Import--> Hardfin
style Hardfin fill:#F5F9FF
" fullWidth="false" %}

### Bulk CSV import

Import large volumes of cost data efficiently using CSV files. The import system supports flexible formatting and validates data to ensure accuracy. Required fields include:

* **Date** - Cost date in standard date formats
* **Amount** - Cost amount in dollars
* **Description** - Expense description

Optional fields include:

* **Person** - Person assignment
* **Project** - Project assignment
* **Category** - Cost classification

To import cost data, click the "Import from file" button in the dropdown menu next to the "Add cost" button. Follow the simple wizard instructions to upload your data.

<figure><img src="/files/wefpJB4jGRfn90I6ll6K" alt="" width="563"><figcaption><p>Import cost window</p></figcaption></figure>

## Cost categories

{% hint style="success" %}
**Categories improve reporting and analysis**. Categorized costs can be filtered and grouped in reports, making it easier to understand spending patterns and optimize financial efficiency.
{% endhint %}

Cost records are organized using predefined categories that align with common business activities:

#### **Engineering & setup**

* **Product design & development** - Mechanical/electrical design, prototyping
* **Site planning & survey** - Floorplan work, cable routing, on-site assessments
* **Hardware setup & staging** - Power setup, racking, ID labeling, barcoding
* **Firmware & software configuration** - OS installs, firmware updates, remote provisioning
* **Customization & engineering** - Electrical/mechanical mods, harness design, kit prep
* **Integration & testing** - Bench tests, firmware QA, field commissioning
* **Quality assurance & rework** - Field fixes, QA inspections, validation testing

#### **Field activity**

* **Deployment & installation** - On-site setup, physical install, power and network connection
* **Field service & repair** - Troubleshooting, diagnostics, equipment repair
* **Retrieval & decommission** - Uninstall, asset return, end-of-service collection
* **Travel** - Driving, flying, commuting between job sites
* **Meals & entertainment** - Per diems, meals while traveling, team/client dinners

#### **Materials & logistics**

* **Parts & materials** - Replacement units, small parts, repair kits
* **Tools & consumables** - Tape, PPE, handheld tools, zip ties
* **Site rentals & equipment** - Scaffolding, lifts, rented trailers
* **Shipping & freight** - Inbound or outbound logistics
* **Permits & access fees** - Job site permits, union compliance, access cards

#### **Coordination & engagement**

* **Project planning & external coordination** - Scoping work, managing resources, status tracking
* **Team meetings & internal coordination** - Standups, internal syncs, cross-functional planning
* **Documentation & process development** - Writing SOPs, documenting field lessons
* **Customer training & onboarding** - Training users, walking through documentation
* **Support & issue resolution** - Troubleshooting remotely, fielding post-deployment questions

#### **Labor & services**

* **Field labor** - Hands-on work at a customer site by internal team
* **Contracted labor** - Third-party techs, subcontractors
* **Internal labor allocation** - General staff time across multiple projects

#### **Professional services**

* **Legal & regulatory services** - Contract review, IP support, site-specific compliance advice
* **Accounting & finance services** - Bookkeeping, financial planning, tax advisory
* **Strategic consulting** - Field ops advisors, GTM consultants

#### **Development & strategy**

* **Training & certification** - Online courses, safety training, certifications
* **Research & innovation** - Evaluating new tools, prototypes, experimental features
* **Strategic planning** - Roadmapping, long-term design discussions

#### **Other**

* **Other** - Unclassified or miscellaneous costs


# Billing

**Billing periods** are associated with each product line item on a project. Billing periods generally correspond to the *billing frequency* of the product as well as the *duration* of the project. For example, a product with a *monthly* billing frequency on a *one-year* project would have 12 billing periods.

{% hint style="info" %}
Billing periods can be added, edited, or removed for each product line item on a project. See the product details documentation for more information about [editing individual billing periods for a product line item](/run-your-business/projects/manage-project-line-items#creating-changing-or-deleting-billing-periods).
{% endhint %}

## Billing summaries

The core **billing summary** for the organization is visible at the top of your projects page:

<figure><img src="/files/WRDl79O2NB0hBK2skHkD" alt=""><figcaption><p>Billing summary</p></figcaption></figure>

The billing summary across projects is instantly filterable using the filters available on the project list, including by customer, by project, or by status.

Billing summaries are broken down across four categories:

* **Billed and paid** - total of all billing amounts for periods that have already been billed and have already been paid
* **Billed but unpaid** - total of all billing amounts for periods that have already been billed but have not yet been marked paid
* **Billable but unbilled** - total of all billing amounts for periods that have passed (the period date is before today) but have not yet been billed
* **Not yet billable** - total of all billing amounts for periods that have not yet passed (the period date is after today) and have not yet been billed

{% hint style="info" %}
If a line item is *paid* before it is *billed*, it is considered resolved and is included in "billed and paid." If a line item is *billed* before it is *billable*, it is included in "billed but unpaid."
{% endhint %}

## Specific billings

Billings are also reportable for an individual customer on the [customer details page](/set-up-the-basics/companies#view-individual-company-details) or an individual project on the [project details page](/run-your-business/projects/manage-project-line-items).

## Billing periods report

A comprehensive overview of your billing periods and the ability to filter and act on multiple billing periods at once is useful for accounts receivable (A/R) purposes. For (A/R) purposes, billing periods should be viewed and updated through the billing reports interface. This provides a much more robust way to filter and update billing information based on the billing date, customer, project, product, or other aggregate characteristics.

<figure><img src="/files/FX8Ik9BIAU1l4zlPDnHT" alt=""><figcaption><p>Billing periods report</p></figcaption></figure>

If you are looking to manage invoices and reconcile payment records from third-party billing or payment systems, you should use the billing reports interface instead of updating product line items individually.

## Exporting billing reports

Export comprehensive billing data for external analysis, accounting integration, and financial reporting. The complete export functionality provides detailed billing information with frequency data and full billing period details.

Billing exports provide a data set including:

* **Billing frequency and schedule details** - Complete billing cycle information and recurring payment schedules
* **Payment status and dates** - Current payment status, due dates, and payment history
* **Customer and project information** - Associated customer details and project context
* **Line item breakdowns** - Detailed product and service billing information

{% hint style="success" %}
Use these exports to integrate with external accounting systems, generate custom reports, or perform detailed financial analysis of your billing data.
{% endhint %}


# Accounting

Hardfin is designed to allow operational tracking of assets for a hardware-as-a-service (HaaS) business, while seamlessly integrating with your general ledger (GL) accounting system.

Hardfin can operate as an **asset subledger** that integrates with your GL. This subledger structure maintains detailed asset-level tracking while posting summarized journal entries to your GL. This implementation follows the same integration patterns as enterprise ERP systems such as SAP, Oracle, and NetSuite.

Hardfin can be used to augment such enterprise ERP systems as a full-feature asset tracking platform for HaaS businesses, or to complement less sophisticated accounting systems such as QuickBooks Online or Xero.

{% hint style="info" %}
Learn more about the contrast between operations-focused (real time) and finance-focused (period based) systems in [Bridging operations and finance](/bridging-operations-and-finance).
{% endhint %}

## Hardfin as asset subledger

An asset subledger maintains detailed transaction and balance information for specific asset categories, providing granular tracking that supports operational decisions and audit requirements while rolling up to summarized GL postings.

### Subledger architecture

Hardfin's subledger architecture separates detailed operational tracking from financial reporting:

**Detailed tracking in Hardfin** - Full SKU-level detail for all inventory and fixed-asset transactions operates in real time, without the need for periodic reconciliation or balance sheet adjustments. This includes:

* Individual asset serial numbers and metadata
* Product SKU breakdowns for all transactions
* Complete movement and deployment history
* Detailed cost basis components (acquisition costs, deployment costs)
* Asset-level depreciation calculations

**Summarized posting to GL** - Journal entries aggregate to account-level totals at the SKU level, without asset-level detail. This is done by the monthly closing workflow to ensure that the GL is always in balance. This includes:

* Monthly operational journal entries by transaction type
* Account-level balancing and reconciliation
* Adjustment entries for prior-period true-ups
* Standard chart of accounts integration

This separation allows operational teams to analyze detailed asset movements while finance teams work with clean, summarized GL postings that match standard accounting workflows.

### Integration with ERP systems

Hardfin's subledger implementation mirrors standard ERP subledger patterns:

**Account-level reconciliation** - The adjustment entry operates at the account level, avoiding the need for clearing accounts between different balance sheet areas. Details are included at the SKU level for easy reference. A single consolidated adjustment spans inventory, fixed assets, and all related accounts.

**Audit support** - While GL postings are summarized, all detailed SKU-level and asset-level breakdowns remain available in Hardfin to support auditor inquiries, operational analysis, and variance investigation.

**Locking and period close** - Hardfin locks balances by account and SKU internally, creating a frozen snapshot for easy reconciliation. This detailed lock enables precise tracking of what changed, but adjustment journal entries post only account-level aggregates.

**Chart of accounts mapping** - Configure your organization's ledger account mappings on the organization settings page to connect Hardfin's asset tracking to your ERP's chart of accounts. This enables automated journal entry generation with the correct account codes for your accounting system. [Learn more about ledger account configuration](/manage-your-account/organization#ledger-account-configuration).

The monthly close process for this implementation is detailed in [Monthly close process](/run-financial-operations/accounting/monthly-close-process).

## Best practices

### Balance sheet reconciliation

Reconcile Hardfin's asset balances to your GL monthly:

**Inventory reconciliation** - Compare Hardfin's inventory balance (by SKU if needed) to GL inventory accounts. Investigate any differences before period close.

**Fixed assets reconciliation** - Compare Hardfin's fixed asset balances and accumulated depreciation to GL fixed asset accounts. Trace differences to timing of deployments, disposals, or depreciation calculations.

**Clearing account management** - Ensure inventory clearing (GRNI) and asset disposal clearing accounts net to zero after all invoices and journal entries post.

### Cost basis policy documentation

Document your cost basis methodology:

**Simple cost basis** - Document the standard cost applied to each product SKU and how you determine that cost (e.g., average purchase price, standard bill of materials cost).

**Advanced cost basis** - Document which costs are included in acquisition costs vs. deployment costs. Reference accounting guidance (e.g., ASC 360) that supports capitalizing deployment costs. Maintain documentation of how you calculate allocated overhead or labor costs.

### Adjustment entry review

When adjustment entries are material, investigate root causes:

**Data timing differences** - Determine if adjustments result from transactions processed after period close in your other systems (e.g., late invoices, backdated receipts).

**System integration issues** - Check whether adjustments indicate problems with data synchronization between Hardfin and other systems.

Understanding adjustment drivers helps you improve processes and reduce future adjustments.


# Monthly close process

The monthly close process integrates Hardfin's operational data with your financial close procedures. This workflow ensures accurate financial reporting while maintaining operational flexibility. Hardfin operates as [an asset subledger for accounting](/run-financial-operations/accounting), as well as a [real-time operational tool for asset tracking](/bridging-operations-and-finance).

## Overview

The Hardfin monthly close process follows a structured five-step workflow that guides controllers and finance teams through reviewing operational changes, validating journal entries, and locking period balances. Each step provides visualization, detailed journal entry review, and approval tracking to ensure complete and accurate financial reporting.

### Accessing the accounting close workflow

To begin the monthly close process, navigate to the [Accounting page](https://assets.hardfin.com/accounting). The Accounting page provides access to reports and worfkflows relevant for accounting purposes, including the monthly close workflow and prior period review. You can access the monthly close workflow by clicking on the "Close workflow" button under "Period review and close" in the bottom right.

### Accounting period selector

The monthly close workflow displays an accounting period selector that shows all available periods for your organization. Each period displays:

* **Period name** - The month and year (e.g., "July 2025")
* **Period status** - Whether the period is unlocked (available for close) or locked (already closed)
* **Lock date** - For locked periods, the date when the period was locked

Select a period from the list to begin or continue the close workflow for that period.

{% hint style="info" %}
**Note:** Periods must be locked in order. You cannot lock a period until all prior periods have been locked. Future periods are disabled until the current period is locked.
{% endhint %}

## Accounting period review

The **accounting period review** page provides a centralized view for managing your accounting periods. Navigate to this page from the accounting section to see all periods at a glance.

The period review page displays:

* **Period status** - Whether each period is open, in review, or locked
* **Review progress** - Completion status of each review step within the period
* **Key metrics** - Summary of inventory and fixed asset balances for each period
* **Action buttons** - Quick access to start or continue the review process for each period

From this page, you can select any period to begin or continue the monthly close workflow. The page helps finance teams track which periods are ready for review and which have already been completed.

## Step 1: Verify all details recorded

**Goal:** Confirm all transactions have complete accounting information before beginning the close process.

Before reviewing any [journal entries](/run-financial-operations/accounting/journal-entries), verify that all operational transactions for the period have the required accounting details allocated or completed. This includes:

* Cost basis information for inventory purchases
* Capitalization details for deployment costs (if needed)
* Depreciation policies for asset deployments
* Disposal accounts for sales and scrap transactions

**Exception report:** Hardfin provides an exception report showing any transactions with missing accounting details. The report allows you to enter missing information directly before proceeding with the close.

{% hint style="warning" %}
Transactions with incomplete accounting details may result in missing journal entry lines or incorrect balances. Complete all required fields before proceeding to Step 2.
{% endhint %}

## Step 2: Review inventory rollforward and entries

**Goal:** Confirm Hardfin's operational flow and the resulting three inventory-related journal entries.

{% hint style="info" %}
The **inventory to fixed assets journal entry** is reviewed as part of the fixed-asset rollforward in Step 3, not the inventory rollforward, because it can include deployment capitalizations.
{% endhint %}

### Inventory rollforward

The [inventory rollforward](#inventory-rollforward) provides a waterfall visualization showing the flow of inventory through the period:

**Waterfall visualization:** Start → Added → Deployed → Sold → Scrapped → End

**Headline metrics:**

* Opening balance
* \+ Added
* \= Total
* \- Deployed (inventory capitalized to fixed assets)
* \- Sold
* \- Scrapped
* \= Ending balance

### Linked inventory journal entries

Below the rollforward chart, review the associated journal entries:

| Journal ID              | Type                | Description              | Example                                                                                               |
| ----------------------- | ------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------- |
| HF-JE-INV-NEW-YYYY-MM   | Inventory purchases | Additions from new units | [Example journal entry](/run-financial-operations/accounting/journal-entries#je1-inventory-purchases) |
| HF-JE-INV-SALE-YYYY-MM  | Inventory sales     | Sales of goods           | [Example journal entry](/run-financial-operations/accounting/journal-entries#je4-inventory-sales)     |
| HF-JE-INV-SCRAP-YYYY-MM | Inventory scrap     | Write-offs               | [Example journal entry](/run-financial-operations/accounting/journal-entries#je5-inventory-scrap)     |

**User actions:**

1. Export each journal entry for detailed review
2. Review each journal entry for reasonableness (amounts, SKUs, account mappings)
3. Mark each journal entry as "Reviewed ✅" once validated

{% hint style="success" %}
**Controller's review goal:** Confirm operational changes make sense and nothing is missing.
{% endhint %}

## Step 3: Review fixed-asset rollforward and entries

**Goal:** Confirm Hardfin's asset rollforward and the four fixed asset-related journal entries.

{% hint style="info" %}
The **inventory to fixed assets journal entry** is reviewed here as part of the fixed asset-rollforward, not in Step 2, since it may include deployment capitalizations.
{% endhint %}

### Fixed-asset rollforward

The [fixed-asset rollforward](#fixed-asset-rollforward) provides a waterfall visualization showing the flow of fixed assets through the period:

**Waterfall visualization:** Start → Additions → Depreciation → Disposals/Scrap → End

**Headline metrics:**

* Opening net book value (NBV)
* \+ Added from inventory
* \+ Capitalized from deployment
* \= Total
* \- Depreciation
* \- Sold
* \- Scrapped
* \= Ending net book value (NBV)

### Linked fixed-asset journal entries

Below the rollforward chart, review the associated journal entries:

| Journal ID             | Type                      | Description             | Example                                                                                                                   |
| ---------------------- | ------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| HF-JE-INV-FA-YYYY-MM   | Inventory to fixed assets | Capitalizations         | [Example journal entry](/run-financial-operations/accounting/journal-entries#je2-inventory-to-fixed-asset-capitalization) |
| HF-JE-DEPR-YYYY-MM     | Depreciation expense      | Monthly depreciation    | [Example journal entry](/run-financial-operations/accounting/journal-entries#je3-depreciation-expense)                    |
| HF-JE-FA-SALE-YYYY-MM  | Fixed asset sale          | Disposals with proceeds | [Example journal entry](/run-financial-operations/accounting/journal-entries#je6-fixed-asset-sales)                       |
| HF-JE-FA-SCRAP-YYYY-MM | Fixed asset scrap         | Retirements and scrap   | [Example journal entry](/run-financial-operations/accounting/journal-entries#je7-fixed-asset-scrap)                       |

**User actions:**

1. Export each journal entry for detailed review
2. Review each journal entry for reasonableness (amounts, SKUs, account mappings)
3. Mark each journal entry as "Reviewed ✅" once validated

{% hint style="success" %}
**Controller's review goal:** Confirm operational changes make sense and nothing is missing.
{% endhint %}

## Step 4: Review adjustment entry (if applicable)

**Goal:** Reconcile any prior-period deltas and approve Hardfin's consolidated "prior-period adjustment" journal entry.

The adjustment entry captures any differences between Hardfin's current operational balances and the locked balances from the previous period close. This entry ensures your GL stays in sync with operational changes that may have been entered after the prior period was locked.

For example, if you sold a fixed asset in the prior period, but the sale was not recorded until after the prior period was locked, the adjustment entry will automatically handle truing up the gain or loss on the sale.

### Adjustment journal entry

Review the adjustment entry if prior-period differences exist:

| Journal ID           | Type       | Description                   | Example                                                                                                    |
| -------------------- | ---------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------- |
| HF-JE-ADJUST-YYYY-MM | Adjustment | Reconcile prior-period deltas | [Example journal entry](/run-financial-operations/accounting/journal-entries#je8-prior-period-adjustments) |

If no prior-period differences exist, the system displays: "No prior-period adjustments required ✅"

**User actions:**

1. Export the adjustment entry for detailed review
2. Review the adjustment entry for reasonableness (amounts, accounts)
3. Mark the adjustment entry as "Reviewed ✅" once validated

{% hint style="success" %}
**Controller's review goal:** Confirm the adjustment entry is reasonable and nothing is missing.
{% endhint %}

## Step 5: Confirm posting and lock period

**Goal:** Final approval to freeze all balances and establish the new baseline for the next period.

### Period review summary

Before locking the period, you will be able to review a comprehensive summary of all completed steps.

An example of this summary includes:

```
📔 Period review summary: July 2025
  ---------------------------------------------------------------
  ✅ Inventory rollforward & journals ............ Reviewed
    ✅ New inventory purchases ................... Reviewed
    ✅ Inventory sales ........................... Reviewed
    ☑️ Inventory scrap ........................... None
  ✅ Fixed asset rollforward & journals .......... Reviewed
    ✅ Inventory deployments ..................... Reviewed
    ✅ Depreciation .............................. Reviewed
    ☑️ Fixed asset sales ......................... None
    ✅ Fixed asset scrap ......................... Reviewed
  ✅ Adjustment entry ............................ Reviewed
  ---------------------------------------------------------------
🏁 All reviews complete
```

### Period locks computed

Review the exact balances that will be locked for each account as of the period end date. An example of this summary includes:

```
🔍 Period locks computed: as of July 31, 2025
  ---------------------------------------------------------------
 |  Account                      |  Lock type  |  Value ($)      |
 |-------------------------------|-------------|-----------------|
 | Inventory                     | Balance     |      16,212.98  |
 | Inventory clearing            | Balance     |           0.00  |
 | Cost of goods sold            | Cumulative  |   1,218,400.00  |
 | Inventory write-offs          | Cumulative  |      47,900.00  |
 | Capitalized deployment costs  | Cumulative  |     (84,300.00) |
 | Fixed assets                  | Balance     |   9,909,121.10  |
 | Accumulated depreciation      | Balance     |  (1,780,600.00) |
 | Depreciation expense          | Cumulative  |     620,000.00  |
 | Asset disposal clearing       | Balance     |           0.00  |
 | Gain on disposal              | Cumulative  |      19,500.00  |
 | Loss on disposal              | Cumulative  |      34,200.00  |
  ---------------------------------------------------------------
🕓 Period lock ready
```

### Confirmation and signature

Before locking the period, you must provide confirmation and signature. An example of this summary includes:

**Required confirmation**

☑️ I confirm that all Hardfin journal entries for July 2025 have been posted and approved in the company's general ledger.

**Optional notes**

Enter any notes about the period close for future reference (e.g., "Late shipment for $50,000 will appear in next period's adjustment entry").

**Required signature**

Enter your name to provide an electronic signature for the period lock.

{% hint style="warning" %}
Locking this period will freeze all Hardfin balances as of July 31, 2025. Any subsequent operational changes to prior periods will appear as prior-period adjustments during the next close.
{% endhint %}

**User actions:**

1. Check the confirmation
2. Enter any notes (optional)
3. Sign your name for the e-signature
4. Click "Confirm & lock period" to complete the period close

### Post-lock behavior

Once the period is locked:

* Hardfin snapshots every account and SKU balance as of the period end date
* The system records the approver name, date/time, and any notes entered
* Electronic signature text is captured and stored for audit purposes
* The period displays as "Locked ✅ July 31, 2025" throughout Hardfin
* Any operational changes dated on or before July 31 will be automatically routed to the "prior-period delta" report for the August close


# Journal entries

As an [asset subledger](/run-financial-operations/accounting), Hardfin automatically generates journal entries (JEs) to record inventory and fixed asset transactions in your accounting system. These entries provide a complete audit trail of asset movements and ensure accurate financial reporting.

## Overview

Hardfin produces **eight types of journal entries** each month. Each operational journal entry captures a specific type of transaction (purchases, sales, deployments, depreciation, etc.), while the adjustment entry reconciles any differences between Hardfin's operational balances and your locked general ledger balances.

**Seven operational journal entries** - Record monthly transactions (broken down by SKU)

* [JE1: Inventory purchases](#je1-inventory-purchases)
* [JE2: Inventory to fixed asset capitalization](#je2-inventory-to-fixed-asset-capitalization)
* [JE3: Depreciation expense](#je3-depreciation-expense)
* [JE4: Inventory sales](#je4-inventory-sales)
* [JE5: Inventory scrap](#je5-inventory-scrap)
* [JE6: Fixed asset sales](#je6-fixed-asset-sales)
* [JE7: Fixed asset scrap](#je7-fixed-asset-scrap)

**One adjustment journal entry** - True up prior-period differences (without SKU breakdown)

* [JE8: Prior-period adjustments](#je8-prior-period-adjustments)

### Journal entry naming convention

All Hardfin journal entries follow a consistent naming pattern:

**External ID format**: `HF-JE-[TYPE]-YYYY-MM` (ex: "HF-JE-INV-NEW-2025-07")

**Memo format**: `Hardfin journal entry: [Description] (MMMM YYYY)` (ex: "Hardfin journal entry: Inventory purchases (July 2025)")

**Date**: `YYYY-MM-DD` using the last day of the month for operational entries, first day of the month for adjustment entries (ex: "2025-07-31" for inventory purchases and "2025-07-01" for prior-period adjustments for July 2025)

### Skipping immaterial entries

If a report shows no material movement in a transaction area for the month, Hardfin automatically skips that journal entry. This reduces posting volume while maintaining complete records for active transaction types.

## JE1: Inventory purchases

**External ID**: `HF-JE-INV-NEW-YYYY-MM`

**Memo**: Hardfin journal entry: New inventory (MMMM YYYY)

**Purpose**: Record new inventory acquisitions and credit the inventory clearing account. In some accounting systems, the inventory clearing account is sometimes known as Goods Received Not Invoiced (GRNI) or Goods Received Invoice Received (GRIR). The clearing account is used to track the difference between the inventory received by the warehouse and the inventory invoiced by the vendor.

**Ledger accounts**

* Debit: Inventory
* Credit: Inventory clearing account (GRIR/GRNI)

**Cost basis considerations**

If using **simple cost basis**, the inventory balance reflects the default cost basis of newly entered inventory.

If using **advanced cost basis**, the inventory balance reflects only the **acquisition costs** of your asset cost basis (equipment, materials, labor, overhead, freight, taxes, duties, and capitalizable interest), excluding deployment costs which are capitalized later.

**Example**

<table data-full-width="true"><thead><tr><th>External ID</th><th>Memo</th><th>Date</th><th>Account</th><th>Description</th><th align="right">Debit ($)</th><th align="right">Credit ($)</th></tr></thead><tbody><tr><td>HF-JE-INV-NEW-2025-07</td><td>Hardfin journal entry: New inventory (July 2025)</td><td>2025-07-31</td><td>1403 Inventory</td><td>MON-500 (Premium Monitor)</td><td align="right">12,000.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-NEW-2025-07</td><td>Hardfin journal entry: New inventory (July 2025)</td><td>2025-07-31</td><td>1403 Inventory</td><td>CPUT-100 (CPU Tower)</td><td align="right">8,500.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-NEW-2025-07</td><td>Hardfin journal entry: New inventory (July 2025)</td><td>2025-07-31</td><td>1403 Inventory</td><td>ADMOD-1 (Addon Module)</td><td align="right">4,200.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-NEW-2025-07</td><td>Hardfin journal entry: New inventory (July 2025)</td><td>2025-07-31</td><td>1499 Inventory Clearing</td><td>—</td><td align="right"></td><td align="right">24,700.00</td></tr></tbody></table>

{% hint style="info" %}
**Note on payables.** Your accounts payable (A/P) system should credit inventory purchases (when invoice is received) to the same inventory clearing account. This ensures the clearing account properly tracks the timing difference between receiving the invoice and receiving the actual inventory.
{% endhint %}

## JE2: Inventory to fixed asset capitalization

**External ID**: `HF-JE-INV-FA-YYYY-MM`

**Memo**: Hardfin journal entry: Inventory to fixed assets (MMMM YYYY)

**Purpose**: Transfer inventory to fixed assets when equipment is deployed to customers, capitalizing deployment costs as part of the asset basis. The capitalized deployment costs account (sometimes called "overhead applied") is typically a contra-expense account that offsets operating expenses.

**Ledger accounts**

* Debit: Fixed assets
* Credit: Inventory
* Credit: Capitalized deployment costs \[only with advanced cost basis]

**Cost basis considerations**

If using **simple cost basis**, assets are transferred at their simple inventory cost with no additional capitalized deployment costs.

If using **advanced cost basis**, the fixed asset balance includes both acquisition costs and **deployment costs** (outbound freight, installation, setup), which are capitalized at the time of deployment.

**Example**

<table data-full-width="true"><thead><tr><th>External ID</th><th>Memo</th><th>Date</th><th>Account</th><th>Description</th><th align="right">Debit ($)</th><th align="right">Credit ($)</th></tr></thead><tbody><tr><td>HF-JE-INV-FA-2025-07</td><td>Hardfin journal entry: Inventory to fixed assets (July 2025)</td><td>2025-07-31</td><td>1501 Fixed Assets</td><td>MON-500 (Premium Monitor)</td><td align="right">8,000.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-FA-2025-07</td><td>Hardfin journal entry: Inventory to fixed assets (July 2025)</td><td>2025-07-31</td><td>1501 Fixed Assets</td><td>CPUT-100 (CPU Tower)</td><td align="right">6,000.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-FA-2025-07</td><td>Hardfin journal entry: Inventory to fixed assets (July 2025)</td><td>2025-07-31</td><td>1501 Fixed Assets</td><td>ADMOD-1 (Addon Module)</td><td align="right">2,000.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-FA-2025-07</td><td>Hardfin journal entry: Inventory to fixed assets (July 2025)</td><td>2025-07-31</td><td>1403 Inventory</td><td>MON-500 (Premium Monitor)</td><td align="right"></td><td align="right">7,600.00</td></tr><tr><td>HF-JE-INV-FA-2025-07</td><td>Hardfin journal entry: Inventory to fixed assets (July 2025)</td><td>2025-07-31</td><td>1403 Inventory</td><td>CPUT-100 (CPU Tower)</td><td align="right"></td><td align="right">5,700.00</td></tr><tr><td>HF-JE-INV-FA-2025-07</td><td>Hardfin journal entry: Inventory to fixed assets (July 2025)</td><td>2025-07-31</td><td>1403 Inventory</td><td>ADMOD-1 (Addon Module)</td><td align="right"></td><td align="right">1,900.00</td></tr><tr><td>HF-JE-INV-FA-2025-07</td><td>Hardfin journal entry: Inventory to fixed assets (July 2025)</td><td>2025-07-31</td><td>6009 Capitalized Deployment Expenses</td><td>—</td><td align="right"></td><td align="right">800.00</td></tr></tbody></table>

{% hint style="info" %}
**Policy context.** Many companies capitalize personnel and overhead costs directly attributable to preparing equipment for deployment and its intended use (per ASC 360). The capitalized amount is recorded as an increase to property and equipment, with an offsetting credit to the **capitalized deployment cost** account (a contra-expense account presented within operating expenses).
{% endhint %}

## JE3: Depreciation expense

**External ID**: `HF-JE-DEPR-YYYY-MM`

**Memo**: Hardfin journal entry: Depreciation (MMMM YYYY)

**Purpose**: Record monthly depreciation expense for fixed assets based on their cost basis and useful life.

**Ledger accounts**

* Debit: Depreciation expense
* Credit: Accumulated depreciation

**Example**

<table data-full-width="true"><thead><tr><th>External ID</th><th>Memo</th><th>Date</th><th>Account</th><th>Description</th><th align="right">Debit ($)</th><th align="right">Credit ($)</th></tr></thead><tbody><tr><td>HF-JE-DEPR-2025-07</td><td>Hardfin journal entry: Depreciation (July 2025)</td><td>2025-07-31</td><td>7001 Depreciation</td><td>MON-500 (Premium Monitor)</td><td align="right">400.00</td><td align="right"></td></tr><tr><td>HF-JE-DEPR-2025-07</td><td>Hardfin journal entry: Depreciation (July 2025)</td><td>2025-07-31</td><td>7001 Depreciation</td><td>CPUT-100 (CPU Tower)</td><td align="right">300.00</td><td align="right"></td></tr><tr><td>HF-JE-DEPR-2025-07</td><td>Hardfin journal entry: Depreciation (July 2025)</td><td>2025-07-31</td><td>7001 Depreciation</td><td>ADMOD-1 (Addon Module)</td><td align="right">150.00</td><td align="right"></td></tr><tr><td>HF-JE-DEPR-2025-07</td><td>Hardfin journal entry: Depreciation (July 2025)</td><td>2025-07-31</td><td>1550 Accumulated Depreciation</td><td>—</td><td align="right"></td><td align="right">850.00</td></tr></tbody></table>

## JE4: Inventory sales

**External ID**: `HF-JE-INV-SALE-YYYY-MM`

**Memo**: Hardfin journal entry: Inventory to sale (MMMM YYYY)

**Purpose**: Record the cost of goods sold when inventory units are sold directly without being deployed as fixed assets.

**Ledger accounts**

* Debit: Cost of goods sold
* Credit: Inventory

**Example**

<table data-full-width="true"><thead><tr><th>External ID</th><th>Memo</th><th>Date</th><th>Account</th><th>Description</th><th align="right">Debit ($)</th><th align="right">Credit ($)</th></tr></thead><tbody><tr><td>HF-JE-INV-SALE-2025-07</td><td>Hardfin journal entry: Inventory to sale (July 2025)</td><td>2025-07-31</td><td>5010 Cost of Goods Sold</td><td>MON-500 (Premium Monitor)</td><td align="right">6,000.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-SALE-2025-07</td><td>Hardfin journal entry: Inventory to sale (July 2025)</td><td>2025-07-31</td><td>5010 Cost of Goods Sold</td><td>CPUT-100 (CPU Tower)</td><td align="right">4,000.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-SALE-2025-07</td><td>Hardfin journal entry: Inventory to sale (July 2025)</td><td>2025-07-31</td><td>5010 Cost of Goods Sold</td><td>ADMOD-1 (Addon Module)</td><td align="right">2,500.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-SALE-2025-07</td><td>Hardfin journal entry: Inventory to sale (July 2025)</td><td>2025-07-31</td><td>1403 Inventory</td><td>—</td><td align="right"></td><td align="right">12,500.00</td></tr></tbody></table>

{% hint style="info" %}
**Note on revenue recognition and invoicing.** Your accounts receivable (A/R) system should separately record the revenue side of inventory sales by debiting accounts receivable and crediting hardware sales revenue.
{% endhint %}

## JE5: Inventory scrap

**External ID**: `HF-JE-INV-SCRAP-YYYY-MM`

**Memo**: Hardfin journal entry: Inventory to scrap (MMMM YYYY)

**Purpose**: Write off inventory units that are scrapped or salvaged, recording the loss from disposing of inventory.

**Ledger accounts**

* Debit: Inventory write-off expense
* Credit: Inventory

**Example**

<table data-full-width="true"><thead><tr><th>External ID</th><th>Memo</th><th>Date</th><th>Account</th><th>Description</th><th align="right">Debit ($)</th><th align="right">Credit ($)</th></tr></thead><tbody><tr><td>HF-JE-INV-SCRAP-2025-07</td><td>Hardfin journal entry: Inventory to scrap (July 2025)</td><td>2025-07-31</td><td>6501 Inventory Write-Offs</td><td>MON-500 (Premium Monitor)</td><td align="right">1,800.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-SCRAP-2025-07</td><td>Hardfin journal entry: Inventory to scrap (July 2025)</td><td>2025-07-31</td><td>6501 Inventory Write-Offs</td><td>ADMOD-1 (Addon Module)</td><td align="right">1,200.00</td><td align="right"></td></tr><tr><td>HF-JE-INV-SCRAP-2025-07</td><td>Hardfin journal entry: Inventory to scrap (July 2025)</td><td>2025-07-31</td><td>1403 Inventory</td><td>—</td><td align="right"></td><td align="right">3,000.00</td></tr></tbody></table>

{% hint style="info" %}
**Note on salvage proceeds.** If you invoice for scrapped inventory salvage value, your A/R system should debit accounts receivable and credit the inventory write-off account. If your system can only credit sales revenue, use a manual journal entry to reclassify by debiting hardware sales revenue and crediting the inventory write-off account for consistent in-period treatment.
{% endhint %}

## JE6: Fixed asset sales

**External ID**: `HF-JE-FA-SALE-YYYY-MM`

**Memo**: Hardfin journal entry: Fixed assets to sale (MMMM YYYY)

**Purpose**: Record the disposal of fixed assets through sale, including the elimination of the asset cost basis and accumulated depreciation, and recognition of gains or losses.

**Ledger accounts**

* Debit: Asset disposal clearing
* Debit: Accumulated depreciation
* Debit: Loss on disposal \[only if sale price is below book value]
* Credit: Fixed assets
* Credit: Gain on disposal \[only if sale price exceeds book value]

**Example (with both gain and loss)**

<table data-full-width="true"><thead><tr><th>External ID</th><th>Memo</th><th>Date</th><th>Account</th><th>Description</th><th align="right">Debit ($)</th><th align="right">Credit ($)</th></tr></thead><tbody><tr><td>HF-JE-FA-SALE-2025-07</td><td>Hardfin journal entry: Fixed assets to sale (July 2025)</td><td>2025-07-31</td><td>1299 Asset Disposal Clearing</td><td>MON-500 (Premium Monitor)</td><td align="right">12,000.00</td><td align="right"></td></tr><tr><td>HF-JE-FA-SALE-2025-07</td><td>Hardfin journal entry: Fixed assets to sale (July 2025)</td><td>2025-07-31</td><td>1550 Accumulated Depreciation</td><td>MON-500 (Premium Monitor)</td><td align="right">9,000.00</td><td align="right"></td></tr><tr><td>HF-JE-FA-SALE-2025-07</td><td>Hardfin journal entry: Fixed assets to sale (July 2025)</td><td>2025-07-31</td><td>1501 Fixed Assets</td><td>MON-500 (Premium Monitor)</td><td align="right"></td><td align="right">20,000.00</td></tr><tr><td>HF-JE-FA-SALE-2025-07</td><td>Hardfin journal entry: Fixed assets to sale (July 2025)</td><td>2025-07-31</td><td>7109 Gain on Disposal</td><td>MON-500 (Premium Monitor)</td><td align="right"></td><td align="right">1,000.00</td></tr><tr><td>HF-JE-FA-SALE-2025-07</td><td>Hardfin journal entry: Fixed assets to sale (July 2025)</td><td>2025-07-31</td><td>1299 Asset Disposal Clearing</td><td>CPUT-100 (CPU Tower)</td><td align="right">8,000.00</td><td align="right"></td></tr><tr><td>HF-JE-FA-SALE-2025-07</td><td>Hardfin journal entry: Fixed assets to sale (July 2025)</td><td>2025-07-31</td><td>1550 Accumulated Depreciation</td><td>CPUT-100 (CPU Tower)</td><td align="right">6,000.00</td><td align="right"></td></tr><tr><td>HF-JE-FA-SALE-2025-07</td><td>Hardfin journal entry: Fixed assets to sale (July 2025)</td><td>2025-07-31</td><td>1501 Fixed Assets</td><td>CPUT-100 (CPU Tower)</td><td align="right"></td><td align="right">15,000.00</td></tr><tr><td>HF-JE-FA-SALE-2025-07</td><td>Hardfin journal entry: Fixed assets to sale (July 2025)</td><td>2025-07-31</td><td>7009 Loss on Disposal</td><td>CPUT-100 (CPU Tower)</td><td align="right">1,000.00</td><td align="right"></td></tr></tbody></table>

{% hint style="info" %}
**Note on asset disposal clearing.** The asset disposal clearing account tracks the sale proceeds and must clear to zero each period after sales invoices and disposal journal entries are posted. Your A/R system should credit this clearing account when selling fixed assets. If your invoicing system can only credit sales revenue, either set the disposal clearing account in Hardfin to debit sales revenue directly (noting this may cause a period mismatch), or use a manual journal entry to reclassify by debiting sales revenue and crediting the asset disposal clearing account (for consistent in-period treatment).
{% endhint %}

## JE7: Fixed asset scrap

**External ID**: `HF-JE-FA-SCRAP-YYYY-MM`

**Memo**: Hardfin journal entry: Fixed assets to scrap (MMMM YYYY)

**Purpose**: Write off fixed assets that are scrapped or salvaged at end of life, recording gains or losses from disposal.

**Ledger accounts**

* Debit: Asset disposal clearing
* Debit: Accumulated depreciation
* Debit: Loss on disposal \[only if salvage value is below book value]
* Credit: Fixed assets
* Credit: Gain on disposal \[only if salvage value exceeds book value]

**Example**

<table data-full-width="true"><thead><tr><th>External ID</th><th>Memo</th><th>Date</th><th>Account</th><th>Description</th><th align="right">Debit ($)</th><th align="right">Credit ($)</th></tr></thead><tbody><tr><td>HF-JE-FA-SCRAP-2025-07</td><td>Hardfin journal entry: Fixed assets to scrap (July 2025)</td><td>2025-07-31</td><td>1299 Asset Disposal Clearing</td><td>ADMOD-1 (Addon Module)</td><td align="right">1,500.00</td><td align="right"></td></tr><tr><td>HF-JE-FA-SCRAP-2025-07</td><td>Hardfin journal entry: Fixed assets to scrap (July 2025)</td><td>2025-07-31</td><td>1550 Accumulated Depreciation</td><td>ADMOD-1 (Addon Module)</td><td align="right">4,000.00</td><td align="right"></td></tr><tr><td>HF-JE-FA-SCRAP-2025-07</td><td>Hardfin journal entry: Fixed assets to scrap (July 2025)</td><td>2025-07-31</td><td>7009 Loss on Disposal</td><td>ADMOD-1 (Addon Module)</td><td align="right">500.00</td><td align="right"></td></tr><tr><td>HF-JE-FA-SCRAP-2025-07</td><td>Hardfin journal entry: Fixed assets to scrap (July 2025)</td><td>2025-07-31</td><td>1501 Fixed Assets</td><td>ADMOD-1 (Addon Module)</td><td align="right"></td><td align="right">6,000.00</td></tr></tbody></table>

{% hint style="info" %}
**Note on asset disposal clearing.** The same clearing account principles apply for scrapped fixed assets as for sales. The clearing account must clear to zero each period and your invoicing for salvage proceeds should credit this account. If your system can only credit sales revenue, use one of the two reclassification approaches described in JE6.
{% endhint %}

## JE8: Prior-period adjustments

**External ID**: `HF-JE-ADJUST-YYYY-MM`

**Memo**: Hardfin journal entry: Prior-period adjustments (MMMM YYYY)

**Purpose**: True up any differences between Hardfin's operational balances and the locked general ledger from the previous month close, capturing adjustments to inventory, fixed assets, deployment costs, depreciation, and disposals.

**Date**: First day of the posting month (e.g., 2025-07-01 for July adjustments)

**Ledger accounts**: All accounts used in operational journal entries may appear in the adjustment entry

**Example**

<table data-full-width="true"><thead><tr><th>External ID</th><th>Memo</th><th>Date</th><th>Account</th><th>Description</th><th align="right">Debit ($)</th><th align="right">Credit ($)</th></tr></thead><tbody><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>1403 Inventory</td><td>Net change in inventory balances (adjustments from values locked June 30, 2025)</td><td align="right"></td><td align="right">5,700.00</td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>1499 Inventory Clearing</td><td>Net change in goods received not invoiced (adjustments from values locked June 30, 2025)</td><td align="right"></td><td align="right">6,000.00</td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>5010 Cost of Goods Sold</td><td>Net change in cost of goods sold (adjustments from values locked June 30, 2025)</td><td align="right">2,500.00</td><td align="right"></td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>6501 Inventory Write-Offs</td><td>Net change in inventory write-offs (adjustments from values locked June 30, 2025)</td><td align="right">1,200.00</td><td align="right"></td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>1501 Fixed Assets</td><td>Net change in fixed asset cost basis (adjustments from values locked June 30, 2025)</td><td align="right"></td><td align="right">19,500.00</td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>6009 Capitalized Deployment Costs</td><td>Net change in capitalized deployment overhead allocations (adjustments from values locked June 30, 2025)</td><td align="right"></td><td align="right">2,000.00</td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>7001 Depreciation</td><td>Net change in depreciation expense (adjustments from values locked June 30, 2025)</td><td align="right">200.00</td><td align="right"></td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>1550 Accumulated Depreciation</td><td>Net change in accumulated depreciation (adjustments from values locked June 30, 2025)</td><td align="right">12,300.00</td><td align="right"></td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>1299 Asset Disposal Clearing</td><td>Net change in asset disposal clearing balances (adjustments from values locked June 30, 2025)</td><td align="right">13,500.00</td><td align="right"></td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>7109 Gain on Disposal</td><td>Net change in gains recognized on fixed asset disposals (adjustments from values locked June 30, 2025)</td><td align="right"></td><td align="right">1,000.00</td></tr><tr><td>HF-JE-ADJUST-2025-07</td><td>Hardfin journal entry: Prior-period adjustments (July 2025)</td><td>2025-07-01</td><td>7009 Loss on Disposal</td><td>Net change in losses recognized on fixed asset disposals (adjustments from values locked June 30, 2025)</td><td align="right">4,500.00</td><td align="right"></td></tr></tbody></table>

{% hint style="info" %}
**How adjustments work.** Hardfin locks balances by account and SKU internally for detailed tracking and analysis. However, the adjustment journal entry aggregates these changes to account-level totals without SKU breakdown. The detailed breakdown remains available in Hardfin for audit and analysis purposes.
{% endhint %}


# Third-party accounting systems

## Importing journal entries

Hardfin generates several types of [journal entries](/run-financial-operations/accounting/journal-entries) that can be exported and quickly imported into any accounting system of record. This makes it easy to use Hardfin as your [operational system for asset management](/bridging-operations-and-finance) and leverage that data directly as the [asset subledger](/run-financial-operations/accounting) for your organization.

Journal entries generated by Hardfin capture all asset movements, valuations, and transactions, providing a complete audit trail that seamlessly integrates with your accounting system. By exporting these entries, you can maintain consistency between your operational asset tracking in Hardfin and your financial records in your accounting platform of choice.

### Accounting system integration

Below are links to documentation for importing journal entries into some of the most common accounting systems for Hardfin customers:

<table data-full-width="true"><thead><tr><th width="133.26171875">System</th><th>Name</th><th width="244.5234375">General documentation</th><th>Import journal entries</th></tr></thead><tbody><tr><td><div><figure><img src="/files/JBKCVjsTTqySQZ5qNkQ1" alt="" width="188"><figcaption></figcaption></figure></div></td><td><strong>Oracle NetSuite</strong></td><td><a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1468996.html">Journal entries overview</a></td><td><a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N1472877.html#procedure_N1472932">Importing journal entries</a></td></tr><tr><td><div><figure><img src="/files/o7N6q7Yj4iF3hPZCz9SG" alt="" width="97"><figcaption></figcaption></figure></div></td><td><strong>QuickBooks Online</strong></td><td><a href="https://quickbooks.intuit.com/learn-support/en-us/help-article/accounting-bookkeeping/create-journal-entry-quickbooks-online/L6Bzy9mT9_US_en_US?uid=mgpkpcx7">Creating journal entries</a></td><td><a href="https://quickbooks.intuit.com/learn-support/en-us/help-article/import-export-data-files/import-journal-entries-quickbooks-online/L4tQBwbs7_US_en_US?uid=mgpkp9zt">Importing journal entries</a></td></tr><tr><td><div><figure><img src="/files/boSPYv5h4yYnpzqRBBd5" alt="" width="125"><figcaption></figcaption></figure></div></td><td><strong>Sage Intacct</strong></td><td><a href="https://ca-kb.sage.com/portal/app/portlets/results/viewsolution.jsp?solutionid=240304191430893">Working with journal entries</a></td><td><a href="https://ca-kb.sage.com/portal/app/portlets/results/viewsolution.jsp?solutionid=240304191549557">Importing journal entries</a></td></tr><tr><td><img src="/files/6CrgYueECKVZRIuwmp24" alt=""></td><td><strong>Xero</strong></td><td><a href="https://central.xero.com/s/article/Add-import-and-post-manual-journals-US">Add, import, and post manual journals</a></td><td><a href="https://central.xero.com/s/article/Add-import-and-post-manual-journals-US#Importmultiplemanualjournals">Import multiple manual journals</a></td></tr></tbody></table>

{% hint style="info" %}
For accounting systems not listed here, consult your accounting platform's documentation for information on importing journal entries via CSV or similar data formats.
{% endhint %}

### Exporting journal entries from Hardfin

Journal entries can be exported from Hardfin in standard formats compatible with most accounting systems. Exported data typically includes:

* Date and period information
* Account codes and descriptions
* Debit and credit amounts
* Reference numbers and descriptions

For more information, see [detailed information on Hardfin journal entries](/run-financial-operations/accounting/journal-entries).

{% hint style="success" %}
Regular exports of journal entries help maintain synchronized records between Hardfin and your accounting system, ensuring accurate financial reporting and audit compliance.
{% endhint %}


# Files and links

Hardfin allows you to attach both **files** and **links** to your project and asset records, making it easy to keep all relevant documentation and references centralized in one place.

## Overview

Files and links provide a flexible way to attach supplementary information to your assets and projects:

* **Files** - Upload documents, images, spreadsheets, and other files directly to Hardfin (all file formats accepted)
* **Links** - Attach URLs to external resources, websites, or online documentation

Both files and links can be attached to:

* **Projects** - Such as contract details, price lists, lease terms, master service agreements (MSA), and other commercial documents
* **Assets** - Such as procurement history, bills of materials, sales records, serial number documentation, and technical specifications

## Where to find files and links

You can access files and links from multiple locations in Hardfin:

* **Project details** - Navigate to a project and select the "Files and links" tab to view all project files and links
* **Asset details** - Navigate to an asset and select the "Files and links" tab to view all asset files and links

<figure><img src="/files/riAHRYpikVnmBnP1qBve" alt=""><figcaption><p>Files and links table on a project</p></figcaption></figure>

Files and links help you maintain comprehensive records for all your assets and projects, ensuring that important documentation is always accessible when you need it.

## Uploading files

Files can be uploaded directly through the "Files and links" tab on relevant pages.

To upload a file:

1. Navigate to the relevant detail page
2. Click on the "Files and links" tab
3. Click the "Upload a file" button
4. Select your file from your computer
5. The file will be uploaded and appear in the files and links table

**File requirements:**

* **All file formats are accepted** - Hardfin does not restrict file types
* **Secure storage** - All uploaded files are stored securely in your Hardfin workspace
* **Access control** - File permissions follow your project or asset access settings
* **Size limit** - 20MB per file

## Adding links

In addition to uploading files, you can attach links to external resources directly to relevant pages.

To add a link:

1. Navigate to the relevant detail page
2. Click the "Add a link" button in the quick actions menu
3. Enter the URL and an optional description
4. The link will be added to the files and links list

<figure><img src="/files/pPHM8Em8RjvgplkKV03Q" alt="" width="375"><figcaption><p>Add link window</p></figcaption></figure>

Links provide a convenient way to reference external documentation, manufacturer websites, warranty portals, or other online resources without needing to download and upload files.

## Managing files and links

Once uploaded or added, you can manage your files and links through the files and links table:

* **View** - Click on a file name to view or open the file
* **Download** - Download files directly to your computer
* **Delete** - Remove files or links that are no longer needed

{% hint style="info" %}
All changes to files and links are tracked in the [audit log](/monitor-the-details/audit-log), including when files or links are added or deleted. This ensures complete traceability for compliance and accountability purposes.
{% endhint %}

## Automatic file synchronization from HubSpot

If you have a [HubSpot CRM integration](/manage-your-account/integrations) enabled, Hardfin will automatically sync files from each HubSpot Deal directly to the new Hardfin Project when the project is created.

<figure><img src="/files/FslPLo0BOIeKu9dAgQ89" alt="" width="563"><figcaption><p>Audit record for HubSpot file sync</p></figcaption></figure>

**Automatic file synchronization**

* **Deal attachments** - Files associated with HubSpot deals are synced when the deal triggers project creation
* **Activity files** - Files attached to HubSpot activity are automatically downloaded and linked to the corresponding project
* **Centralized storage** - All HubSpot files are stored securely within your Hardfin project workspace
* **Access control** - File permissions follow your Hardfin project access settings
* **Real-time updates** - New files added to HubSpot are automatically pulled into Hardfin during regular sync cycles

HubSpot applies a [complex set of file size limits](https://knowledge.hubspot.com/files/supported-file-types), and Hardfin will automatically handle these limits when syncing files from HubSpot.

{% hint style="success" %}
Automatic file synchronization ensures that all project-related documentation from your sales process is immediately available to your operations and success teams without manual file transfers.
{% endhint %}


# Archived objects

Archiving provides a way to hide objects from your active views while preserving all historical data and relationships. Archived objects remain fully functional in the system but are hidden from default list views to reduce clutter and help teams focus on active items.

{% hint style="info" %}
Archiving is **not** the same as deleting. Archived objects remain in the system and can be unarchived at any time. All data, relationships, and history are fully preserved.
{% endhint %}

## What archiving means

When you archive an object in Hardfin:

* The object is **hidden from default list views** - It won't appear when you browse the main list of that entity type
* The object can be **filtered back into view** - Use the "Show archived" option in list views to display archived items alongside active ones
* The object is **hidden from dropdown menus** - It won't appear in the basic dropdown listing
* The object can **still be searched in dropdown menus** - You can find archived objects by searching for them by name in any dropdown or autocomplete field
* Changes are **tracked in the audit log** - Archive and unarchive actions are recorded with timestamps and user information

## Where archiving is available

Archiving is available for the following entity types in Hardfin:

### Projects

Archive projects that are complete, cancelled, or no longer active to keep your project list focused on current work. Archived projects remain accessible for reporting and historical reference. [Learn how to archive projects](/run-your-business/projects#archive-a-project)

### Products

Archive items that are discontinued, end-of-life, or no longer actively managed to simplify item selection while maintaining historical records for existing assets. [Learn how to archive items](/set-up-the-basics/items#archive-an-item)

### Companies

Archive companies that are no longer active or have ended their relationship with your organization. Archived companies remain in the system for historical reporting and reference. [Learn how to archive companies](/set-up-the-basics/companies#archive-a-company)

### Locations

Archive locations that are no longer in use, such as closed sites or decommissioned facilities. This helps maintain clean location lists while preserving location history for assets and projects. [Learn how to archive locations](/set-up-the-basics/locations#archive-a-location)

{% hint style="warning" %}
**Assets are physical items and cannot be archived.** While assets are associated with products and locations that can be archived, individual assets themselves cannot be archived. To remove assets from active tracking, use the appropriate asset status or lifecycle management features instead, such as [scrapping the asset at end of life](/run-your-business/assets/scrapping-assets-at-end-of-life).
{% endhint %}

## Finding archived objects

You can find archived objects in the following ways:

### In list views

All list views for archivable entities include an option to "Show archived" objects. When you enable this option, the list will display archived items alongside active ones (or only archived items, depending on your other filters).

To view archived objects:

1. Navigate to the relevant list view (projects, products, customers, or locations)
2. Enable the "Show archived" option in the filter controls
3. The list will update to show archived objects

Archived objects will be indicated with a small archived badge and a subtle color in the list view.

### In dropdown menus and search

Archived objects continue to appear in dropdown menus and autocomplete fields when you search for them by name. They are typically displayed with an "(Archived)" indicator to distinguish them from active objects.

This ensures that you can still reference archived objects when needed, such as when viewing historical projects or looking up past customer information.

## Changing archive status

You can usually change the archive status of an object from the *More actions* menu at the top right of the object details page.

### How to archive an object

The process for archiving varies slightly, but is generally:

1. Navigate to the detail page for the object you want to archive
2. Locate the archive control (typically in the "More actions" menu or as a dedicated button/icon)
3. Click the archive button or option
4. Confirm the action if prompted

Once archived, the object will immediately be hidden from default list views but remains accessible through search and filtering.

### How to unarchive an object

To restore an archived object to active status:

1. Navigate to the list view for that entity type
2. Enable the "Archived" filter checkbox to display archived items
3. Locate the archived object you want to restore
4. Open the object's detail page
5. Click the unarchive button or option (typically in the same location as the archive control)

The object will immediately return to active status and appear in default list views.

## Best practices

* **Archive regularly** - Keep your active lists clean by archiving completed or inactive objects
* **Use consistent criteria** - Establish clear guidelines for when to archive objects (e.g., projects 30 days after completion)
* **Review before archiving** - Ensure the object is truly inactive and that archiving won't disrupt any ongoing work or reporting
* **Document reasons** - Consider adding a note or comment before archiving to explain why, especially for important objects
* **Audit archived items periodically** - Review your archived objects occasionally to ensure your archiving practices are working well


# Search

Hardfin provides a comprehensive **global search** option on every list view so that products, assets, projects, and more can be easily searched by relevant details. If you know what you're looking for, this search is often faster than clicking through the [main navigation](/navigation).

For example, searching on the asset page will immediately start searching across the asset serial, asset description, current project, current location, customer owner, and more.

<figure><img src="/files/Ev9fjtvXUyo4h4Ln9lWv" alt=""><figcaption><p>Example asset list search</p></figcaption></figure>

## Global search

In addition, Hardfin offers **global search** in the navigation bar at the top of the page. Global search can also be accessed by typing ⌘ + K (Cmnd-K on Mac) or Control + K (Ctrl-K Windows).

<figure><img src="/files/Z9hjFlfqKSKQE9Znab4P" alt=""><figcaption><p>Navigation bar with global "Search with AI" bar</p></figcaption></figure>

The global search bar uses Hardfin AI to immediately search across navigation pages, assets, customers, locations, projects, purchase orders, fulfillment orders, return orders, and shipments that are related to your search criteria. This makes it lightning fast to access any area of the application without navigating through menus.

### Searchable entities

Global search covers the following entity types:

* **Navigation pages** - Quick access to any page in the application
* **Assets** - Search by serial number, description, or related details
* **Customers** - Search by company name or related information
* **Locations** - Search by location name or address
* **Projects** - Search by project name or customer
* **Purchase orders** - Search by PO number or supplier name
* **Fulfillment orders** - Search by order number or project name
* **Return orders** - Search by order number or customer
* **Inbound shipments** - Search by tracking number, PO number, or supplier
* **Outbound shipments** - Search by tracking number or project name

{% hint style="success" %}
Hardfin AI dives deep into the platform to surface relevant results. For example, searching a project name will show all assets on the project. Searching a customer name will show all locations belonging to the customer.
{% endhint %}

<figure><img src="/files/mEba2Vx3HUOD6Glq4w40" alt="" width="375"><figcaption><p>Example global search results</p></figcaption></figure>


# Dashboards

## Assets dashboard

The **asset dashboard** provides a comprehensive overview of your complete asset fleet across all locations and products, broken down by inventory, non-inventory, and transit. This dashboard helps you quickly understand asset status, quantities, and distribution patterns across your organization through an interactive grid layout.

<figure><img src="/files/Q05O8wgLK9Sz01SvH7qt" alt=""><figcaption><p>Asset dashboard example</p></figcaption></figure>

### Key features

The asset dashboard displays:

* **Interactive asset grid**: Assets organized by product and location with real-time counts
* **Product categorization**: Assets listed by product type (for each row)
* **Location categorization**: Assets grouped into inventory locations, non-inventory locations, and in-transit status (for each column)
* **Expandable sections**: Collapsible inventory categories to focus on specific areas of your business
* **Status indicators**: Clear visual indicators showing asset counts by status

### Filtering and customization

Control what data appears on your dashboard with advanced filtering options:

* **Show scrapped assets**: Include or exclude scrapped assets from your overview
* **Archived products**: Choose whether to display assets from archived product lines
* **Archived locations**: Hide assets from locations that are no longer active
* **Hide zeroes**: Remove rows and columns with zero asset counts to focus on active inventory and reduce visual clutter
* **Section expansion**: Expand or collapse inventory, non-inventory, and in-transit sections based on your workflow needs

The "Hide zeroes" option is particularly useful for organizations with large product catalogs or many locations, as it streamlines the dashboard view by showing only products and locations with actual asset counts. This helps you quickly identify where assets are located and which products are actively deployed without scrolling through empty entries.

### Data export

Export your complete inventory overview as a CSV file for analysis in external tools or sharing with stakeholders. The export includes all visible data based on your current filter settings.

The CSV export includes the following columns for each row type:

* **Product name** - The name of the product
* **Product SKU** - The SKU identifier for the product
* **Location counts** - Asset quantities at each inventory location, non-inventory location, and in-transit status

This export is useful for sharing asset distribution data with stakeholders, performing external analysis, or integrating with other reporting systems.

### Integration with detailed reports

The asset dashboard provides a high-level overview that connects directly to detailed asset reports. Use the dashboard to identify trends and areas of interest, then drill down into specific asset reports for comprehensive analysis and action planning.

## Products dashboard

The **products dashboard** provides analytics and insights focused on your product portfolio performance. This dashboard helps you understand how assets are distributed across your product lines, track functional status trends, and monitor logistics patterns for inventory management and field operations.

<figure><img src="/files/2wUNXbm5zvmmRSJFb0H6" alt=""><figcaption><p>Products dashboard example</p></figcaption></figure>

### Key features

The products dashboard displays comprehensive product analytics through:

* **Functional status distribution**: Bar charts showing functional vs non-functional asset counts across all product lines
* **Logistics reports**: Visual breakdown of assets in inventory locations versus field deployment locations

### Integration with detailed reports

The products dashboard connects seamlessly with detailed product reports. Use the dashboard to identify product performance patterns and logistics trends, then access specific product reports for in-depth analysis and operational planning.

## Customers dashboard

The **customers dashboard** provides comprehensive analytics focused on your customer relationships and asset ownership patterns. This dashboard helps you understand how assets are distributed across your customer base, track ownership transitions, and monitor functional status trends for customer-specific asset portfolios.

<figure><img src="/files/LE5MhGLSzboJjyYsgyUa" alt=""><figcaption><p>Customers dashboard example</p></figcaption></figure>

### Key features

The customers dashboard displays customer-focused analytics through:

* **Functional status reports**: Visual breakdown showing functional vs non-functional asset counts for each customer
* **Asset ownership breakdown**: Clear visualization of owned versus sold asset distribution across your customer base

### Integration with detailed reports

The customers dashboard connects directly with detailed customer reports and asset tracking. Use the dashboard to identify customer trends and ownership patterns, then drill down into specific customer reports for detailed relationship management and asset planning.

## Locations dashboard

The **locations dashboard** provides analytics focused on an organization's location-based asset distribution and performance. This dashboard helps users understand how assets are distributed across different locations, track functional status patterns by location, and monitor ownership transitions for location-specific asset portfolios.

<figure><img src="/files/6fMA1SUh0LkvCSbOBWAr" alt=""><figcaption><p>Locations dashboard example</p></figcaption></figure>

### Key features

The locations dashboard displays location-focused analytics through:

* **Location functional status reports**: Visual breakdown showing functional vs non-functional asset counts for each location
* **Location ownership reports**: Clear visualization of owned versus sold asset distribution across your location network

### Location map

The Location dashboard includes a dynamic map visualization showing all locations with address information. The map displays company locations in blue circles :blue\_circle: and customer locations in grey circles :white\_circle: with real-time asset counts, helping you quickly understand geographic distribution of your assets.

<figure><img src="/files/ngzOUKLd5XVvg8ymiVb8" alt=""><figcaption><p>Hardfin asset map by location</p></figcaption></figure>

You can **click** on any location marker to access details for that location, such as and associated assets, projects, and other information. Users can **move** the map by clicking and dragging, and can **zoom** using the scroll wheel on your mouse.

{% hint style="info" %}
Depending on your web browser, some users may have to hold the Control (PC) or Command (Mac) button while clicking, dragging, or scrolling in order to move/zoom the map.
{% endhint %}

This map shows all locations with address information, and all assets that are at a location. Locations without addresses are not shown. Assets that are in transit are not shown.

### Integration with detailed reports

The locations dashboard connects directly with detailed location reports and asset tracking systems. Use the dashboard to identify location trends and asset distribution patterns, then drill down into specific location reports for detailed operational planning and asset management decisions.


# Reporting

**Reporting** is the central hub to analyze your organization's activity in Hardfin over time, understand trends, and unlock new insights about your business. The [reports page](https://assets.hardfin.com/reports) lists all available reports for your organization.

{% hint style="info" %}
Want access to a report that is not released yet? Seeking a new report type? [Reach out!](mailto:support@hardfin.com) Our team is happy to prioritize new reports.

We can often release small changes or simple new reports within a few days, medium complexity reports within 1–2 weeks, and slot more sophisticated reports into our monthly development cycle. We can also work with you to implement custom reporting if needed.
{% endhint %}

<figure><img src="/files/pPL6YOiuDC67tu0AYH7v" alt=""><figcaption><p>Reports overview page</p></figcaption></figure>

## Getting started with reports

Access all reports from the main **Reports** page in your navigation menu. Each report provides flexible filtering options, date range controls, and export capabilities to help you analyze your business data effectively.

Most reports support:

* **Date range filtering** with convenient shortcuts (last 3 months, next 6 months, etc.)
* **Export functionality** to download data for external analysis
* **Real-time filtering** by products, customers, locations, and projects
* **Interactive data tables** with sorting and grouping options

## Report categories

Reports can be run across three focus areas:

### [**Asset reports**](/monitor-the-details/reporting/asset-reports) (logistics and operations)

Track your asset movements, inventory levels, and operational performance. These reports help you understand unit volumes, transit times, and fulfillment status across your entire asset lifecycle.

**Key use cases:**

* Monitor inventory levels and trends over time
* Track assets in transit and field deployment
* Analyze fulfillment performance by project and customer
* Generate snapshots for accounting and compliance

### [**Project reports**](/monitor-the-details/reporting/project-reports) (commercial and operational)

Analyze your project portfolio, commercial activity, and customer lifecycle. These reports provide insights into project performance, renewal opportunities, and business growth patterns.

**Key use cases:**

* Review active, upcoming, and completed projects
* Identify renewal and expansion opportunities
* Track customer lifecycle stages (new business, renewals, churn)
* Plan for upcoming project starts and completions

### [**Financial reports**](/monitor-the-details/reporting/financial-reports) (billing and costs)

Manage billing periods, track payment status, and analyze financial performance. These reports help streamline your billing operations and provide visibility into revenue recognition.

**Key use cases:**

* Monitor billing period status and payment tracking
* Generate financial summaries and export billing data
* Manage billing workflows with inline status updates
* Analyze revenue trends and billing performance

## Tips for effective reporting

* **Start with date ranges**: Most reports default to recent activity, but you can analyze historical trends by adjusting the date range
* **Use filters strategically**: Combine multiple filters (customer, product, location) to focus on specific business segments
* **Export for analysis**: Download report data to perform additional analysis in spreadsheet applications
* **Save common views**: Bookmark frequently used filter combinations for quick access


# Asset reports

Asset reports provide comprehensive visibility into your logistics operations, helping you track asset movements, monitor inventory levels, and analyze operational performance across your entire asset lifecycle.

## Logistics activity

Track real-time asset movements and understand volume trends across different operational stages.

### Inventory asset report

**Purpose**: Understand inventory unit volume trends over time by product and location.

The inventory asset report shows you how your inventory levels change over time, helping you identify trends, seasonal patterns, and potential stock issues. This report is essential for inventory planning and understanding your operational capacity.

**Key features:**

* **Date range filtering**: Analyze trends over any period up to 3 years
* **Grouping options**: View data grouped by location or product for different perspectives
* **Export capability**: Download data for external analysis and reporting
* **Interactive charts**: Visualize inventory trends with time-series data

**How to use:**

1. Navigate to **Reports** → **Inventory asset report**
2. Select your desired date range (maximum 3 years)
3. Choose grouping by location or product based on your analysis needs
4. Use filters to focus on specific products or locations
5. Export data for further analysis if needed

### Transit asset report

**Purpose**: Understand unit volumes in transit over time by product.

The transit asset report helps you monitor assets that are currently moving between locations, providing visibility into your logistics pipeline and helping identify potential bottlenecks or delays.

**Key features:**

* **Transit tracking**: Monitor assets currently in movement between locations
* **Product-based analysis**: Understand which products are most frequently in transit
* **Time-series data**: Track transit volumes over time to identify patterns
* **Export functionality**: Download transit data for logistics analysis

**How to use:**

1. Navigate to **Reports** → **Transit asset report**
2. Set your analysis date range
3. Review transit volumes by product type
4. Identify patterns in asset movement timing
5. Export data to analyze transit efficiency

### Field asset report

**Purpose**: Understand field unit volume trends over time by product and location.

The field asset report shows you assets that are actively deployed in the field, helping you understand utilization rates, deployment patterns, and field inventory management.

**Key features:**

* **Field deployment tracking**: Monitor assets currently deployed with customers
* **Dual grouping**: Analyze by location or product for different insights
* **Trend analysis**: Understand how field deployments change over time
* **Utilization insights**: See which products and locations have highest field activity

**How to use:**

1. Navigate to **Reports** → **Field asset report**
2. Select your analysis timeframe
3. Choose grouping by location to see geographic deployment patterns
4. Switch to product grouping to understand product utilization
5. Use date range controls to analyze seasonal deployment patterns

### Asset fulfillment report

**Purpose**: Analyze fulfillment data by product, project, and customer to understand how well you're meeting project requirements.

The asset fulfillment report provides detailed insights into how effectively you're fulfilling project requirements, showing requested versus assigned asset quantities across all your active projects. The report makes it easy to confirm fulfillment and take action immediately on needed items.

<figure><img src="/files/ONm5yjeVTqFHewgrSFGP" alt=""><figcaption><p>Asset fulfillment report example</p></figcaption></figure>

**Key features:**

* **Fulfillment status tracking**: Distinct fulfillment status for products and projects, to track individual product fulfillment distinct from overall project completion
* **Multi-dimensional filtering**: Filter by projects, products, customers, locations, and fulfillment status
* **Summary cards**: Quick overview of total requested, filled, needed, and overage quantities
* **Assignment-level detail**: Drill down to individual project assignments with separate project and product status indicators
* **Saved filter preferences**: Save commonly used filter combinations for quick access

**How to use:**

1. Navigate to **Reports** → **Asset fulfillment report**
2. Use summary cards to get an overview of fulfillment performance
3. Apply filters to focus on specific projects, customers, or products
4. Review the detailed table to see individual assignment status
5. Save filter combinations you use frequently
6. Export data for project planning and customer communications

## Data quality

### Asset exception report

**Purpose**: Identify and resolve data inconsistencies in asset records to ensure accurate financial reporting and asset tracking.

The asset exception report helps you find assets with data quality issues that could affect financial reporting, compliance, or operational accuracy. The report categorizes exceptions into two main types: date inconsistencies and detail inconsistencies.

**Date inconsistencies:**

* **In-service date before inventory date** - Asset shows in-service date earlier than when it entered inventory
* **Sale or scrap dates out of order** - Asset disposal dates don't follow logical sequence
* **First movement or assignment before inventory date** - Asset activity recorded before it entered inventory

**Detail inconsistencies:**

* **Missing cost basis** - Asset lacks required cost information for financial reporting
* **Deployment costs without acquisition costs** - Asset has deployment costs but no acquisition costs recorded
* **Salvage value exceeding 50% of cost basis** - Asset salvage value is unreasonably high relative to cost
* **In-service date without useful life** - Asset is in service but has no depreciation schedule defined

**Key features:**

* **Visual indicators** - Icons and tooltips clearly identify each type of exception
* **Detailed explanations** - Each exception includes a description of why it matters
* **Filterable results** - Focus on specific exception types or products
* **Export capability** - Download exception data for systematic resolution

**How to use:**

1. Navigate to **Reports** → **Asset exception report**
2. Review the summary to understand the scope of data quality issues
3. Use filters to focus on specific exception types or products
4. Click on individual assets to review and correct the data issues
5. Export the report to track resolution progress over time

This report is particularly valuable during monthly close processes, data migration projects, or when preparing for audits. Regular review helps maintain data quality and ensures your asset records support accurate financial reporting.

## Acquisition, sale, and disposal

**Asset snapshot reports** provide comprehensive financial and operational insights into your asset portfolio at a point in time. Snapshots offer detailed calculations including book values, depreciation, gain/loss to support financial planning, business analysis, accounting, and compliance decisions.

Asset snapshot reports are organized into three tabs, each focusing on a different asset lifecycle stage:

* [**Inventory**](#inventory-asset-snapshot) - Assets available for deployment or sale
* [**Fixed assets**](#fixed-asset-snapshot) - Assets currently in service generating value
* [**Sold assets**](#sold-asset-snapshot) - Assets that have been sold with complete financial analysis
* [**Scrapped assets**](#scrapped-asset-snapshot) - Assets that have been scrapped with complete financial analysis

Each report includes visual summaries with key statistics, followed by detailed tables with comprehensive asset information. Summary cards automatically update based on any filters applied to the underlying data, giving you real-time insights into specific parts of your asset portfolio.

**Report overview**

* **Point-in-time accuracy**: See exactly what inventory you had on any specific date
* **Export capability**: Download snapshot data for external accounting reporting
* **Historical accuracy**: Generate snapshots for any past date
* **Detailed asset information**: Include purchase dates, values, and depreciation

### Inventory asset snapshot

The [inventory asset snapshot](https://assets.hardfin.com/reports/asset-snapshot/inventory) provides a complete view of your inventory assets at any point in time. It shows all assets that are available for deployment or sale. This report helps you understand your available asset pool and plan for upcoming projects.

<figure><img src="/files/3pQORR1jKaQJN2xeNucM" alt=""><figcaption><p>Inventory asset snapshot summary</p></figcaption></figure>

**Key inventory metrics**

* Total inventory count and value
* Assets by product and location
* Expected depreciable value
* Expected useful life

<figure><img src="/files/E2fB1pj1rE0PKjVW4SX5" alt=""><figcaption><p>Inventory asset snapshot detail</p></figcaption></figure>

**How to use**

1. Navigate to **Reports** → **Inventory asset snapshot**
2. Select the specific date for your snapshot
3. Apply any necessary filters for products or locations
4. Review the comprehensive asset listing
5. Export data for accounting or compliance purposes

### Fixed asset snapshot

The [fixed asset snapshot](https://assets.hardfin.com/reports/asset-snapshot/fixed-assets) shows your fixed assets at any point in time. It provides visibility into assets currently in service, with detailed depreciation tracking and book value calculations. This report is essential for financial planning and understanding your active asset portfolio, so finance teams can track fixed-asset values for accounting purposes and plan for asset replacement cycles.

<figure><img src="/files/PqMkTE10fJdxsuROJdFN" alt=""><figcaption><p>Fixed asset snapshot summary</p></figcaption></figure>

**Key fixed-asset metrics**

* Service duration
* Depreciation calculations
* Book value tracking
* End-of-life timing

<figure><img src="/files/oMzHtHpauULyiAT3c2c9" alt=""><figcaption><p>Fixed asset snapshot detail</p></figcaption></figure>

**How to use**

1. Navigate to **Reports** → **Fixed asset snapshot**
2. Choose your snapshot date
3. Review fixed asset details and classifications
4. Export data for financial reporting and asset management
5. Use for depreciation calculations and asset tracking

### Sold asset snapshot

The [sold asset snapshot](https://assets.hardfin.com/reports/asset-snapshot/sold-assets) provides visibility into assets that have been sold, helping with revenue recognition, customer relationship management, and business performance analysis. It offers comprehensive financial analysis of assets that have been sold, including detailed profitability calculations and accounting metrics. This report is crucial for understanding the financial performance of your asset sales program and making informed decisions about asset lifecycle management.

<figure><img src="/files/VNDINLvy3c6CILmWkz3O" alt=""><figcaption><p>Sold asset snapshot summary</p></figcaption></figure>

**Key sale metrics**

* **Sale price** - Final sale amount for each asset
* **Book value at sale** - Asset's book value when sold
* **Gain/loss calculation** - Profit or loss on each asset sale
* **Service days** - Total days the asset was in service (before and after sale)
* **Depreciation tracking** - Complete depreciation history (if deployed before sale)

<figure><img src="/files/q6DqZ9wetaFZERVGlUwF" alt=""><figcaption><p>Sold asset snapshot detail</p></figcaption></figure>

**How to use**

1. Navigate to **Reports** → **Sold asset snapshot**
2. Select your analysis date
3. Review sold asset details including customer and sale information
4. Filter by customer or product to focus your analysis
5. Export data for sales analysis and customer relationship management

### Scrapped asset snapshot

The [scrapped asset snapshot](https://assets.hardfin.com/reports/asset-snapshot/scrapped-assets) provides visibility into assets that have been scrapped or disposed of, helping with asset lifecycle management, disposal tracking, and financial analysis. This report shows detailed information about scrapped assets including disposal details, depreciation calculations, and gain/loss analysis for complete asset lifecycle visibility.

<figure><img src="/files/6zARFUwIB3LPnZtawWPi" alt=""><figcaption><p>Sold asset snapshot summary</p></figcaption></figure>

**Key scrap metrics**

* **Scrap date** - When the asset was officially scrapped or disposed of
* **Book value at scrap** - Asset's remaining book value when scrapped
* **Disposal value** - Any recovery value from scrapping (if applicable)
* **Gain/loss calculation** - Financial impact of the asset disposal
* **Service days** - Total days the asset was in service before scrapping
* **Depreciation tracking** - Complete depreciation history up to scrap date

<figure><img src="/files/aqjIl60DXxhsczRpDs1U" alt=""><figcaption><p>Scrapped asset snapshot detail</p></figcaption></figure>

**How to use**

1. Navigate to **Reports** → **Scrapped asset snapshot**
2. Select your analysis date
3. Review scrapped asset details including disposal information
4. Filter by product or location to focus your analysis
5. Export data for disposal tracking and financial analysis


# Project reports

Project reports provide comprehensive insights into your commercial activity, helping you analyze project performance, track customer lifecycle stages, and plan for future business opportunities.

## Commercial history

Track your project portfolio across different lifecycle stages to understand business performance and identify opportunities.

### Active projects report

**Purpose**: Understand active projects and associated commercial activity over time.

The active projects report provides a detailed overview of your currently running projects, showing project timelines, asset allocations, and commercial activity. This report is essential for understanding your current business operations and project performance.

**Key features:**

* **Project timeline visualization**: See project start dates, durations, and expected completion
* **Asset allocation tracking**: Monitor how assets are distributed across active projects
* **Commercial activity analysis**: Understand revenue and billing associated with active projects
* **Customer insights**: See which customers have active projects and their scope
* **Filtering options**: Focus on specific customers, products, or time periods

**How to use:**

1. Navigate to **Reports** → **Active projects report**
2. Review the project timeline and current status
3. Use filters to focus on specific customers or products
4. Analyze asset allocation patterns across projects
5. Export data for project management and customer communications

**Best for**: Project management, resource planning, customer relationship management, operational oversight.

### Upcoming projects report

**Purpose**: Understand upcoming projects and associated commercial activity over time.

The upcoming projects report helps you prepare for future project launches, plan resource allocation, and understand your business pipeline. This forward-looking view is crucial for operational planning and customer success.

**Key features:**

* **Pipeline visibility**: See all projects scheduled to start in the future
* **Resource planning**: Understand upcoming asset and resource requirements
* **Customer preparation**: Identify customers with upcoming project launches
* **Timeline planning**: See project start dates and expected durations
* **Commercial forecasting**: Understand upcoming revenue opportunities

**How to use:**

1. Navigate to **Reports** → **Upcoming projects report**
2. Review upcoming project start dates and requirements
3. Filter by time period to focus on near-term or long-term projects
4. Analyze resource requirements for upcoming launches
5. Use data for capacity planning and customer communications

**Best for**: Capacity planning, resource allocation, customer preparation, business forecasting.

### Past projects report

**Purpose**: Understand past projects and associated commercial activity over time.

The past projects report provides insights into completed projects, helping you analyze historical performance, understand customer patterns, and identify opportunities for improvement or renewal.

**Key features:**

* **Historical analysis**: Review completed project performance and outcomes
* **Customer lifecycle insights**: Understand past customer relationships and project success
* **Performance benchmarking**: Compare project durations, asset utilization, and outcomes
* **Renewal identification**: Identify customers who might be ready for new projects
* **Lessons learned**: Analyze what worked well in past projects

**How to use:**

1. Navigate to **Reports** → **Past projects report**
2. Review completed project details and outcomes
3. Filter by customer to see their project history
4. Analyze project performance metrics and timelines
5. Identify patterns that can inform future project planning

**Best for**: Performance analysis, customer renewal planning, business intelligence, process improvement.

## Project lifecycle management

Track specific stages of the customer and project lifecycle to identify opportunities and manage transitions effectively.

### Upcoming renewals

**Purpose**: Track upcoming project starts that are renewals of previous projects.

The upcoming renewals report helps you identify customers whose projects are scheduled to renew, enabling proactive customer success management and revenue retention planning.

**Key features:**

* **Renewal tracking**: See which existing customers have renewal projects starting
* **Timeline visibility**: Understand when renewals are scheduled to begin
* **Customer retention insights**: Monitor your renewal pipeline and success rates
* **Revenue forecasting**: Understand recurring revenue from customer renewals
* **Proactive management**: Identify renewals that need attention or preparation

**How to use:**

1. Navigate to **Reports** → **Upcoming renewals**
2. Review customers with upcoming renewal projects
3. Plan customer success activities and renewal preparations
4. Monitor renewal timeline and ensure smooth transitions
5. Use data for revenue forecasting and customer retention planning

**Best for**: Customer success management, revenue retention, renewal planning, account management.

### Upcoming expansion

**Purpose**: Track upcoming project starts that represent expansion for existing customers.

The upcoming expansion report shows you customers who are growing their relationship with you through additional or larger projects, helping you identify your most successful customer relationships.

**Key features:**

* **Growth tracking**: See which customers are expanding their projects
* **Expansion opportunities**: Identify successful customer relationships
* **Revenue growth**: Understand how existing customers are increasing their business
* **Success patterns**: Analyze what drives customer expansion
* **Account management**: Prioritize high-growth customer relationships

**How to use:**

1. Navigate to **Reports** → **Upcoming expansion**
2. Review customers with expansion projects starting
3. Analyze expansion patterns and success factors
4. Plan account management activities for growing customers
5. Use insights to identify expansion opportunities with other customers

**Best for**: Account management, revenue growth analysis, customer success planning, business development.

### Upcoming new business

**Purpose**: Track upcoming project starts that represent new business for new customers.

The upcoming new business report shows you new customer acquisitions and their initial projects, helping you understand your customer acquisition success and plan for new customer onboarding.

**Key features:**

* **New customer tracking**: See new customers joining your platform
* **Acquisition analysis**: Understand your customer acquisition patterns
* **Onboarding planning**: Prepare for new customer project launches
* **Growth measurement**: Track new business development success
* **Market expansion**: Understand how you're growing into new customer segments

**How to use:**

1. Navigate to **Reports** → **Upcoming new business**
2. Review new customers with upcoming project starts
3. Plan onboarding and customer success activities
4. Analyze new customer acquisition patterns
5. Use data for business development and market analysis

**Best for**: Customer acquisition analysis, onboarding planning, business development, market expansion tracking.

### Upcoming renewed

**Purpose**: Track upcoming project completions that have been renewed into new projects.

The upcoming renewed report shows you successful renewal transitions, helping you understand customer retention success and plan for smooth project transitions.

**Key features:**

* **Renewal success tracking**: See completed projects that successfully renewed
* **Transition management**: Plan for smooth handoffs between old and new projects
* **Customer retention analysis**: Understand your renewal success patterns
* **Continuity planning**: Ensure seamless customer experience during transitions
* **Success measurement**: Track renewal conversion rates and timing

**How to use:**

1. Navigate to **Reports** → **Upcoming renewed**
2. Review projects completing that have successful renewals
3. Plan transition activities and customer communications
4. Ensure smooth handoff between completing and new projects
5. Analyze renewal success patterns and timing

**Best for**: Customer retention management, project transition planning, renewal success analysis.

### Upcoming contraction

**Purpose**: Track upcoming project completions that represent contraction for existing customers.

The upcoming contraction report helps you identify customers who are reducing their project scope or scale, enabling proactive customer success intervention and retention efforts.

**Key features:**

* **Contraction identification**: See customers reducing their project scope
* **Risk management**: Identify potential customer satisfaction or business issues
* **Intervention opportunities**: Plan customer success activities to address concerns
* **Revenue impact**: Understand the financial impact of customer contractions
* **Retention planning**: Develop strategies to prevent further contraction or churn

**How to use:**

1. Navigate to **Reports** → **Upcoming contraction**
2. Review customers with contracting projects
3. Plan customer success interventions and retention activities
4. Analyze contraction patterns and underlying causes
5. Develop strategies to prevent future contractions

**Best for**: Customer success management, retention planning, risk management, revenue protection.

### Upcoming churn

**Purpose**: Track upcoming project completions that represent churn for existing customers.

The upcoming churn report identifies customers whose projects are ending without renewal, helping you understand churn patterns and potentially intervene to save at-risk relationships.

**Key features:**

* **Churn identification**: See customers whose projects are ending without renewal
* **Risk assessment**: Understand which customer relationships are at risk
* **Intervention opportunities**: Identify last-chance retention opportunities
* **Churn analysis**: Understand patterns and causes of customer churn
* **Business impact**: Measure the revenue impact of customer churn

**How to use:**

1. Navigate to **Reports** → **Upcoming churn**
2. Review customers with ending projects and no renewals
3. Assess opportunities for last-minute retention efforts
4. Analyze churn patterns and contributing factors
5. Use insights to improve customer success and retention strategies

**Best for**: Churn prevention, customer retention, risk management, business intelligence.


# Financial reports

Financial reports provide comprehensive visibility into your billing operations, payment tracking, and revenue management. These reports help streamline your financial processes and provide insights into business performance.

## Billing periods management

The comprehensive billing dashboards summarize billing data in one place so it's easy to find the detail your team needs. Track and manage billing periods across all your projects with detailed status monitoring and financial summaries. These dashboards offer real-time financial summaries that help project managers and finance teams quickly assess billing status across their entire project portfolio.

<figure><img src="/files/7Wx5kRP0WeNBCDAWaV5I" alt=""><figcaption><p>Billing periods report example</p></figcaption></figure>

### Billing periods report

**Purpose**: View and manage billing periods across all projects with comprehensive status tracking and financial analysis.

The billing periods report is your central hub for managing all billing activities, providing detailed visibility into billing status, payment tracking, and financial performance across your entire project portfolio.

**Key features:**

* **Comprehensive status tracking**: Monitor billed/paid, unbilled/billable, and other billing statuses
* **Financial summaries**: Get aggregate views of billing amounts and payment status
* **Inline status management**: Update billing and payment status directly from the report
* **Advanced filtering**: Filter by customers, projects, products, and billing status
* **Date range analysis**: Analyze billing activity over any time period
* **Export functionality**: Download billing data for external analysis and accounting
* **Real-time updates**: See immediate updates when billing status changes

## Billing status categories

### Billed and paid

**Purpose**: Track billing periods that have been billed and payment has been received.

This view shows you completed billing cycles where invoices have been sent and payments have been received, providing visibility into your successful revenue collection.

**Key insights:**

* **Revenue recognition**: Confirmed revenue from completed billing cycles
* **Payment timing**: Understand how quickly customers pay after billing
* **Customer payment patterns**: See which customers pay promptly
* **Cash flow analysis**: Track actual cash received from billing periods

**How to use:**

1. Navigate to **Reports** → **Billing periods report**
2. Filter by "Billed and paid" status
3. Review completed billing cycles and payment timing
4. Analyze customer payment patterns
5. Export data for revenue recognition and cash flow analysis

### Billed but unpaid

**Purpose**: Track billing periods that have been billed but payment has not yet been received.

This view helps you monitor outstanding invoices and manage accounts receivable, identifying customers who may need payment follow-up.

**Key insights:**

* **Accounts receivable**: Outstanding invoices awaiting payment
* **Payment follow-up**: Identify customers who need payment reminders
* **Cash flow planning**: Understand expected incoming payments
* **Customer payment behavior**: Monitor payment timing patterns

**How to use:**

1. Filter billing periods by "Billed but unpaid" status
2. Review outstanding invoices and aging
3. Identify customers requiring payment follow-up
4. Plan cash flow based on expected payments
5. Export data for accounts receivable management

### Unbilled but billable

**Purpose**: Track billing periods that are ready for billing but haven't been billed yet.

This view shows you billing opportunities that are ready to be processed, helping you stay on top of your billing workflow and maximize cash flow.

**Key insights:**

* **Billing opportunities**: Revenue ready to be invoiced
* **Workflow management**: Billing periods ready for processing
* **Revenue acceleration**: Opportunities to speed up cash flow
* **Billing efficiency**: Monitor how quickly you process billable periods

**How to use:**

1. Filter by "Unbilled but billable" status
2. Review billing periods ready for invoicing
3. Process billing for ready periods
4. Monitor billing workflow efficiency
5. Plan billing activities and cash flow acceleration

### Unbilled not yet billable

**Purpose**: Track billing periods that are not yet ready for billing.

This view shows you future billing periods that haven't reached their billing date yet, helping you plan future billing activities and cash flow.

**Key insights:**

* **Future billing pipeline**: Upcoming billing opportunities
* **Cash flow forecasting**: Understand future revenue timing
* **Billing planning**: Plan future billing activities and resources
* **Revenue visibility**: See your future revenue pipeline

**How to use:**

1. Filter by "Unbilled not yet billable" status
2. Review upcoming billing periods and timing
3. Plan future billing activities and resources
4. Forecast cash flow from future billing periods
5. Monitor your revenue pipeline

## Time-based billing analysis

### Past billing periods

**Purpose**: Analyze billing activity for the last 90 days.

The past billing periods view helps you understand recent billing performance, identify trends, and analyze historical billing patterns.

**Key features:**

* **90-day historical view**: Comprehensive look at recent billing activity
* **Trend analysis**: Understand billing patterns and performance
* **Performance measurement**: Compare actual vs. expected billing
* **Issue identification**: Spot billing delays or problems
* **Customer analysis**: See which customers had billing activity

**How to use:**

1. Navigate to past billing periods (last 90 days)
2. Review recent billing activity and trends
3. Identify any billing delays or issues
4. Analyze customer billing patterns
5. Use insights to improve billing processes

### Upcoming billing periods

**Purpose**: View and plan billing activity for the next 90 days.

The upcoming billing periods view helps you plan future billing activities, prepare for upcoming invoicing, and forecast cash flow.

**Key features:**

* **90-day forward view**: See upcoming billing opportunities
* **Billing planning**: Plan resources and activities for upcoming billing
* **Cash flow forecasting**: Understand expected revenue timing
* **Customer preparation**: Prepare customers for upcoming billing
* **Workflow planning**: Organize billing activities and deadlines

**How to use:**

1. Navigate to upcoming billing periods (next 90 days)
2. Review upcoming billing deadlines and opportunities
3. Plan billing activities and resource allocation
4. Prepare customer communications for upcoming billing
5. Forecast cash flow from upcoming billing periods

### Using the billing periods report effectively

#### Filtering and analysis

* **Combine filters**: Use multiple filters (customer, project, product, status) to focus your analysis
* **Date range selection**: Adjust date ranges to analyze specific time periods
* **Status combinations**: Compare different billing statuses to understand workflow efficiency

#### Workflow management

* **Daily monitoring**: Check unbilled but billable periods daily to maintain billing efficiency
* **Payment follow-up**: Review billed but unpaid periods weekly for accounts receivable management
* **Planning activities**: Use upcoming periods for resource planning and cash flow forecasting

#### Export and integration

* **Accounting integration**: Export data for integration with accounting systems
* **Financial reporting**: Use exported data for financial statements and analysis
* **Customer communications**: Export customer-specific data for billing communications

#### Inline status updates

* **Mark as billed**: Update billing status directly from the report when invoices are sent
* **Mark as paid**: Update payment status when payments are received
* **Bulk operations**: Efficiently update multiple billing periods at once
* **Real-time tracking**: See immediate updates to financial summaries when status changes


# Accounting reports

Accounting reports provide comprehensive visibility into your asset financials and transitions over time. These reports help streamline your [close process](/run-financial-operations/accounting/monthly-close-process) and provide insights into business performance.

## Asset rollforwards

**Asset rollforward reports** show the flow of assets over a specific date range, providing visualizations that track how asset quantities change from start to end balances. These reports help you understand asset movements, additions, and dispositions across different accounting categories.

{% hint style="info" %}
**Did you know?** A rollforward is sometimes called a **waterfall** because the formula of `start + additions - subtractions = end` lends itself to clear display with a waterfall chart.
{% endhint %}

### Inventory rollforward report

The [inventory rollforward report](https://assets.hardfin.com/reports/asset-rollforward/inventory) shows the flow of inventory over a date range, tracking start and end balances with all movements in between. This report provides a comprehensive view of inventory changes including new deployments, sales, and scrap activities.

<figure><img src="/files/9hibFmO9FyE7EuJIykaT" alt=""><figcaption><p>Inventory rollforward report visuals</p></figcaption></figure>

**Key rollforward components**

* **Start** - Inventory at the beginning of the period
* **Additions** - New assets added to inventory during the period
* **Deployed** - Inventory assets deployed during the period
* **Sales** - Assets sold out of inventory during the period
* **Scrap** - Assets scrapped out of inventory during the period
* **End** - Inventory assets remaining at the end of the period

**Visual elements**

* **Summary data** - Key metrics including total additions, dispositions, and net change
* **Waterfall chart** - Visual representation of asset flow with color-coded movements
* **Detailed breakdown** - Asset-level detail supporting the rollforward calculations

**How to use**

1. Navigate to **Reports** → **Inventory rollforward report**
2. Select your analysis date range to define the transition period
3. Choose between unit quantity ("units") or dollar value ("dollars") analysis
4. Use summaries to get quick insights into overall inventory changes
5. Review the waterfall chart to understand inventory flow patterns
6. Export data for financial reporting and inventory planning

### Fixed-asset rollforward report

The [fixed asset rollforward report](https://assets.hardfin.com/reports/asset-rollforward/fixed-assets) shows the flow of fixed assets over a date range, tracking start and end balances with all movements in between. This report provides a comprehensive view of fixed asset changes including new deployments, depreciation, sales, and scrap activities.

<figure><img src="/files/QU5lBfpPf410l8nbGPG5" alt=""><figcaption><p>Fixed-asset rollforward report visuals</p></figcaption></figure>

**Key rollforward components**

* **Start** - Fixed assets at the beginning of the period
* **Additions** - New assets deployed to fixed status during the period
* **Depreciation** - Accumulated depreciation over the period
* **Sales** - Assets sold during the period (shown in yellow)
* **Scrap** - Assets scrapped during the period (shown in red)
* **End** - Fixed assets remaining at the end of the period

**Visual elements**

* **Summary data** - Key metrics including total additions, dispositions, and net change
* **Waterfall chart** - Visual representation of asset flow with color-coded movements
* **Detailed breakdown** - Asset-level detail supporting the rollforward calculations

**How to use**

1. Navigate to **Reports** → **Fixed-asset rollforward report**
2. Select your analysis date range to define the transition period
3. Choose between unit quantity ("units") or dollar value ("dollars") analysis
4. Use summaries to get quick insights into overall inventory changes
5. Review the waterfall chart to understand inventory flow patterns
6. Export data for financial reporting and depreciation calculations

## Bridge reports

**Asset bridge reports** show a time series of rollforward reports for a particular period duration, over a specific date range. For example, they may stack **monthly** rollforwards over the course of a **year**.

These reports provide a "bridge" visualization to show how asset quantities change from start to end within every period, and how those period changes compound over time. A bridge helps users understand asset movements, additions, and dispositions—across different accounting categories in every particular period—and how those changes stack up over the date range.

{% hint style="info" %}
**Did you know?** A bridge is actually a **series of stacked waterfalls**, where each waterfall is aggregated into a single bar (for each period) and shown on a time series (over the time range).
{% endhint %}

#### Inventory bridge report

The [inventory bridge report](https://assets.hardfin.com/reports/asset-bridge/inventory) provides a comprehensive view of inventory changes over time using visual time-series stacked bar charts. This report helps users understand inventory flows between different states, and identify trends in asset movement patterns across weekly, monthly, quarterly, and yearly intervals.

<figure><img src="/files/HmuijPAVCjA4a0F3y9V2" alt=""><figcaption><p>Inventory bridge visuals (using <strong>monthly</strong> periods for an <strong>annual</strong> time period)</p></figcaption></figure>

**Key bridge components**

* **Time-series visualization**: Stacked bar charts showing inventory changes over time
* **Movement tracking**: See how assets move between inventory states (added, deployed, etc.)
* **Different time period options**: View data by week, month, quarter, or year for different analysis windows
* **Date range analysis**: Identify patterns in inventory flow and seasonal variations over time
* **Export capability**: Download bridge data for external analysis and reporting

**How to use**

1. Navigate to **Reports** → **Inventory bridge report**
2. Select your desired time period (weekly, monthly, quarterly, yearly)
3. Choose your analysis date range (e.g., Jan 1 to Dec 31)
4. Choose between unit quantity ("units") or dollar value ("dollars") analysis
5. Review the stacked bar chart to understand inventory movement patterns
6. Export data for further inventory planning and analysis

## Exception reports

**Asset exception reports** show any transactions with missing or inconsistent details for accounting purposes. Exception reporting can be reviewed and resolved at any time, but is required as part of the [monthly close process](/run-financial-operations/accounting/monthly-close-process).

There are two types of exception report: date and detail.

#### **Date inconsistencies**

The date inconsistencies report shows 5 types of date-related asset exceptions:

* In-service date before inventory date
* Asset sale date before inventory date
* Asset scrap date before inventory date
* Asset movements before inventory date
* Asset assignment before inventory date

<figure><img src="/files/YDQIkFjhGkt037LoAkVU" alt=""><figcaption><p>Example date inconsistencies from asset exception reporting</p></figcaption></figure>

#### **Detail inconsistencies**

The detail inconsistencies report shows 4 types of detail-related asset exceptions:

* Missing cost basis for inventory purchases
* Missing useful life for fixed assets
* Missing inventory cost details for assets with capitalized deployment costs
* Salvage value greater than 50% of deployed cost basis

<figure><img src="/files/rPTIFL7JOx0iwvxecq6q" alt=""><figcaption><p>Example detail inconsistencies from asset exception reporting</p></figcaption></figure>

### Resolving exceptions

For each exception in the report, you can take action to resolve the issue:

**Inline resolution:** Some exceptions can be resolved directly from the exception report without leaving the page. Click the "Resolve" button next to the exception to open a resolution modal where you can:

* Update missing accounting details
* Correct inconsistent dates
* Add required information

Hardfin provides real-time validation as you make corrections to ensure the data is complete and consistent.

**Navigate to source:** For complex exceptions that require more context, the "Resolve" button will navigate you to the appropriate page (asset details, shipment details, etc.) where you can make the necessary corrections.

{% hint style="info" %}
**Resolution guidance:** The exception report indicates which exceptions can be resolved inline and which require navigation to other pages. Follow the prompts to efficiently resolve all exceptions.
{% endhint %}


# Export

**Data export** capabilities in Hardfin allow you to download comprehensive information about any details from your organization—including assets, projects, and financial data. This makes it easy to conduct external analysis, run reporting, or integrate data with other systems.

## Exporting across the platform

To export data, navigate to any list, report, or detail page and look for the download option. The export will include all data visible based on your current view and any applied filters.

#### Lists (tables)

Most tables and lists in Hardfin include a small link that hovers at the **bottom left** of the table so it is always visible, even as users update filters or change pages.

<figure><img src="/files/2u5lmeCY9vRNedwFRt5u" alt="" width="563"><figcaption><p>Example export link at bottom of table</p></figcaption></figure>

#### Reports

Some complex reports with interactive "foldable" tables show an Export link at the **top left** of the table so it is always visible even when the report is collapsed.

<figure><img src="/files/YbjBS4ZMVjW5DK8h4mk4" alt="" width="325"><figcaption><p>Example export link at top of report</p></figcaption></figure>

#### Detail pages

Detailed pages on individual objects (such as assets and projects) include an "Export" link in the "More actions" menu at the **top left** of the page.

<figure><img src="/files/Bz0l7INmjAvONI6TzGRX" alt="" width="563"><figcaption><p>Example export link in "More actions" on detail page</p></figcaption></figure>

## Project data export

Export comprehensive project information to Excel for analysis, reporting, and integration with other systems. Project exports include multiple sheets with different aspects of project data.

**Available project data sheets**

When you export projects from the projects listing page, the Excel file includes multiple sheets:

* **Projects** - Core project information including name, customer, dates, locations, workflow stage, and fulfillment status
* **Project billing details** - Billing and invoicing information for accounts receivable purposes
* **Project line items** - Product details, quantities, pricing, and billing frequencies for each project
* **Project assignments** - Asset assignment history showing which assets were assigned to each project and when

### Project billing details sheet

The project billing details sheet includes comprehensive billing information for each project:

* **Billing address** - The address where invoices should be sent
* **Billing contact name** - The name of the person responsible for billing
* **Billing contact email** - Email address for billing communications
* **Billing contact phone** - Phone number for billing inquiries
* **Payment term** - Payment terms displayed as readable labels (e.g., "Net 30", "Net 60", "Due on receipt")
* **PO number** - Purchase order number for the project
* **Discount** - Any discount amount formatted as currency
* **Memo** - Additional billing notes or instructions

This sheet makes it easy to extract billing information for multiple projects at once for accounts receivable processing, invoice generation, or financial reporting.

## Asset data export

Export comprehensive asset information to Excel for analysis, reporting, and integration with other systems.

**Asset list export**

When you export assets from the assets listing page, the Excel file includes the following columns:

* **Serial** - The unique serial number for each asset
* **Product name** - The name of the product associated with the asset
* **Product SKU** - The SKU identifier for the product
* **Description** - Asset description
* **Status** - Current operational status (Functional, Pending, Non-functional)
* **Owner** - The company that owns the asset
* **Location** - Current location of the asset
* **Project** - Associated project (if assigned)
* Additional metadata fields configured for your organization

The export respects any filters you have applied, so you can export a subset of assets based on status, location, product, or other criteria.

## Shipment data export

Export shipment data to Excel for logistics analysis, reporting, and coordination with partners. Shipment exports are available from both the inbound shipments page and the outbound shipments page.

The export respects your current filter selection (e.g., open, shipped, delivered, cancelled, or all shipments), so you can export exactly the subset of shipments you need.

**Available shipment data sheets**

When you export shipments, the Excel file includes two sheets:

* **Shipments** - Shipment-level details including shipment number, status, type, origin and destination locations, carrier, tracking number, and key dates
* **Shipment line items** - Item-level details for each shipment including item name, SKU, quantity, and serial numbers

The columns on each sheet are tailored to the shipment type (inbound or outbound) to show the most relevant information for each.

## Purchase order data export

Export purchase order data to Excel for procurement analysis, reporting, and coordination with suppliers. Purchase order exports are available from the purchase orders list page.

The export respects your current filter selection, so you can export exactly the subset of purchase orders you need.

**Available purchase order data sheets**

When you export purchase orders, the Excel file includes two sheets:

* **Purchase orders** - Order-level details including PO number, status, status level, vendor, origin and destination locations, expected date, carrier, tracking number, and key dates
* **Purchase order line items** - Item-level details for each purchase order including item name, SKU, requested quantity, and status

## Return order data export

Export return order data to Excel for returns analysis, reporting, and coordination with logistics partners. Return order exports are available from the return orders list page.

The export respects your current filter selection, so you can export exactly the subset of return orders you need.

**Available return order data sheets**

When you export return orders, the Excel file includes two sheets:

* **Return orders** - Order-level details including RO number, status, status level, return type, return reason, origin and destination locations, related exchange order, and key dates
* **Return order line items** - Item-level details for each return order including item name, SKU, requested quantity, and status

## Cost data export

Export detailed cost information to Excel for comprehensive financial analysis and reporting. Cost data exports include all relevant financial metrics and calculations associated with your projects and assets.

**Available cost data**

* Project cost breakdowns by category
* Asset-related costs and depreciation (including all accounting fields such as cost basis, salvage value, useful life, and advanced cost components)
* Time tracking
* Miscellaneous expenses

**Export features**

* **Excel format** - Download data in .xlsx format for easy analysis in spreadsheet applications
* **Comprehensive data** - All cost calculations and financial metrics included
* **Filtered exports** - Export only the data currently visible based on applied filters
* **Real-time data** - Exports reflect the most current cost information


# Notifications

### Notification configuration

Notifications can be configured for your user account in your [account settings](/manage-your-account/account). Simply select the toggle for each notification type that you'd like to receive and choose "Save" to activate (or deactivate) those notifications.

<figure><img src="/files/J8zty41DMq2duR966oAf" alt="" width="563"><figcaption><p>Account notification settings</p></figcaption></figure>

### Notification types

Hardfin offers several different types of asset notifications:

<table><thead><tr><th width="187">Type</th><th width="438">Description</th><th>Frequency</th></tr></thead><tbody><tr><td><strong>Asset summary</strong></td><td>Get notified about the status of your asset fleet</td><td>Weekly</td></tr><tr><td><strong>Asset shipment</strong></td><td>Get notified when assets are shipped</td><td>Real-time</td></tr><tr><td><strong>Asset delivery</strong></td><td>Get notified when assets are delivered</td><td>Real-time</td></tr><tr><td><strong>Delayed shipment</strong></td><td>Get notified when assets miss expected shipment</td><td>Daily</td></tr><tr><td><strong>Delayed delivery</strong></td><td>Get notified when assets miss expected delivery</td><td>Daily</td></tr></tbody></table>

{% hint style="info" %}
Have additional notification types you'd like to receive? Our team is here to support you. [Reach out to us](mailto:support@hardfin.com?subject=Hardfin%20notification%20types\&body=Hello%20-%20I%20would%20like%20to%20request%20new%20notification%20types%20in%20Hardfin.%0A%0AI'd%20like%20to%20be%20notified%20when%3A%0A-%20%0A-%20%0A-%20%0A%0AThanks!) to let us know what alerts you'd like to have available in Hardfin.
{% endhint %}

### Notification channels

Hardfin sends all notifications via **email**.

Additional notification channels, including **Slack messages**, are coming soon. :hourglass\_flowing\_sand:

{% hint style="info" %}
Have additional notification channels that you use? Our team is here to support you. [Reach out to us](mailto:support@hardfin.com?subject=Hardfin%20notification%20channels\&body=Hello%20-%20I%20would%20like%20to%20request%20new%20notification%20channels%20in%20Hardfin.%0A%0AI'd%20like%20to%20be%20notified%20via%3A%0A-%20%0A-%20%0A-%20%0A%0AThanks!) to let us know how you'd like to receive notifications from Hardfin.
{% endhint %}

### Email notification features

All email notifications from the platform include footer links that allow users to:

* **Access notification settings** - Direct link to manage your notification preferences
* **Update email preferences** - Modify which notifications you receive via email

These footer links provide convenient access to notification management.


# Audit log

Every action in Hardfin is automatically logged and reported as an audit event for security and data integrity.

{% hint style="success" %}
The **completeness** and **accuracy** of asset operations and project activity are key requirements for financial auditors in making assertions about a company's financial statements.
{% endhint %}

Audit logs for an individual record, such as an asset or project, can be viewed on the details page for that individual record. For example, you can easily view the history of a specific asset on the [asset details page](/run-your-business/assets#view-individual-asset-details) by selecting the "Audit log" tab.

The collected audit logs for an entire organization can be viewed in the **master audit log**, which is available to designated user as an option in the dropdown navigation menu at the top right of the screen.

<figure><img src="/files/CYD4TxnsPqjGIyVcJx3W" alt="" width="203"><figcaption><p>Master audit log for the organization</p></figcaption></figure>

### Filtering and viewing audit events

The master audit log can be filtered by date range and by object type (e.g., asset, project, shipment). Use these filters to narrow down the audit events displayed and find the records you need.

<figure><img src="/files/6dhicJRqAalJP2Uz45mW" alt="" width="563"><figcaption><p>Master audit log filter options</p></figcaption></figure>

The full master audit log table shows all of the audit event detail for easy reference:

<figure><img src="/files/FQSpLoOpoWLeFFyNu0Um" alt="" width="563"><figcaption><p>Master audit log detail table</p></figcaption></figure>

### Multi-timezone display

Audit log timestamps display in multiple timezones to help teams working across different regions. When you hover over a timestamp in the audit log, a tooltip appears showing the event time in several relevant timezones.

This feature is particularly useful for:

* **Distributed teams**: Quickly understand when events occurred in your local time versus other team members' timezones
* **Global operations**: Track asset movements and project changes across international locations
* **Compliance reviews**: Verify exact timing of events when working with auditors in different regions

The timezone display uses your organization's configured timezone as the primary reference, with additional common timezones shown for context.

### Note about deleted records

Audit logs in Hardfin are created permanently and **cannot be deleted**. This allows an audit trail to be preserved even for other records that are created and deleted over time.

For example, if an asset movement is logged erroneously and then deleted, the movement will no longer appear in Hardfin. But the audit trail will still reflect that a movement was created and was then deleted. This ensures the completeness and accuracy of your business records.


# Account

An **account** is an individual user that logs into the Hardfin platform. If you are using single-sign-on (SSO) through Google or Microsoft, anyone at your domain can authenticate with a Hardfin account automatically.

{% hint style="info" %}
**Understand user relationships**

An **account** can be *associated* with one **organization**, which is the Hardfin account that the user has access to. If a single person needs access to multiple Hardfin accounts, they should log in with a different username for each account.
{% endhint %}

## View account details

To see your account details, navigate to the [account page](https://assets.hardfin.com/account). Here you will see a table with your registered email address, first name, and last name.

Your email address is pulled from your single-sign-on (SSO) provider, such as Google or Microsoft. You can modify your first and last name as they appear in the Hardfin platform.

<figure><img src="/files/Rw1qqhD0t6obSY24wO3q" alt=""><figcaption><p>View Hardfin account details</p></figcaption></figure>

You can configure [notifications](/monitor-the-details/notifications) for your account in the **Notifications** section of your account page.

A full **audit log** is also available with a history of account-related actions, including logins.


# Organization

An **organization** is the business that is signed up with the Hardfin platform. If you are using single-sign-on (SSO) through Google or Microsoft, anyone with an authorized account in your organization can authenticate as part of your Hardfin organization.

{% hint style="info" %}
**Understand user relationships**

An **organization** is usually *associated* with many **accounts**, which correspond to all the users in that organization. (Note: a single user account can belong to only one organization.)
{% endhint %}

## View account details

To see your account details, navigate to the [organization page](https://assets.hardfin.com/organization). Here you will see a table with basic details such as your organization's name and time zone.

<figure><img src="/files/cakvGMUKUui76VWFLnPy" alt=""><figcaption><p>Organization details</p></figcaption></figure>

You can also configure branding details such as your organizational **logo** and **icon**.

<figure><img src="/files/62Eq0Q7qjFXCSZFMtneK" alt=""><figcaption><p>Organization branding</p></figcaption></figure>

### Asset marker

Organizations can customize the **marker** that represents your assets throughout the Hardfin platform in search bars, asset pages, and location maps. Select from a library of device icons. This asset marker allows you to choose a symbol that best represent your specific asset types and align with your brand identity.

<figure><img src="/files/h9tSn3GFWKrxNw4evhKq" alt="" width="370"><figcaption><p>Asset markers for different device/equipment types</p></figcaption></figure>

To configure your asset marker, navigate to the organization branding section and select the **Marker** subsection. Choose the marker that best represents your fleet from the available library.

## Custom notifications

**Custom notifications** allow an organization to include external stakeholders in project communications without granting them system access. From the organization page you can configure custom notifications. [Learn more about custom notifications in Hardfin.](/manage-your-account/organization/custom-notifications)

## Project workflows

**Project workflows** help organizations track and manage the stages of each projects from start to completion. You can define project workflows on the organization settings page. [Learn more about project workflows in Hardfin.](/run-your-business/projects/manage-project-workflows)

## Ledger account configuration

**Ledger accounts** allow your organization to map Hardfin's asset tracking to your ERP's chart of accounts. This configuration enables automated journal entry generation and seamless integration with your accounting system.

From the organization settings page, you can configure 11 default ledger account mappings:

**Inventory accounts:**

* Inventory - Main inventory asset account
* Inventory clearing - Goods received not invoiced (GRNI) clearing account
* Cost of goods sold - Expense account for inventory sold or consumed
* Inventory write-off - Expense account for inventory losses or disposals

**Fixed asset accounts:**

* Fixed assets - Main fixed asset account
* Capitalized deployment - Costs capitalized during asset deployment
* Depreciation - Depreciation expense account
* Accumulated depreciation - Contra-asset account for accumulated depreciation
* Disposal clearing - Clearing account for asset disposals
* Disposal gain - Income account for gains on asset sales
* Disposal loss - Expense account for losses on asset sales

These mappings are typically configured once during initial setup and used for monthly financial reporting. Changes to ledger accounts are tracked in the organization audit log.

{% hint style="info" %}
Ledger account configuration is designed for finance teams and system administrators. These settings determine how Hardfin generates journal entries for your accounting system.
{% endhint %}

## Organization users

Organization **users** are people that are members of your organization. From the organization page you can view users, and organization administrators can make updates. [Learn more about user management in Hardfin.](/manage-your-account/organization/user-management)

## View audit and deletion logs

A full **audit log** is also available with a history of organization-related actions, including new user accounts. A separate **deletion log** includes details of records that have been deleted from your account. Read [more about audit logs](/monitor-the-details/audit-log) in Hardfin.


# Custom notifications

**Custom notifications** allow you to include external stakeholders in project communications without granting them full system access. This feature enables collaboration with customers, partners, or other external parties who need to stay informed about project progress.

{% hint style="info" %}
Custom notifications are also useful for sending notifications to email lists, such as `accounting@example.com` or `accounts-receivable@example.com`.
{% endhint %}

<figure><img src="/files/d4eAj8lcMrx7dwrmjcZt" alt=""><figcaption><p>Custom notification list</p></figcaption></figure>

### Managing custom notifications

To set up a new custom notification:

1. Navigate to the [Organization settings](https://assets.hardfin.com/organization) page
2. In the **Custom notifications** section, choose **Add**
3. Enter the email address to receive the notification
4. Choose the appropriate notification preferences
5. Save the configuration to begin sending notifications

<figure><img src="/files/x7iRb1nwk4Q0JUizLRLp" alt="" width="563"><figcaption><p>Configuring a new custom notification</p></figcaption></figure>

A custom notification can be configured for any of Hardfin's [notification options](/monitor-the-details/notifications).

Once set up, an existing custom notification can be modified by clicking "edit" or "delete" next to the email address in the custom notification list.


# Ledger accounts

**Ledger accounts** allow your organization to map Hardfin's asset tracking to the chart of accounts in your general ledger (GL). This configuration enables automated journal entry generation and seamless integration with your accounting system.

{% hint style="info" %}
For more information on using Hardfin for accounting and integration with third-party accounting systems, see [the accounting section](/run-financial-operations/accounting).
{% endhint %}

From the **organization settings** page, you can configure 11 default ledger account mappings:

**Inventory accounts**

* **Inventory.** Main inventory asset account (for acquisition costs)
* **Inventory clearing.** Clearing account between billing and receiving (sometimes called goods received not invoiced (GRNI) or good receipts invoice receipts (GRIR) in other systems)
* **Cost of goods sold.** Expense account for inventory sold
* **Inventory write-off.** Expense account for inventory losses or disposals

**Fixed-asset accounts**

* **Fixed assets.** Main fixed asset account
* **Capitalized deployment costs.** Costs capitalized when assets enter service (for deployment costs)
* **Depreciation expense.** Expense account for depreciation in period
* **Accumulated depreciation.** Contra-asset account for accumulated depreciation against fixed assets
* **Asset disposal clearing.** Clearing account with billing for asset disposals
* **Disposal gain.** Income account for gains on asset sales
* **Disposal loss.** Expense account for losses on asset sales

These mappings are typically configured once during initial setup and used for monthly financial reporting. Changes to ledger accounts are tracked in the organization audit log.

{% hint style="info" %}
Ledger account configuration is designed for finance teams and system administrators. These settings determine how Hardfin generates [journal entries](/run-financial-operations/accounting/journal-entries) for your accounting system.
{% endhint %}

<figure><img src="/files/BLC1lP6xikjz74do4niR" alt="" width="563"><figcaption><p>Example organization ledger settings</p></figcaption></figure>


# User management

Organization **users** are people that are members of your organization. The user list is visible from the organization page. Organization administrators can make updates to each user.

User information includes first name, last name, email, status (active or deactivated), and role (user or administrator).

<figure><img src="/files/4rQq6dvEWXg03rKZAS3w" alt="" width="563"><figcaption><p>User list view</p></figcaption></figure>

The **most recent dates** when users were updated are available by hovering on the user's current Status or Role.

{% hint style="info" %}
See the advanced options for more information on [permissions and roles](/advanced-options/permissions).
{% endhint %}

## Additional options for administrators

Administrators will see additional options for each user to change their status and role, as well as edit user information directly from the user list.

### Editing user information

Administrators can **edit user details** directly from the user management interface without navigating to individual user profiles. This includes updating:

* **Personal information** - First name, last name, and contact details
* **Account settings** - Email address and user rate information

To edit a user's information, click "Edit user details" next to the user's name in the user list. Changes take effect immediately.

#### Changing user status

* **Activate user.** This option appears for deactivated users. It sets them `active` in the organization. An active user is a regular user account — they can log in, access and perform all operations in Hardfin that they have permissions for, and receive notifications.
* **Deactivate user.** This option appears for active users. It sets them `deactivated` in the organization. A deactivated user cannot log in, perform any action, or receive notifications.

#### Changing user role

* **Make admin (promote).** This option appears for non-administrator users. It sets them as `admin` in the organization. An admin user is a superuser account — they can deactivate other users and promote/demote other user to and from admin.
* **Remove admin (demote).** This option appears for administrator users. It sets them as `user` in the organization. A user is a regular account — they cannot change other users.

{% hint style="info" %}
In order to avoid locking out your organization, admins cannot make changes to *their own* user account. For example: an admin cannot deactivate their own account or remove their own admin status.
{% endhint %}

#### Setting default rates

Admin can configure **default rates** that automatically apply to users when recording time tracking activities. This ensures consistent pricing across projects and reduces manual rate entry. It can also reduce errors.

Default rates are configured for each user as part of that user's settings:

<figure><img src="/files/2MiMks802Nd2SOvitdlE" alt="" width="306"><figcaption><p>User settings and rate</p></figcaption></figure>

These rates are populated automatically user whenever a user logs time.

{% hint style="info" %}
**Only users with `Admin` permissions can see rate information.** Admins can set rates for users, even if that user is not an admin and cannot see their own rate. If a user has a default rate set and cannot see rates, their default rate will always be used when they log time. If a user has a default rate set and has access to rate information, their default rate will be pre-populated when they log time, and the user will be able to modify it as needed.
{% endhint %}


# Integrations

{% hint style="info" %}
Looking to integrate directly with the Hardfin API? Please see the [API access](/advanced-options/api-access) documentation.
{% endhint %}

Hardfin supports integrating with Customer Relationship Management (CRM) software, as well as Accounting or Enterprise Resource Planning (ERP) systems. These integrations allow your organization to sync data between Hardfin and your business systems automatically.

CRM integrations allow your organization to load commercial data from your CRM into Hardfin automatically, while Accounting/ERP integrations enable synchronization of operational and financial data between Hardfin and your ERP.

## CRM integrations

### How CRM data sync works <a href="#hubspot-crm-integration" id="hubspot-crm-integration"></a>

Hardfin can automatically pull data from your CRM on an ongoing basis.

{% @mermaid/diagram content="graph LR\
CRM(CRM data) -- Automatic sync --> HF(Hardfin platform)" fullWidth="false" %}

#### Data sync <a href="#hubspot-crm-integration" id="hubspot-crm-integration"></a>

You define rules for which data flows from your CRM to Hardfin, including field-level configurations for data integration. Most businesses sync 3 key types of data on a regular basis:

* CRM Account or Company → Hardfin **Customer**
* CRM Opportunity or Deal → Hardfin **Project**
* CRM Product or Line Item → Hardfin **Product**

Some businesses track additional types of data to sync, such as:

* CRM Site Information → Hardfin **Location**
* CRM Service Record → Hardfin **Ticket**

#### Sync frequency <a href="#hubspot-crm-integration" id="hubspot-crm-integration"></a>

Free accounts sync data once per day, while paid accounts sync data more frequently (every 5–60 minutes depending on the plan). Please [contact us](mailto:support@hardfin.com) to enable *real-time* data sync.

#### Sync triggers

CRM data syncs to Hardfin once when a record first meets your sync criteria (such as a deal reaching the "Closed won" stage). After this initial sync, Hardfin will not automatically override data with subsequent CRM changes unless you specifically request a re-sync.

If you need to pull the latest CRM data for a specific project, you can manually trigger a re-sync from the project details page. This gives you full control over when CRM updates flow into Hardfin while protecting the work your operations team has already completed.

{% hint style="info" %}
This behavior is intentional: once CRM data flows into Hardfin, your operations team and supply chain staff typically begin making updates directly in Hardfin—adjusting project details, managing fulfillment, and tracking assets. Automatic re-syncing from the CRM could overwrite these operational changes if sales or support teams later modify the original CRM record.
{% endhint %}

### Connecting your CRM <a href="#hubspot-crm-integration" id="hubspot-crm-integration"></a>

Integrate your CRM with Hardfin from the [integrations page](https://assets.hardfin.com/integrations), accessible in the user dropdown menu.

<figure><img src="/files/7yxfG0bYdkYs1dixLm4b" alt="" width="175"><figcaption><p>Integrations in dropdown menu</p></figcaption></figure>

You will see CRM configuration options in the "Customer Relationship Management" section. The integrations page displays all available integration types, including those not currently included in your plan. Integrations that are not available on your current plan display a message with guidance on how to access them, so you can see the full range of capabilities and plan for future needs.

If you do not have a CRM connected, you will see the option to Connect HubSpot. If you are on an advanced plan tier and other CRMs have been enabled for your organization, you will see those integration options instead.

Hardfin supports **HubSpot** as the default CRM integration available on all plans. Hardfin also supports **Salesforce** as a custom CRM integration available an add-on for on all plans.

<table data-header-hidden><thead><tr><th width="275.9375"></th><th width="244.4140625"></th></tr></thead><tbody><tr><td><img src="/files/9xCp79XIA5S5Et8MgAwe" alt="" data-size="original"></td><td><img src="/files/sn3xhbPZV3U2J44uV5P6" alt="" data-size="original"></td></tr></tbody></table>

### Use HubSpot as your CRM integration

Hardfin supports **HubSpot** as the default CRM integration available on all plans. This integration allows users to manage their CRM data directly within the Hardfin platform with seamless synchronization, ensuring that your sales and financial operations are perfectly aligned.

#### Connect HubSpot <a href="#hubspot-crm-integration" id="hubspot-crm-integration"></a>

Clicking "Connect HubSpot" will pop open a new window with the authentication flow for HubSpot. After you have approved your integration, your Hardfin organization will be directly connected to the CRM.

{% hint style="success" %}
To ensure that all workflows have appropriate access to complete successfully, we recommend you integrate using an **administrator** account in your CRM.
{% endhint %}

<figure><img src="/files/HHEVqvWRguoogUTckJbW" alt=""><figcaption><p>CRM configuration before HubSpot is connected</p></figcaption></figure>

Once connected successfully, you will be returned to the *Integrations* page.

#### Configure HubSpot integration <a href="#hubspot-crm-integration" id="hubspot-crm-integration"></a>

You must configure the integration in order for data to start syncing automatically. Click "Configure" to open the configuration menu.

<figure><img src="/files/WMjbZtk2QObnq9ljUkPV" alt=""><figcaption><p>CRM configuration before HubSpot is configured</p></figcaption></figure>

#### HubSpot project mapping

Your project mapping determines how HubSpot *Deal* information is mapped to a Hardfin *Project*.

Select the deal fields you wish to map to projects. Hardfin will automatically sync your CRM information for each of these fields.

<figure><img src="/files/NcjUOOy6fABi6AeNyzGi" alt="" width="563"><figcaption><p>HubSpot project mapping configuration</p></figcaption></figure>

#### HubSpot line item mapping

Your line item mapping determines how HubSpot *Deal line item* information is mapped to a Hardfin *Project line item*.

Select the line item fields you wish to map. Hardfin will automatically sync your CRM information for each of these fields.

{% hint style="info" %}
If a HubSpot Product already has an existing match in Hardfin, it will be mapped automatically. If a HubSpot Product does not have an existing match, the Hardfin platform will try to match the product based on its name. If a HubSpot Product still cannot find a match, the Hardfin platform will create a new product.
{% endhint %}

<figure><img src="/files/GyzY7Kw6hO5mky6Is4g7" alt="" width="563"><figcaption><p>HubSpot line item mapping configuration</p></figcaption></figure>

#### HubSpot customer mapping

Your customer mapping determines how HubSpot *Company* information is mapped to a Hardfin *Customer*.

Select the company fields you wish to map to customers. Hardfin will automatically sync your CRM information for each of these fields.

<figure><img src="/files/wmUa8WNSwReNHWIuZyjt" alt="" width="563"><figcaption><p>HubSpot customer mapping configuration</p></figcaption></figure>

#### HubSpot pipeline selection

Your deal trigger determines *when* HubSpot information is synced automatically to Hardfin. By default Hardfin recommends syncing *Closed won* deals.

<figure><img src="/files/S2Yii5Z0LbmGzmZE3Xdp" alt="" width="563"><figcaption><p>HubSpot pipeline selection configuration</p></figcaption></figure>

Select your deal pipelines and deal stages. Hardfin will automatically sync your CRM information as soon as a Deal hits this stage.

#### Multiple pipeline support

Hardfin supports syncing deals from multiple HubSpot pipelines simultaneously, allowing you to manage different sales processes and product lines within a single integration.

**Pipeline configuration**

* **Multiple pipeline setup.** Configure sync triggers for different HubSpot pipelines based on your sales organization
* **Pipeline-specific triggers.** Set different deal stages for each pipeline to control when deals sync to Hardfin
* **Flexible mapping.** Each pipeline can have its own field mappings and sync rules
* **Unified project creation.** Deals from all configured pipelines create projects in the same Hardfin workspace

**Managing multiple pipelines**

* **Pipeline selection.** Choose which HubSpot pipelines to include in your sync configuration
* **Stage customization.** Define the appropriate sync trigger stage for each pipeline
* **Audit tracking.** All pipeline configuration changes are tracked in your organization's audit log
* **Performance optimization.** Sync frequency and processing are optimized across all configured pipelines

This is particularly useful for organizations with separate sales processes for different deal types, product lines, customer segments, or geographic regions, ensuring all deals flow seamlessly into Hardfin regardless of their originating pipeline.

#### Enable HubSpot sync

Once your HubSpot integration is fully configured, you will see the option to enable sync.

<figure><img src="/files/X6HZ0sjfUH2pV6rnWvje" alt=""><figcaption><p>CRM configuration before sync is enabled</p></figcaption></figure>

When enabling sync, you can specify a date from which to sync modified deals. Hardfin will automatically sync all deals modified after this date. For example, you may want to sync the prior year's worth of deals to Hardfin to [jumpstart your onboarding](/getting-started#start-with-existing-data-in-30-minutes).

{% hint style="info" %}
Note that deals can be modified in HubSpot after they close. Hardfin will look for any deals *modified* after the given date, even if they closed at an earlier date.
{% endhint %}

Select "Active" for the sync status on any pipeline and click Save to start Hardfin automatically mapping your CRM data on an ongoing basis.

#### Editing HubSpot configuration

You can update your configuration settings at any time to update the sync trigger, modify field mappings, or pause syncing. Simply click the *gear icon* :gear: next to your HubSpot configuration.

<figure><img src="/files/DcMbA2btrebptwSnh5UC" alt=""><figcaption><p>HubSpot CRM configuration after fully connected, configured, and syncing</p></figcaption></figure>

#### **HubSpot file syncing**

Hardfin automatically syncs files from HubSpot Deals directly to your Hardfin Projects, ensuring all relevant documentation is centralized and accessible.

<figure><img src="/files/FslPLo0BOIeKu9dAgQ89" alt="" width="563"><figcaption><p>Audit record for HubSpot file sync</p></figcaption></figure>

**Automatic file synchronization**

* **Deal attachments.** Files associated with HubSpot deals are synced when the deal triggers project creation
* **Activity files.** Files attached to HubSpot activity are automatically downloaded and linked to the corresponding project
* **Real-time updates.** New files added to HubSpot are automatically pulled into Hardfin during regular sync cycles
* **Centralized storage.** All HubSpot files are stored securely within your Hardfin project workspace
* **Access control.** File permissions follow your Hardfin project access settings

This ensures that all project-related documentation from your sales process is immediately available to your operations and success teams without manual file transfers.

### Use Salesforce as your CRM integration

Hardfin supports **Salesforce** as a custom CRM integration available as an add-on to advanced plan tiers for organizations requiring enterprise-level customer relationship management capabilities. A Salesforce integration allows users to manage their CRM data directly within the Hardfin platform with seamless synchronization, ensuring that your sales and financial operations are perfectly aligned.

<figure><img src="/files/XyvYqSNBtTGPZupPApIV" alt=""><figcaption><p>Salesforce CRM configuration after fully connected, configured, and syncing</p></figcaption></figure>

{% hint style="warning" %}
Due to the high degree of customization and complexity that is typical in Salesforce implementations, this integration usually requires custom configuration during the implementation process.
{% endhint %}

#### **Set up Salesforce connection**

Salesforce can be connected to a Hardfin in just a few easy steps, and—for a default Salesforce configuration—Salesforce can be implemented within a few hours. For custom implementations, Salesforce configuration will take longer.

{% hint style="success" %}
Your account manager will help your team with this configuration during implementation.
{% endhint %}

**Install Hardfin data connector for Salesforce**

A Salesforce administrator should install the **Hardfin data connector** in your Salesforce org. This connector leverages Salesforce's new *External Client App* technology to provide an additional layer of security for your org.

**Choose appropriate user for Hardfin to access Salesforce**

Hardfin must be granted access to Salesforce through a specific user account. This is usually a dedicated **integration user** account (for a modern ECA implementation), a full user account, or in some cases a relevant user account such as for a business operations manager or Salesforce analyst.

In either case, Hardfin must be granted the appropriate **permission sets** and **permissions** to access relevant fields. Contact your Hardfin account manager for the details relevant for your implementation.

{% hint style="success" %}
To ensure that all workflows have appropriate access to complete successfully, the simplest method is using an **administrator** account in your CRM.
{% endhint %}

**Authenticate Salesforce user with Hardfin**

Click "Connect Salesforce" to open a new window with the authentication flow for Salesforce. After you have approved your integration, your Hardfin organization will be directly connected to the CRM.

Once connected successfully, you will be returned to the *Integrations* page.

#### Configure Salesforce implementation

The Salesforce integration setup involves working directly with the Hardfin implementation team to configure the connection based on your specific Salesforce configuration. This ensures that data flows correctly between systems while respecting your existing Salesforce workflows and data integrity requirements.

**Field mapping customization.** Each Salesforce instance has unique custom fields, objects, and workflows that must be individually mapped to Hardfin's data structure

**Pipeline integration.** Salesforce opportunity stages and sales processes vary significantly between organizations and require tailored sync trigger configuration

**Hardfin setup.** Hardfin will map Salesforce data consistently to Customer, Locations, Products, and Projects in order to ensure standardized reporting

#### **Enable Salesforce sync**

Once your Salesforce integration is fully configured, you will see the option to enable sync.

When enabling sync, you can specify a date from which to sync modified opportunities. Hardfin will automatically sync all opportunities modified after this date. For example, you may want to sync the prior year's worth of opportunities to Hardfin to jumpstart your onboarding.

{% hint style="info" %}
Note that opportunities can be modified in Salesforce after they close. Hardfin will look for any opportunities *modified* after the given date, even if they closed at an earlier date.
{% endhint %}

#### Editing Salesforce configuration

You can view your configuration status at any time to monitor the Salesforce integration. Contact your account manager to make modifications to a custom Salesforce implementation.

#### Resyncing projects from Salesforce

If you need to refresh project data from Salesforce, you can manually trigger a resync for individual projects. This is useful when:

* Salesforce opportunity data has been updated and you want to pull the latest changes immediately
* You need to correct data discrepancies between Salesforce and Hardfin
* You want to ensure a specific project reflects the most current Salesforce information

To resync a project from Salesforce, navigate to the project details page and select the resync option from the project actions menu. Hardfin will fetch the latest opportunity data from Salesforce and update the project accordingly, including any changes to project details, line items, or associated customer information.

## Managing unmatched items from external systems

When syncing data from external systems such as ERP integrations, some items may not automatically match to existing products in Hardfin. These unmatched items are collected in the **item triage** queue for manual classification.

### Item triage

The item triage page displays items from external systems that could not be automatically matched to existing Hardfin products. This typically occurs when an external system contains products or SKUs that have not yet been set up in Hardfin, or when naming conventions differ between systems.

**To access item triage:**

Navigate to the item triage page from the navigation menu. You will see a list of unmatched items with their external system name, SKU, and the source system they came from.

**To classify an unmatched item:**

1. Select an item from the triage list
2. Choose to either map it to an existing Hardfin product or create a new product
3. Confirm your selection

Once classified, the item will be linked to the appropriate Hardfin product and future syncs will automatically use this mapping. The triage queue helps ensure that all external system data flows correctly into Hardfin without requiring manual intervention for each sync.

{% hint style="info" %}
Item triage is primarily used with ERP integrations. If you are using a CRM integration only, products are typically created automatically during the sync process based on your field mappings.
{% endhint %}

### Connect other CRMs <a href="#hubspot-crm-integration" id="hubspot-crm-integration"></a>

{% hint style="info" %}
Looking for enterprise CRMs such as Microsoft Dynamics? [Contact support](mailto:support@hardfin.com) to activate the appropriate integration for your account. Advanced CRM support is included with Hardfin's advanced plan tiers or as an enterprise add-on.
{% endhint %}

## Accounting and ERP integrations

Hardfin supports integrating with accounting and Enterprise Resource Planning (ERP) systems. These integrations allow your organization to sync operational and financial data between Hardfin and your ERP.

Integrate your ERP with Hardfin from the [integrations page](https://assets.hardfin.com/integrations), accessible in the user dropdown menu.

<figure><img src="/files/7yxfG0bYdkYs1dixLm4b" alt="" width="175"><figcaption><p>Integrations in dropdown menu</p></figcaption></figure>

You will see ERP configuration options in the "Accounting and enterprise resource planning (ERP)" section. If you do not have an ERP connected, you will see the option to Connect QuickBooks Online. If you are on an advanced plan tier and other ERPs have been enabled for your organization, you will see those integration options instead.

Hardfin supports **QuickBooks Online** as the default ERP integration available on all plans. Hardfin also supports **Oracle NetSuite** as a custom ERP integration available an add-on for on all plans.

| <img src="https://upload.wikimedia.org/wikipedia/commons/c/ce/Intuit_QuickBooks_logo.png" alt="" data-size="original"> | <img src="https://www.logoeps.net/wp-content/uploads/2016/12/netsuite-logo.png" alt="" data-size="original"> |
| ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |

### Use QuickBooks Online as your accounting system

Hardfin supports a direct connection to **QuickBooks Online** for organizations that use QuickBooks as their accounting system. This integration enables seamless data synchronization between Hardfin and QuickBooks Online.

<figure><img src="/files/MKFJIMiyhfgOBhmzhR47" alt=""><figcaption><p>Integrations view before QuickBooks Online is connected</p></figcaption></figure>

#### Connect QuickBooks Online

To connect QuickBooks Online to Hardfin:

1. Navigate to the [integrations page](https://assets.hardfin.com/integrations) from the user dropdown menu
2. In the "Accounting" section, click "Connect QuickBooks Online"
3. A new window will open with the QuickBooks Online authentication flow
4. Sign in to your QuickBooks Online account and authorize the connection
5. Once approved, you will be returned to the Integrations page

{% hint style="success" %}
To ensure that all workflows have appropriate access to complete successfully, you must integrate using an **administrator** account in QuickBooks Online.
{% endhint %}

<figure><img src="/files/9UV2HMTbPG3rqFneUYgJ" alt="" width="375"><figcaption><p>Connect QuickBooks window</p></figcaption></figure>

Once connected, the integration status will display alongside your other connected integrations on the Integrations page.

<figure><img src="/files/iU5eo2mmrKCHecAFXNby" alt="" width="563"><figcaption><p>QuickBooks integration connected</p></figcaption></figure>

#### Item sync

Once your QuickBooks Online connection is active, Hardfin automatically syncs items (products and services) from QuickBooks Online on a recurring basis. This keeps your Hardfin product catalog aligned with your accounting system without manual data entry.

**How item sync works**

Hardfin periodically fetches items from QuickBooks Online and attempts to match them to existing products and parts in Hardfin. Matching is based on SKU or item name:

* If a QuickBooks item matches an existing Hardfin product or part by SKU or name, the items are linked automatically
* If a QuickBooks item cannot be matched, it is sent to the integration triage queue for manual review

**Sync status**

You can view the current sync status for your QuickBooks Online integration on the integrations page. The status indicates when items were last synced and whether any items require attention in triage.

### Use NetSuite as your ERP integration

Hardfin supports **NetSuite** as an ERP integration for organizations that need to synchronize inventory, product, and financial data between systems.

#### Connect NetSuite

To connect NetSuite to Hardfin, navigate to the [integrations page](https://assets.hardfin.com/integrations) and locate the ERP integration section. Click "Connect NetSuite" to begin the authentication process.

{% hint style="success" %}
NetSuite integration is available as an add-on to advanced plan tiers for organizations that have sophisticated synchronization needs for inventory, product, and financial data. Your account manager will help your team with NetSuite configuration during implementation.
{% endhint %}

#### Configure NetSuite integration

The NetSuite integration setup involves working with the Hardfin implementation team to configure the connection based on your specific NetSuite configuration. This ensures that data flows correctly between systems while respecting your existing NetSuite workflows.

<figure><img src="/files/asKfkPvclDUitAlgpaEB" alt=""><figcaption><p>NetSuite connected view</p></figcaption></figure>

#### Multiple integration support

Items in Hardfin (products and parts) can be linked to multiple integrations simultaneously. This allows you to maintain connections with both CRM and ERP systems for the same items, enabling flexible data synchronization across your business systems.

For example, a product can be linked to both your HubSpot CRM integration (for sales data) and your NetSuite ERP integration (for inventory and financial data) at the same time.

{% hint style="info" %}
Contact your account manager to enable NetSuite integration for your organization.
{% endhint %}


# Third-party fulfillment

**Third-party logistics (3PL) fulfillment** allows your organization to work with external logistics providers to handle receiving, shipping, and returns. When enabled, you can send orders directly to your 3PL provider and receive automatic status updates as orders are processed.

{% hint style="info" %}
Third-party fulfillment is an optional feature that must be enabled for your organization. [Contact your Hardfin representative](mailto:support@hardfin.com) to enable third-party fulfillment.
{% endhint %}

## How third-party fulfillment works

When third-party fulfillment is enabled, certain locations in your organization can be designated as 3PL locations. These are locations managed by your third-party logistics provider rather than your own warehouse.

When you create orders that involve a 3PL location, you can send the order directly to your 3PL provider using the "Send to 3PL" button. Once sent, the order status updates automatically as your 3PL provider processes the inbound or outbound shipment.

### Identifying 3PL locations

Locations that are managed by a third-party fulfillment provider display a "3PL" indicator when you search for or select locations throughout the application. This helps you identify which locations are handled by your 3PL provider and ensures orders are routed correctly.

## Supported order types

Third-party fulfillment supports each of the order types in Hardfin:

### Purchase orders

[Purchase orders](/source-and-build/purchase-orders) track inbound inventory from suppliers. When the "To" location is a 3PL location, you can send the purchase order directly to your 3PL provider to receive the shipment on your behalf.

For detailed instructions on sending purchase orders to your 3PL provider, see [Sending POs to 3PLs](/source-and-build/purchase-orders#sending-pos-to-3pls) in the purchase orders documentation.

### Fulfillment orders

[Fulfillment orders](/fulfill-and-deploy/fulfillment-orders) track outbound shipments to customers. When the "From" location is a 3PL location, you can send the fulfillment order directly to your 3PL provider to handle the shipment.

For detailed instructions on sending fulfillment orders to your 3PL provider, see [Third-party fulfillment (3PL)](/fulfill-and-deploy/fulfillment-orders#third-party-fulfillment-3pl) in the fulfillment orders documentation.

### Return orders

[Return orders](/fulfill-and-deploy/return-orders) track customer returns. When the return location is a 3PL location, you can send the return order to your 3PL provider to receive and process the returned items.

For detailed instructions on sending return orders to your 3PL provider, see [Third-party fulfillment (3PL)](/fulfill-and-deploy/return-orders#third-party-fulfillment-3pl) in the return orders documentation.

## Sending orders to your 3PL provider

When an order involves a 3PL location, a "Send to 3PL" button appears on the order details page:

<figure><img src="/files/0UvN7h0OawNWSPz7TayU" alt=""><figcaption><p>"Send to 3PL" button on fulfillment order</p></figcaption></figure>

Clicking this button opens a confirmation window where you can review the order before sending it to your 3PL provider:

<figure><img src="/files/ackiYfmw4cYArT5s210H" alt="" width="375"><figcaption><p>"Send to 3PL" window</p></figcaption></figure>

Once you confirm, the order is sent to your 3PL provider and the status changes to "Awaiting 3PL." As your 3PL provider processes the order, the status updates automatically to reflect the current state of any inbound or outbound shipments.

## Automatic status updates

After sending an order to your 3PL provider, Hardfin automatically receives status updates as the order is processed. You cannot manually update order statuses for shipments associated with an order that has been sent to a 3PL. The order will progress through its lifecycle (such as from "Awaiting 3PL" to "Shipping" to "Received" or "Filled") based on updates from your 3PL.

## Prerequisites

Before sending an order to your 3PL provider, ensure the following:

* **Complete address information.** The destination location must have complete address data. If address information is missing, you will see an error message with a link to update the location.
* **3PL-enabled location.** The relevant location (origin for fulfillment orders, destination for purchase orders, return location for return orders) must be configured as a 3PL location.
* **Draft status.** Orders must be in draft status before they can be sent to a 3PL provider.

{% hint style="warning" %}
Once an order is sent to your 3PL provider, it cannot be edited. Make sure all order details are correct before sending. Once the order is sent, you can only take action on the order by receiving the inbound or outbound shipment from your 3PL provider. To cancel an order that has been sent to a 3PL, you must cancel the order directly with your 3PL provider.
{% endhint %}

## Notes on 3PL orders

Notes on orders that have been sent to a 3PL provider are **read-only**. This means you can view any notes that were added before the order was sent, but you cannot add or modify notes after the order has been submitted to your 3PL. This ensures that the order information remains consistent between Hardfin and your 3PL provider's system.

If you need to communicate additional information about an order after it has been sent to your 3PL, contact your 3PL provider directly through their preferred communication channel.


# Permissions

Hardfin supports **roles** as the foundation for advanced permissions and role-based access control (RBAC). Roles allow administrators to organize users into groups and prepare granular permission management.

### Roles

**Roles** provide a way to organize users within your organization based on departments, teams, or functional roles. Roles serve as the building blocks for permission and access control features.

**Key capabilities**

* **Default roles** - Use `User` and `Admin` to configure basic user distinctions
* **Role creation** - Create custom roles to match your organizational structure
* **User assignment** - Add users to one or more roles based on their work in the organization

### Setting up roles

1. **Create roles** - Define role that reflect your organization's structure (e.g., "Finance Lead", "Operations Manager", "Project Manager", "Controller")
2. **Assign users** - Add users to appropriate roles based on their responsibilities
3. **Manage membership** - Update roles assignments as user responsibilities change

{% hint style="info" %}
**Contact your account manager to configure user roles.** Default roles for `User` and `Admin` are available in all Hardfin instances. Custom roles are an advanced feature configured for your organization during implementation. Roles can be created and managed for more advanced RBAC needs on Hardfin advanced subscription tiers.
{% endhint %}


# Sandbox

Hardfin provisions a sandbox account for each organization. The sandbox provides a non-production environment where you can experiment with new workflows and test new data.

Your sandbox account is accessible at [sandbox.hardfin.com](https://sandbox.hardfin.com/). Customer often use the sandbox to test [API access](/advanced-options/api-access) and other automations.

**Sandbox accounts are reset every Saturday at midnight UTC** (i.e., 00:00:00 Greenwich Mean Time). At this time, all data from the organization's production account is copied to the organization's sandbox. This provides a clean slate for ongoing testing and ensures that temporary sandbox changes do not persist.

For more information on your sandbox, adjusting your reset time, and other customizations, please contact your Customer Success representative.


# API access

Hardfin offers API access for existing platform customers. More information is available in the [Hardfin API documentation](https://docs.hardfin.com/).

Contact your Customer Success representative to get access to the API.


