# Authentication
Source: https://docs.antsfield.com/api-reference/authentication
Authenticate API requests with workspace API keys and scoped permissions.
All Antsfield API requests must use **HTTPS**. Unencrypted HTTP is not supported.
## API keys
Create keys under **Settings → API Keys** in your workspace. Each key is tied to the user who created it and inherits that user's workspace role and location access.
```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```
API keys are shown **once** at creation. Store them in a secrets manager or environment variable. Never commit keys to source control, client-side code, or public repositories.
## Key types
| Type | Prefix | Workspace ID | Scopes |
| - | - | - | - |
| **Full access** | (no prefix) | Required on every request via `workspaceId` query param | All permissions your user role allows |
| **Restricted** | `retrac_` | Embedded in the key — omit `workspaceId` | Only scopes you select at creation |
Restricted keys are recommended for integrations. Grant the **minimum scopes** needed.
## Scopes
Restricted keys use space-separated scopes. Presets in the dashboard map to:
| Preset | Scopes | Use when |
| - | - | - |
| **All access** | `apis.all` | Trusted server-side integrations needing full inventory access |
| **Read only** | `apis.read` | Reporting, dashboards, sync-from-Antsfield jobs |
| **Restricted** | Custom subset | Principle of least privilege |
Individual resource scopes:
| Scope | Allows |
| - | - |
| `items.read` / `items.write` | List and manage catalog items |
| `tags.read` / `tags.write` | List and manage tags |
| `locations.read` / `locations.write` | List and manage locations (`write` is owner-only) |
| `inventory.read` / `inventory.write` | Read balances/movements; set on-hand stock |
| `transfers.read` / `transfers.write` | List and create transfers; owners may revert |
| `workspaces.read` / `workspaces.write` | Read workspace metadata; update workspace (`write` is owner-only) |
A restricted key cannot exceed what your workspace **role** allows. For example, a member cannot use a key with `locations.write` if their role does not include that permission.
## Workspace ID
Full-access keys must pass `workspaceId` on every workspace-scoped request:
```bash theme={null}
https://api.antsfield.com/items?workspaceId=YOUR_WORKSPACE_ID
```
Find the workspace ID under **Settings → General**.
Restricted keys (`retrac_…`) are bound to one workspace — do not pass `workspaceId`; the server resolves it from the key.
## Session authentication
Dashboard session cookies are **not** documented here and should not be used for third-party integrations. Use API keys for programmatic access.
## Plan requirements
API keys are available on **Business** plans and above. Lower plans may receive `403` responses when creating or using keys.
# Bulk create items
Source: https://docs.antsfield.com/api-reference/endpoint/bulk-create-items
post /items/bulk
Bulk create up to 100 items for the authenticated workspace.
```bash cURL theme={null}
curl --request POST \
--url https://api.antsfield.com/items/bulk?workspaceId={WORKSPACE_ID} \
--header 'Authorization: Bearer {YOUR_TOKEN}' \
--header 'Content-Type: application/json' \
--data '[
{
"sku": "FIRSTITEM",
"description": "First item description",
"quantity": 1,
"cost": 1,
},
{
"sku": "SECONDITEM",
"description": "Second item description",
"quantity": 2,
"cost": 2,
}
...
]'
```
```javascript JavaScript theme={null}
const options = {
method: 'POST',
headers: {Authorization: 'Bearer {YOUR_TOKEN}', 'Content-Type': 'application/json'},
body: JSON.stringify([
{
"sku": "FIRSTITEM",
"description": "First item description",
"quantity": 1,
"cost": 1,
},
{
"sku": "SECONDITEM",
"description": "Second item description",
"quantity": 2,
"cost": 2,
},
...
])
};
fetch('https://api.antsfield.com/items/bulk?workspaceId={WORKSPACE_ID}', options)
.then(response => response.json())
.then(response => console.log(response))
.catch(err => console.error(err));
```
# Create a location
Source: https://docs.antsfield.com/api-reference/endpoint/create-a-location
post /locations
Create a new storage location in the authenticated workspace. Requires `locations.write` scope. Workspace owners only when the token user has restricted location access.
# Create a new item
Source: https://docs.antsfield.com/api-reference/endpoint/create-a-new-item
post /items
Create a new item for the authenticated workspace.
# Create a new tag
Source: https://docs.antsfield.com/api-reference/endpoint/create-a-new-tag
post /tags
Create a new tag for the authenticated workspace.
# Create a workspace
Source: https://docs.antsfield.com/api-reference/endpoint/create-a-new-workspace
post /workspaces
Create a new workspace for the authenticated user.
# Create a transfer
Source: https://docs.antsfield.com/api-reference/endpoint/create-a-transfer
post /inventory/transfers
Move stock between two locations instantly. Requires sufficient on-hand quantity at the source location and `transfers.write` scope. Counts toward your workspace transfer limit.
# Delete a location
Source: https://docs.antsfield.com/api-reference/endpoint/delete-a-location
delete /locations/{id}
Delete a location. Fails if the location still has on-hand stock or is the workspace default location. Requires `locations.write` scope.
# Delete an item
Source: https://docs.antsfield.com/api-reference/endpoint/delete-an-item
delete /items/{itemId}
Delete an item for the authenticated workspace.
# List inventory balances
Source: https://docs.antsfield.com/api-reference/endpoint/list-inventory-balances
get /inventory/balances
Retrieve on-hand quantities per item and location. Requires `inventory.read` scope. Results respect location access for restricted members.
# List inventory movements
Source: https://docs.antsfield.com/api-reference/endpoint/list-inventory-movements
get /inventory/movements
Retrieve the append-only stock ledger for the workspace. Requires `inventory.read` scope.
# List transfers
Source: https://docs.antsfield.com/api-reference/endpoint/list-transfers
get /inventory/transfers
Retrieve transfer orders for the workspace. Requires `transfers.read` scope.
# Retrieve a list of items
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-a-list-of-items
get /items
Retrieve a paginated list of items for the authenticated workspace.
# Retrieve a list of locations
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-a-list-of-locations
get /locations
Retrieve a paginated list of locations for the authenticated workspace.
# Retrieve a list of tags
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-a-list-of-tags
get /tags
Retrieve a list of tags for the authenticated workspace.
# Retrieve a list of workspaces
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-a-list-of-workspaces
get /workspaces
Retrieve a list of workspaces for the authenticated user.
# Retrieve a location
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-a-location
get /locations/{id}
Retrieve a single location by ID.
# Retrieve a transfer
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-a-transfer
get /inventory/transfers/{id}
Retrieve a single transfer order by ID, including line items, locations, and related movements. Requires `transfers.read` scope.
# Retrieve a workspace
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-a-workspace
get /workspaces/{idOrSlug}
Retrieve a workspace for the authenticated user.
# Retrieve an item
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-an-item
get /items/info
Retrieve the info for an item.
You can retrieve an item by providing the `itemId` as a query parameter:
# Retrieve the number of items
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-number-of-items
get /items/count
Retrieve the number of items for the authenticated workspace. The provided query parameters allow filtering the returned items.
# Retrieve the number of locations
Source: https://docs.antsfield.com/api-reference/endpoint/retrieve-number-of-locations
get /locations/count
Retrieve the number of locations for the authenticated workspace. Query parameters filter the count. Requires `locations.read` scope.
# Revert a transfer
Source: https://docs.antsfield.com/api-reference/endpoint/revert-a-transfer
post /inventory/transfers/{id}/revert
Undo a completed transfer and restore prior stock levels. Only workspace owners can revert. Requires `transfers.write` scope.
# Set on-hand stock
Source: https://docs.antsfield.com/api-reference/endpoint/set-on-hand-stock
put /inventory/balances
Set the absolute on-hand quantity for an item at a location. Creates an opening or adjustment movement in the ledger. Requires `inventory.write` scope.
# Update a location
Source: https://docs.antsfield.com/api-reference/endpoint/update-a-location
patch /locations/{id}
Update a location's name, type, note, or active status. Requires `locations.write` scope.
# Update an item
Source: https://docs.antsfield.com/api-reference/endpoint/update-an-item
patch /items/{itemId}
Update an item for the authenticated workspace. If there's no change, returns it as it is.
# Errors
Source: https://docs.antsfield.com/api-reference/errors
Troubleshoot problems with this comprehensive breakdown of all error codes.
Antsfield API returns machine readable error codes, human readable error messages and a link to the docs for more information.
Here is how an error response looks like:
```json theme={null}
{
"error": {
"code": "not_found",
"message": "The requested resource was not found.",
"doc_url": "https://docs.antsfield.com/api-reference/errors#not-found"
}
}
```
## Error Codes
Here is a list of all error codes Antsfield API returns:
### `bad_request`
* **Status:** 400
* **Problem:** The request is malformed, either missing required fields, using wrong datatypes, or being syntactically incorrect.
* **Solution:** Check the request and make sure it is properly formatted.
### `unauthorized`
* **Status:** 401
* **Problem:** The request has not been applied because it lacks valid authentication credentials for the target resource.
* **Solution:** Make sure you are using the correct API key or access token.
### `forbidden`
* **Status:** 403
* **Problem:** The server understood the request, but refuses to fulfill it — insufficient API scope, workspace role, location access, or plan.
* **Solution:** Verify your API key scopes, user role, and workspace plan. Use a key with the required scope (e.g. `inventory.write`).
### `exceeded_limit`
* **Status:** 403
* **Problem:** The workspace hit a plan limit (items, transfers, locations, tags, or users).
* **Solution:** Upgrade the workspace plan or reduce usage before retrying.
### `invite_pending`
* **Status:** 409
* **Problem:** The authenticated user has a pending workspace invite but has not accepted it yet.
* **Solution:** Accept the workspace invite in the dashboard, then retry.
### `not_found`
* **Status:** 404
* **Problem:** The server has not found anything matching the request URI.
* **Solution:** Check the request and make sure the resource exists.
### `conflict`
* **Status:** 409
* **Problem:** Another resource already uses the same identifier. For example, workspace slug must be unique.
* **Solution:** Change the identifier to a unique value.
### `invite_expired`
* **Status:** 410
* **Problem:** The invite has expired.
* **Solution:** Generate a new invite.
### `unprocessable_entity`
* **Status:** 422
* **Problem:** The server was unable to process the request because it contains invalid data.
* **Solution:** Check the request and make sure input data is valid.
### `rate_limit_exceeded`
* **Status:** 429
* **Problem:** The request has been rate limited.
* **Solution:** Wait for a while and try again.
### `internal_server_error`
* **Status:** 500
* **Problem:** The server encountered an unexpected condition that prevented it from fulfilling the request.
* **Solution:** Try again later. If the problem persists, contact support.
# Introduction
Source: https://docs.antsfield.com/api-reference/introduction
Fundamental concepts of Antsfield's inventory API.
Antsfield's API is in beta. Questions or feedback:
[support@antsfield.com](mailto:support@antsfield.com?subject=Antsfield%20API%20Feedback).
Antsfield exposes a REST API for managing workspace inventory: items, tags, locations, on-hand stock, transfers, and workspace metadata.
API keys, scopes, and workspace ID
Safe integration practices
## Base URL
```bash theme={null}
https://api.antsfield.com
```
HTTPS is required. HTTP requests are not supported.
## Quick example
```bash theme={null}
curl -s "https://api.antsfield.com/items?workspaceId=YOUR_WORKSPACE_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
```
## Authentication
Pass your API key as a Bearer token:
```bash theme={null}
Authorization: Bearer YOUR_API_KEY
```
See [Authentication](/api-reference/authentication) for full-access vs restricted (`retrac_`) keys and scope details.
## Workspace ID
Most endpoints require `workspaceId` as a query parameter (full-access keys only):
```bash theme={null}
https://api.antsfield.com/items?workspaceId=YOUR_WORKSPACE_ID
```
Find it under **Settings → General** in the dashboard.
## API surface
| Resource | Endpoints | Description |
| - | - | - |
| **Items** | `/items`, `/items/bulk`, `/items/count` | Product catalog CRUD |
| **Tags** | `/tags` | Organize items |
| **Locations** | `/locations`, `/locations/count` | Warehouses, vans, sites |
| **Inventory** | `/inventory/balances`, `/inventory/movements` | Stock levels and ledger |
| **Transfers** | `/inventory/transfers` | Move stock between locations |
| **Workspaces** | `/workspaces` | Workspace metadata |
OpenAPI spec: `https://api.antsfield.com`
## Response codes
| Code | Meaning |
| - | - |
| `200` | Success |
| `201` | Created |
| `400` | Bad request |
| `401` | Invalid or missing API key |
| `403` | Forbidden (scope, role, or plan) |
| `404` | Resource not found |
| `409` | Conflict (duplicate slug, name, etc.) |
| `429` | Rate limit exceeded |
| `500` | Server error |
See [Errors](/api-reference/errors) for machine-readable error codes.
## Versioning
The API is currently at version `0.0.1`. Breaking changes will be minimized during beta; monitor this documentation for updates.
# Rate limits
Source: https://docs.antsfield.com/api-reference/rate-limits
API rate limits per key and how to handle throttling.
Antsfield rate limits API requests **per API key** to ensure fair usage.
## Default limit
| | Value |
| - | - |
| **Window** | 1 minute (rolling) |
| **Default cap** | 600 requests per minute per key |
Restricted keys may have a custom limit set at creation time in the dashboard.
## Response headers
| Header | Description |
| - | - |
| `X-RateLimit-Limit` | Maximum requests allowed in the current window |
| `X-RateLimit-Remaining` | Requests remaining in the window |
| `X-RateLimit-Reset` | Unix timestamp (seconds) when the window resets |
| `Retry-After` | Seconds to wait before retrying after a `429` |
## When limited
You receive HTTP `429` with error code `rate_limit_exceeded`:
```json theme={null}
{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests.",
"doc_url": "https://docs.antsfield.com/api-reference/errors#rate-limit-exceeded"
}
}
```
## Best practices
* Cache read responses where appropriate (item lists, location metadata).
* Use exponential backoff when retrying after `429`.
* Respect the `Retry-After` header rather than hammering the API.
* Split high-volume sync jobs across time or use bulk endpoints (`POST /items/bulk` accepts up to 100 items per request).
## Workspace usage limits
Separate from request rate limits, workspaces have **plan limits** on total items, transfers per billing cycle, and locations. Exceeding those returns `403` with code `exceeded_limit`, not `429`.
# Security
Source: https://docs.antsfield.com/api-reference/security
How Antsfield secures the API and how to integrate safely.
## Transport and storage
* All API traffic must use **TLS** (`https://api.antsfield.com`).
* Store API keys in environment variables or a secrets manager — never in frontend bundles, mobile apps, or public config files.
* **Rotate keys** immediately if a key may have been exposed. Delete the old key after deploying the new one.
## Least privilege
* Prefer **restricted keys** (`retrac_` prefix) over full-access keys.
* Grant only the scopes your integration needs. A read-only reporting job should use `apis.read`, not `apis.all`.
* Use separate keys per environment (staging vs production) and per integration.
## Workspace isolation
* Every request is scoped to a **single workspace**. Keys cannot access workspaces the creating user does not belong to.
* Responses contain only data for the authenticated workspace. Cross-tenant access is not supported by design.
## Location access
Members with **location restrictions** only see and modify inventory for assigned locations — including via API keys created by that member. Owners always have full workspace access.
## Rate limiting
API keys are rate limited per key. See [Rate limits](/api-reference/rate-limits). Honor `429` responses and the `Retry-After` header.
## What the public API does not expose
The documented API surface intentionally excludes:
* Admin, cron, billing, and webhook callback routes
* User session, password, and OAuth endpoints
* SAML/SCIM provisioning endpoints (configured in the dashboard, not via public REST)
* Internal AI, support, and feedback endpoints
Do not rely on undocumented routes — they may change without notice and are not subject to versioning guarantees.
## Error responses
Errors return JSON with a machine-readable `code` and **no stack traces** or internal paths. See [Errors](/api-reference/errors).
## Reporting issues
If you discover a security concern, email [support@antsfield.com](mailto:support@antsfield.com?subject=Security%20report) with reproduction steps. Do not disclose publicly before we respond.
# Account settings
Source: https://docs.antsfield.com/dashboard/account/introduction
Manage your personal profile, password, and security across all workspaces.
**Account settings** are personal to you — they apply across every workspace you belong to, not just one company inventory.
Open them from the user menu → **Account settings**, or go to [app.antsfield.com/account/settings](https://app.antsfield.com/account/settings).
## General
Update your **name** and **email** shown across Antsfield. Email changes may require verification depending on your sign-in method.
## Security
Under **Account settings → Security**:
* **Password** — set or change your password (for email sign-in)
* **Connected accounts** — manage OAuth providers linked to your login
If your organization uses SAML SSO for a workspace, you may still sign in with SSO while maintaining a separate account record.
## Workspaces vs account
| | Account | Workspace |
| - | - | - |
| **Scope** | You, everywhere | One company inventory |
| **Examples** | Name, email, password | Items, locations, billing |
| **Settings path** | Account settings | `/{slug}/settings` |
Deleting yourself from a workspace (removed by an owner) does not delete your Antsfield account. Deleting your account is separate — contact support if you need full account removal.
## Signing out
Use **Log out** from the user menu. Your last visited workspace is remembered locally for convenience on next sign-in.
## New users
After registration, new users land on the **welcome** screen to create their first workspace. If you were invited to an existing workspace, accept the invite first — you can skip creating your own workspace if you only need access to someone else's.
# API keys
Source: https://docs.antsfield.com/dashboard/api-keys/introduction
Create API keys to connect Antsfield with your tools, scripts, and integrations.
**API keys** let applications read and write inventory data on behalf of your workspace — useful for ERP connectors, custom dashboards, automated imports, and internal scripts.
Manage keys under **Settings → API Keys** (in the Developer section).
REST API access is available on **Business** plans and above. Free and Pro workspaces may see upgrade prompts when creating keys or calling the API.
## Create an API key
1. Go to **Settings → API Keys**.
2. Click **Create API key**.
3. Give the key a **name** you will recognize later (e.g. "NetSuite sync").
4. Choose the permission scope:
* **Full access** — read and write all supported resources
* **Restricted** — limit to specific capabilities (when offered in the UI)
5. Copy the key immediately — it is shown only once.
Store keys in a secrets manager or environment variables. Never commit them to source control or share them in chat.
## Use an API key
Include the key in the `Authorization` header of requests to the Antsfield API:
```
Authorization: Bearer YOUR_API_KEY
```
Also pass your **workspace ID** for operations that require it. Find the workspace ID under **Settings → General**.
Full reference: [API introduction](/api-reference/introduction), [Authentication](/api-reference/authentication), and [Security](/api-reference/security).
## Rotate or revoke keys
Delete a key from the API Keys page when:
* An employee with access leaves
* A key may have leaked
* You are decommissioning an integration
Create a new key before deleting the old one if the integration is still in production to avoid downtime.
## Rate limits
API usage is subject to per-plan rate limits. See [Rate limits](/api-reference/rate-limits) and monitor for `429` responses in your integration.
## What you can automate
Common API workflows:
* Sync items from an external product master
* Read on-hand balances for a fulfillment system
* Create tags or items from a nightly job
* Pull item counts for reporting
Start with [Create item](/api-reference/endpoint/create-a-new-item) and [List items](/api-reference/endpoint/retrieve-a-list-of-items). For inventory operations, see [List balances](/api-reference/endpoint/list-inventory-balances), [Set on-hand stock](/api-reference/endpoint/set-on-hand-stock), [Create transfer](/api-reference/endpoint/create-a-transfer), and [List movements](/api-reference/endpoint/list-inventory-movements).
## Build an integration
If you ship a product that connects to Antsfield, see [Integrations](/integrations) for how to get listed.
# Billing & plans
Source: https://docs.antsfield.com/dashboard/billing/introduction
Understand plans, usage limits, upgrades, and how billing works for your workspace.
Each **workspace** has its own subscription and usage meters. Billing is managed by workspace **owners** under **Settings → Billing**.
## Plans overview
| Plan | Best for | Highlights |
| - | - | - |
| **Free** | Trying Antsfield | 25 items, 20 transfers/mo, 2 locations, 1 user, 3 tags, movement ledger |
| **Pro** | Small field crews | 100 items, 150 transfers/mo, schedule & invoicing, 4 locations, 3 users |
| **Business** | Growing teams | 500 items, 600 transfers/mo, Google Reviews, custom permissions, 12 locations, 10 users |
| **Advanced** | High-volume ops | 2.5K items, 3K transfers/mo, 30 locations, 25 users |
| **Enterprise** | Custom needs | Custom limits, SSO/SAML, audit logs, custom SLA — [contact sales](mailto:support@antsfield.com) |
See current pricing at [antsfield.com/pricing](https://antsfield.com/pricing).
## What counts toward limits
### Total items (does not reset)
The number of items in your catalog. **Deleting items frees capacity.** Adding items via the UI, CSV import, bulk create, or API all count.
When you hit the limit, you cannot create new items. Existing items and stock are unaffected. The app shows: *"Your workspace has reached its items limit. Upgrade to add more."*
### Transfers per billing cycle (resets monthly)
Each completed transfer increments usage for the current billing period. **Reverted transfers** still count toward the limit for the cycle in which they were created — plan accordingly.
The billing page shows transfers used vs limit and the cycle end date.
### Locations, tags, and users
Hard caps per workspace. You cannot create more than your plan allows without upgrading.
### API requests
Rate limits apply per plan for programmatic access. See [API rate limits](/api-reference/rate-limits).
## Upgrade or change plan
1. Go to **Settings → Billing**.
2. Click **Upgrade** or **Change plan**.
3. Select monthly or yearly billing and confirm checkout via Stripe.
After payment, limits update immediately. A success state may show confetti in the billing UI.
## Manage subscription
Owners with an active paid subscription can open the **Stripe customer portal** from Billing to:
* Update payment method
* View invoices
* Cancel or change subscription
## Trials
Some workspaces may have a trial period shown on the billing page with a **trial end date**. When the trial ends, the workspace moves to the selected paid plan or free tier depending on your checkout choices.
## Usage sidebar
The sidebar shows a compact usage summary (items and transfers) with a link to upgrade when you are approaching limits.
## Who can manage billing
Only workspace **owners** see billing settings and can upgrade. Members should ask an owner if the workspace needs a higher plan.
## Enterprise & custom limits
For SSO, SCIM, audit requirements, or limits beyond Advanced, contact [support@antsfield.com](mailto:support@antsfield.com) for Enterprise pricing.
# CSV import & export
Source: https://docs.antsfield.com/dashboard/clients/import-export
Bulk import clients from a spreadsheet and export contacts with lifetime invoice stats.
Antsfield supports **CSV import** and **export** for clients on paid plans (Pro and above).
## Export clients
1. On **Invoicing → Clients**, open the **⋯** menu in the page toolbar.
2. Choose **Export clients**.
3. Select columns (contact fields plus invoice stats such as lifetime value).
4. Optionally apply the current table filters (search / has invoices).
5. Download the CSV.
Name format: `Antsfield Clients Export - {timestamp}.csv`
Exports are capped at 10,000 clients. Narrow filters if you hit the limit.
## Import clients from CSV
1. On **Invoicing → Clients**, open **⋯ → Import from CSV**.
2. **Select your file** — any standard CSV with a header row.
3. **Map columns** to Antsfield fields:
| Antsfield field | Required | Notes |
| - | - | - |
| Name | Yes | |
| Email | No | Used to detect duplicates (case-insensitive) |
| Secondary email | No | |
| Phone / Cellphone | No | |
| Billing address | No | |
| Service address | No | If blank or equal to billing, treated as same-as-billing |
| Note | No | Max 500 characters |
4. Confirm import and review the summary.
Import is **create-only**. Rows whose email already exists in the workspace (or earlier in the same file) are skipped. Rows without an email always create a new client.
Imports of more than 100 rows are processed in the background. You will receive an email when they complete.
### Import tips
* **Clean emails first** — remove duplicates you do not want skipped.
* **Blank email is allowed** — useful for walk-in contacts; each blank-email row creates a new client.
* Requires the **Import clients** member capability (Office template includes it by default).
# CSV import & export
Source: https://docs.antsfield.com/dashboard/items/import-export
Bulk import items from a spreadsheet and export your catalog with per-location stock for backups or reporting.
Antsfield supports **CSV import** and **export** on paid plans (Pro and above). Use these when onboarding a large catalog or sharing data with accounting and ops tools.
## Export items
1. On **Inventory**, open the **⋯** menu in the toolbar (top right).
2. Choose **Export items**.
3. Select one or more **locations** you can view.
4. Choose columns, date range, and whether to include zero-quantity rows.
5. Download the zip — each selected location is exported as its own CSV file inside the archive (for example `warehouse.csv`, `van-1.csv`).
Name format: `Antsfield Inventory Export - {timestamp}.zip`
Export before major changes or workspace deletion as a simple backup.
## Import items from CSV
1. On **Inventory**, select the **location** you want stock imported into.
2. Open the **⋯** menu → **Import from CSV**.
3. **Select your file** — any standard CSV with a header row.
4. **Map columns** to Antsfield fields:
| Antsfield field | Required | Notes |
| - | - | - |
| SKU | Yes | Must be unique within the workspace |
| Description | Yes | |
| Cost | Yes | Numeric |
| Supplier | No | Pro feature |
| Quantity | No | Opening on-hand quantity at the **current location**; defaults to `0` |
5. Confirm import and review the summary.
Imports of more than 100 rows are processed in the background. You will receive an email when they complete. Duplicate SKUs in the file or conflicts with existing workspace items are skipped and reported in the summary.
### Import tips
* **Clean SKUs first** — remove duplicates and blank rows in your spreadsheet.
* **Location matters** — quantities always apply to the location selected in the inventory header when you start the import.
* **Plan limits** — imports count toward your **total items** limit. Upgrade if you are importing more than your plan allows.
## Bulk create (without CSV)
For up to 100 items at once without a file, use the [Bulk create items API](/api-reference/endpoint/bulk-create-items). Requires a workspace API key on Business plans and above.
# Items
Source: https://docs.antsfield.com/dashboard/items/introduction
Create, search, filter, and manage the products in your inventory catalog.
**Items** are the products or SKUs you track. Each item has catalog details (code, description, cost, supplier, tags) and **on-hand quantities** at each location — managed separately via stock adjustments and transfers.
## View inventory
Open **Inventory** in the sidebar. The page shows all items for your workspace, with quantities for the **currently selected location** shown in the dropdown at the top.
### Switch location
Use the location dropdown in the page header to filter the list to one location's on-hand counts. This does not hide items from your catalog — it changes which location's quantity you see.
### Search and filter
* **Search** — matches item code (SKU) and description.
* **Tags** — filter by one or more tags. If you have no tags yet, the filter offers a shortcut to create one.
* **Sort** — order by date created, SKU, description, or quantity.
### Display modes
Toggle between **table** and **grid** views using the display control in the toolbar.
## Add an item
1. Click **Add item** (keyboard shortcut: `C`).
2. Enter required fields:
* **Item code** — your SKU or unique product code
* **Description** — name or short description
* **Cost** — unit cost (used for reporting)
3. Optionally add:
* **Supplier**
* **Tags**
* **Opening quantity** — initial stock at the location selected in the inventory header
4. Click **Create item**.
If no location is selected when you create an item, opening quantity is skipped. Use **Adjust stock** afterward to set quantities.
## Edit an item
Open the item's **⋯** menu and choose **Edit**. You can update SKU, description, cost, supplier, and tags. Changing catalog fields does not change stock — use **Adjust stock** or **Transfers** for quantities.
## Duplicate an item
From the **⋯** menu, choose **Duplicate** to create a copy with the same details. Useful for variants that share most attributes. Stock is not copied; set quantities separately.
## Delete items
* **Single item** — **⋯** menu → **Delete**
* **Multiple items** — enter selection mode, select items, then delete
Deleting an item removes it from your catalog and its balances. This cannot be undone.
## Item actions menu
| Action | What it does |
| - | - |
| **Edit** | Update catalog fields and tags |
| **Duplicate** | Create a copy of the item |
| **Adjust stock** | Set on-hand quantity at a location |
| **Locations** | See stock levels across all locations |
| **Delete** | Remove the item |
## Plan limits
Your workspace has a **total items** limit based on your plan. This is a cumulative cap — it does not reset each month. When you reach the limit, you cannot add new items until you upgrade or delete existing ones. Existing items and stock are unaffected.
See [Billing & plans](/dashboard/billing/introduction).
## Related guides
Adjust quantities and view stock by location
Bulk load or download your catalog
# Managing stock
Source: https://docs.antsfield.com/dashboard/items/managing-stock
Receive deliveries, set opening balances, adjust on-hand quantities, and view stock across locations.
Stock in Antsfield is always tracked **per item, per location**. Catalog fields (SKU, description, cost) live on the item; quantities live in **inventory balances** that update through adjustments and transfers.
## Opening stock
When you **create a new item**, you can enter an **Opening quantity** in the add-item modal. Antsfield records this as an `opening` movement at the location selected in the inventory header.
If you skip opening quantity, the item starts at **zero** at every location until you adjust stock.
## Receive stock
Use **Receive** when a delivery arrives and you want to add quantities to many items at once. Each line is a quantity **added** to the current on-hand count at one location. It does not replace the count.
1. On **Inventory**, choose the location in the header.
2. Choose **Receive** (next to **Add item** on desktop, or in the bottom bar on a phone). You can also select items first and choose **Receive**, or open **⋯ → Import items → Receive stock**.
3. Search for catalog items, paste a SKU and quantity list, or add a **New item** if the SKU is not in the catalog yet.
4. Enter **Qty received** for each line. The row shows the current on-hand and the count after this delivery.
5. Optionally add a supplier, a note (such as a PO number), and — if you can edit cost — update the item cost.
6. Choose **Receive N units**.
Antsfield posts one receipt (`RCP_…`) and a `receipt` movement per line. You need permission to **adjust stock** at that location. Creating a new SKU in the same receipt also requires permission to **create items**. Drivers can receive known items. Warehouse members can receive and add new items. Receipts are available on every plan; new SKUs still count toward your item limit. Lists larger than 100 lines belong in [CSV import](/dashboard/items/import-export).
Voiding a receipt removes the quantities it added. Void fails if any line no longer has enough on-hand because that stock was already issued or transferred.
## Adjust stock
Use adjustments when you know the absolute count — after a stocktake, or to correct a mistake.
1. On **Inventory**, open the item's **⋯** menu.
2. Choose **Adjust stock**.
3. Select the **location**.
4. Enter the new **on-hand quantity** (not a delta — the total count you want at that location).
5. Optionally add a **note** (e.g. "Annual stocktake").
6. Save.
Antsfield writes an adjustment movement to the ledger and updates the balance immediately.
Receive stock when a delivery adds units. Adjust stock when you know the absolute count. Use **Transfers** when stock moves from one location to another.
## View stock across locations
From the item **⋯** menu, choose **Locations** to see on-hand quantity at every location in one view. This is helpful when deciding where to transfer from or when reconciling totals.
## How stock changes
| Action | Effect on balances | Recorded in movements |
| - | - | - |
| Opening quantity on create | Sets quantity at one location | `opening` |
| Receive stock | Adds quantity at one location | `receipt` |
| Adjust stock | Sets quantity at one location | `adjustment_plus` or `adjustment_minus` |
| Transfer | Decreases source, increases destination | `transfer_out` + `transfer_in` |
| Revert transfer (owner) | Restores pre-transfer quantities | `transfer_revert_out` + `transfer_revert_in` |
View the full history under **Inventory → Movements**.
## Location-scoped access
If you are a **member** with restricted location access, you only see and edit stock at locations assigned to you. Owners always have full access. See [Team & members](/dashboard/team/introduction).
## Common scenarios
### A delivery arrives at the warehouse
1. Select the warehouse in the location dropdown.
2. Choose **Receive**.
3. Add each item and the quantity on the packing list. If a SKU is new, add it as a **New item** in the same receipt.
4. Save. The activity ledger shows a **Received** row and the receipt number (`RCP_…`) for each line.
CSV import still creates new items only. It skips SKUs that already exist, so it is the path for a spreadsheet migration, not for receiving a delivery of known products.
### Stocktake found a discrepancy
1. Select the location you counted.
2. For each item, **Adjust stock** to the counted on-hand quantity.
### Moving stock to another site
Do **not** only adjust both locations manually — use a **Transfer** so the ledger shows the movement between sites. See [Transfers](/dashboard/transfers/introduction).
# Locations
Source: https://docs.antsfield.com/dashboard/locations/introduction
Create and manage warehouses, vans, sites, and other places where you hold stock.
**Locations** are where your inventory physically (or logically) lives. Every on-hand quantity is tied to an item **and** a location. Transfers move stock **between** locations.
## Location types
When creating a location, choose a type that fits how you operate:
| Type | Typical use |
| - | - |
| **Warehouse** | Main storage, distribution center |
| **Van** | Mobile sales or service vehicle |
| **Truck** | Larger mobile unit or freight |
| **Site** | Job site, retail floor, pop-up |
| **Other** | Anything that does not fit above |
The type is for organization and display — it does not change how stock math works.
## Create a location
1. Open **Locations** in the sidebar.
2. Click **Add location**.
3. Enter a **name** (unique within the workspace).
4. Choose a **type** and optional **note**.
5. Save.
Your plan caps how many locations you can have. The first location created with your workspace is **Inventory** — often used as the default receiving location.
## Default location
Workspace owners set the **default location** under **Settings → General**. This location is pre-selected when you add items with opening stock from the inventory page.
## View location inventory
Click a location card to open inventory filtered to that location. The card also shows how many distinct items have stock there.
## Edit or delete a location
From a location card's **⋯** menu:
* **Edit** — change name, type, or note
* **Delete** — remove the location
You cannot delete a location that still has stock balances. Transfer or adjust stock to zero at that location first, or move items elsewhere.
Only **owners** and members with unrestricted access can edit or delete locations.
## Location access for team members
When inviting teammates, you can restrict which locations each **member** can view or edit. Owners always see everything. See [Team & members](/dashboard/team/introduction).
## Working with multiple locations
A typical setup:
1. **Warehouse** — bulk storage
2. **Retail store** — floor stock
3. **Service van** — technician parts
Use **Transfers** to move stock between them as goods ship, replenish, or return. Use the location dropdown on **Inventory** to check counts at each place without leaving the page.
# Movements
Source: https://docs.antsfield.com/dashboard/movements/introduction
Read the audit trail of every stock change in your workspace.
The **Movements** ledger is a read-only history of every quantity change in your workspace. It is your source of truth for audits, reconciliation, and answering "what happened to this SKU?"
Open it from **Inventory → Movements** in the sidebar.
## What appears in the ledger
Every time stock changes, Antsfield appends a movement record. Common types you will see:
| Badge | Meaning |
| - | - |
| **Opening** | Initial or set on-hand quantity |
| **Transfer out** | Stock left a location via transfer |
| **Transfer in** | Stock arrived at a location via transfer |
| **Revert out / in** | Stock restored after a transfer was reverted |
| **Adjustment + / −** | Manual quantity correction |
Each row typically shows the item, movement type, quantity, locations involved, optional note, who performed the action, and timestamp.
## When to use movements
* **End-of-day review** — confirm transfers and adjustments match what happened on the floor
* **Dispute resolution** — trace when quantity changed for a specific item
* **Audit prep** — export or review chronological stock activity (pair with item-level location view for current balances)
## What movements are not
* **Not editable** — you cannot change or delete ledger entries. Correct mistakes with a new adjustment or transfer revert.
* **Not a inventory view** — for current on-hand counts, use **Inventory** or an item's **Locations** panel.
* **Not billing events** — transfer limits are counted separately on your plan usage meter.
## Pagination
Movements are listed newest first, 50 per page. Use pagination controls at the bottom to go further back in history.
## Tips for business owners
* Review movements after busy transfer days to catch data-entry mistakes early.
* Pair with **Transfers → Revert** (owners only) when a transfer was wrong but stock has not moved again.
* Use item **Locations** for current totals; use **Movements** for the story of how you got there.
# Security
Source: https://docs.antsfield.com/dashboard/security/introduction
Configure SAML SSO and SCIM provisioning for enterprise teams.
Workspace **owners** manage security under **Settings → Security**. These features are designed for organizations that centralize authentication in an identity provider (IdP).
## SAML Single Sign-On (SSO)
SAML SSO lets your team sign in to Antsfield with your corporate identity provider — Okta, Google Workspace, Azure AD, and others supported in the setup wizard.
### Set up SAML
1. Go to **Settings → Security**.
2. Under **SAML Single Sign-On**, click to configure.
3. Choose your identity provider from the list.
4. Follow the in-app steps to exchange metadata and ACS URLs with your IdP.
5. Test login with a user assigned to the Antsfield application in your IdP.
Once configured, team members can use **Sign in with SAML** from the login page (or enforce SSO-only access per your IdP policy).
### Remove SAML
Owners can disconnect SAML from the Security page menu. Existing password-based users retain their accounts; coordinate with your IT team before removing production SSO.
SAML is included on **Enterprise** plans. Lower plans may see upgrade prompts when accessing SSO configuration.
## SCIM provisioning
SCIM automatically creates, updates, and deprovisions users in Antsfield based on your IdP directory — reducing manual invite management for large teams.
### Set up SCIM
1. Go to **Settings → Security**.
2. Under **SCIM**, generate or configure your SCIM endpoint and bearer token.
3. In your IdP, enable SCIM provisioning for Antsfield using the provided URL and credentials.
4. Map attributes (email, name) per IdP documentation.
5. Assign users or groups in the IdP to provision access.
### Remove SCIM
Disconnect SCIM from the Security page when rotating credentials or decommissioning automated provisioning. Review active members afterward.
## Best practices
* **Test in a staging IdP app** before enforcing SSO on production users
* **Keep at least one break-glass owner account** with a non-SSO recovery path if your IdP is unavailable
* **Pair SCIM with location access** — provision users into Antsfield, then let owners assign location permissions in **Settings → Members**
* **Rotate SCIM tokens** if credentials may have been exposed
## Personal account security
SAML and SCIM are workspace-level. For your own password, two-factor settings, and connected accounts, see [Account settings](/dashboard/account/introduction).
# Tags
Source: https://docs.antsfield.com/dashboard/tags/introduction
Organize items with colored tags and filter your inventory faster.
**Tags** are colored labels you attach to items — useful for categories, product lines, seasons, suppliers, or any grouping that helps your team find stock quickly.
## Create a tag
1. Open **Inventory → Tags** in the sidebar (under **Library**).
2. Click **Add tag**.
3. Enter a **name** and pick a **color**.
4. Save.
Your plan limits how many tags you can create per workspace. See [Billing & plans](/dashboard/billing/introduction).
## Assign tags to items
When creating or editing an item, use the **Tags** section in the add/edit modal to search and attach one or more tags.
You can also manage tags while editing an item from the inventory list.
## Filter inventory by tag
On the **Inventory** page:
1. Open the **Filter** control.
2. Select one or more tags.
3. The list shows only items matching your selection.
Combine tag filters with search and location selection for precise views — e.g. all "Summer" tagged products at the "Warehouse" location.
## Edit or delete tags
From **Inventory → Tags**, open a tag card's menu to rename, recolor, or delete.
Deleting a tag removes it from all items that used it. Items themselves are not deleted.
## Best practices
* **Keep names short** — "Apparel", "Q4 Promo", "Discontinued"
* **Use color consistently** — e.g. red for urgent/low-stock categories, blue for raw materials
* **Avoid tag sprawl** — 10–20 well-defined tags beat hundreds of one-off labels
# Team & members
Source: https://docs.antsfield.com/dashboard/team/introduction
Invite teammates, assign roles, and control who can see which locations.
Antsfield is built for teams. Everyone on a workspace shares the same item catalog, but you control **who** can join and **what** they can do.
Manage your team under **Settings → Members**.
## Roles
| Role | Capabilities |
| - | - |
| **Owner** | Full access: settings, billing, invites, API keys, security, revert transfers, delete workspace |
| **Member** | Day-to-day inventory work; cannot manage billing or workspace deletion |
All plans support owner and member roles. You need at least one owner per workspace.
## Invite by email
1. Go to **Settings → Members**.
2. Click **Invite member**.
3. Enter email address(es).
4. Choose **Owner** or **Member**.
5. Optionally configure **Location access** (see below).
6. Send the invite.
Invitees receive an email with a link to join. Pending invites appear in the members table with status **Invited**.
## Invite link
For faster onboarding, generate a reusable **invite link** from the Members page. Anyone with the link can join the workspace (subject to your plan's user limit). Revoke or rotate links from the same screen when needed.
## Accepting an invite
Recipients click the email link or visit the invite URL while signed in (or create an account first). They are added to the workspace with the role and location access defined in the invite.
## Location access
Restrict **members** to specific locations when they should not see the whole business — e.g. a store manager who only manages floor stock.
For each location, set permission to:
| Permission | Effect |
| - | - |
| **None** | Cannot see or edit stock at this location |
| **View** | Can see inventory and transfers involving this location |
| **Edit** | Can adjust stock and create transfers at this location |
Leave all locations on **Edit** for full workspace access (typical for trusted ops staff).
**Owners** always have unrestricted access regardless of location assignments.
To update a member's locations after they join, use the member row menu → edit location access.
## Remove a member
Owners can remove active members or cancel pending invites from the Members table menu. Removed users lose access immediately but their account remains — they can still access other workspaces they belong to.
## User limits
Each plan allows a maximum number of users per workspace (including pending invites). Upgrade under **Settings → Billing** if you need more seats.
## Account vs workspace settings
* **Workspace members** — who can access *this* inventory (Settings → Members)
* **Your personal account** — email, password, and security across all workspaces ([Account settings](/dashboard/account/introduction))
# Transfers
Source: https://docs.antsfield.com/dashboard/transfers/introduction
Move stock between locations instantly and keep a clear record of every movement.
A **transfer** moves quantity of one or more items from a **source location** to a **destination location**. In Antsfield, transfers execute **immediately** — there is no separate "ship" or "receive" step. Stock updates the moment you submit the transfer.
## When to use transfers
* Restocking a retail store from the warehouse
* Loading a service van before a route
* Moving returned goods back to main inventory
* Any internal stock movement between your own locations
For count corrections (stocktake adjustments), use **Adjust stock** instead. For receiving from external suppliers, adjust stock at the receiving location with an appropriate note.
## Create a transfer
1. Open **Transfers** in the sidebar.
2. Click **Create transfer**.
3. Select **From** (source) and **To** (destination). They must be different locations.
4. Add **line items**:
* Choose an item (only items with stock at the source are listed once a source is selected)
* Enter **quantity** — cannot exceed available stock at the source
* Optional per-line **note**
5. Add an optional transfer-level **note**.
6. Submit.
Stock is deducted from the source and added to the destination. The transfer appears in your history with status **completed**.
## Transfer limits
Each workspace has a **transfers per billing cycle** limit based on your plan. The sidebar usage widget and **Settings → Billing** show how many transfers you have used this cycle. Limits reset at the start of each billing period.
## Search transfer history
Use the search box on the Transfers page to find past transfers by note or item details.
## Revert a transfer
**Workspace owners** can undo a completed transfer if it was entered in error:
1. Find the transfer in the list.
2. Click **Revert**.
3. Optionally add a **revert note**.
4. Confirm.
Reverting restores stock to pre-transfer levels and marks the transfer as **reverted**. Reversal movements appear in **Movements**.
Only revert when the physical stock still matches what the ledger should show after reversal. If goods were already consumed or moved again, adjust stock manually instead.
Members cannot revert transfers — contact a workspace owner if a correction is needed.
## Location access
Members with restricted location access can only create and view transfers that involve locations they are allowed to see. If you cannot select a location in the transfer form, ask an owner to update your [location permissions](/dashboard/team/introduction).
## What gets recorded
Each transfer creates:
* A **transfer order** with from/to locations, lines, timestamps, and who created it
* **Movement** entries (`transfer_out` at source, `transfer_in` at destination)
Review the ledger under **Inventory → Movements**.
# Workspaces
Source: https://docs.antsfield.com/dashboard/workspaces/introduction
Create, switch, and configure the workspace that holds your inventory and team.
A **workspace** is your company's home in Antsfield — one catalog, one set of locations, one billing plan, and one team. Think of it like a Slack workspace: separate from other organizations you might join.
## Create a workspace
1. After signing up, click **Create workspace** on the welcome screen.
2. Enter a **workspace name** (shown in the sidebar and switcher).
3. Choose a **slug** — the URL-friendly identifier (e.g. `acme-supply` → `app.antsfield.com/acme-supply/inventory`).
4. Confirm to create the workspace.
Antsfield creates a default location named **Inventory** and sets it as your default location for new stock entries.
You can create additional workspaces anytime from the workspace switcher in the sidebar.
## Switch between workspaces
Click the workspace name at the top of the sidebar to open the switcher. Select another workspace or create a new one. Your last visited workspace is remembered when you return to the app.
## Workspace settings
Open **Settings → General** from the sidebar (gear icon when inside a workspace).
| Setting | Who can edit | Notes |
| - | - | - |
| **Workspace name** | Owners | Max 32 characters |
| **Workspace slug** | Owners | Lowercase letters, numbers, and dashes only; max 48 characters. Changing the slug updates your dashboard URL. |
| **Logo** | Owners | Optional branding shown in the workspace switcher |
| **Default location** | Owners | Where opening stock is placed when you add items from inventory |
| **Delete workspace** | Owners | Permanent — removes all items, locations, transfers, and members |
Deleting a workspace cannot be undone. Export your items first if you need a backup.
## Workspace ID (for integrations)
If you connect Antsfield to other tools via the API, you need your workspace ID:
1. Go to **Settings → General**.
2. Copy the workspace ID shown on that page.
Use this ID in API requests alongside your API key. See [API keys](/dashboard/api-keys/introduction).
## Multiple workspaces per account
One person can belong to many workspaces — useful if you run separate businesses or manage inventory for clients. Each workspace has its own plan, usage, and members. Billing is per workspace, not per user account.
# Data model
Source: https://docs.antsfield.com/data-model
How workspaces, items, locations, balances, transfers, and movements relate to each other.
Whether you use the dashboard or the [API](/api-reference/introduction), this page explains how Antsfield structures your data.
## Overview
```mermaid theme={null}
flowchart TB
WS[Workspace] --> Items[Items]
WS --> Tags[Tags]
WS --> Loc[Locations]
Items --> Bal[Inventory balances]
Loc --> Bal
Bal --> Mov[Movements ledger]
WS --> Trf[Transfers]
Trf --> Mov
```
Everything belongs to a **workspace**. Within a workspace you define **items** (your product catalog), **locations** (where stock lives), and **tags** (optional organization). **Inventory balances** store the current on-hand quantity for each item at each location. Every change to stock creates an **inventory movement** — an append-only audit record.
## Workspaces
A workspace is your company's inventory environment: one catalog, one team, one billing plan, and one set of usage limits.
* Each person can belong to multiple workspaces (e.g. separate businesses or departments).
* The workspace **slug** appears in your dashboard URL: `app.antsfield.com/{slug}/inventory`.
* Find the workspace **ID** under **Settings → General** when using the API.
The unique ID of the workspace.
The name of the workspace.
The slug of the workspace.
The logo of the workspace.
The transfers usage of the workspace.
The usage limit of the workspace.
The items usage of the workspace.
The items limit of the workspace.
The suppliers usage of the workspace.
The suppliers limit of the workspace.
The storage units limit of the workspace.
The tags limit of the workspace.
The users limit of the workspace.
The plan of the workspace.
The Stripe ID of the workspace.
The date and time when the billing cycle starts for the workspace.
The date and time when the workspace was created.
The role of the authenticated user in the workspace.
The role of the authenticated user in the workspace.
## Items
An item is a product or SKU in your catalog. Items are **not** tied to a single quantity — stock is tracked per location via balances.
| Field | Purpose |
| - | - |
| **Item code (SKU)** | Unique identifier within the workspace |
| **Description** | Human-readable name or details |
| **Cost** | Unit cost for reporting |
| **Supplier** | Optional vendor reference |
| **Tags** | Optional colored labels for filtering |
The unique ID of the item.
The code/SKU of the item.
The description of the item.
The quantity of the item.
The cost of the item.
The unique ID of the tag assigned to the item. This field is deprecated
– use `tags` instead.
The tags assigned to the item.
The unique ID of the tag.
The name of the tag.
The color of the tag.
The user ID of the creator of the item.
The workspace ID of the item.
The date and time when the item was created.
The date and time when the item was last updated.
The project ID of the item. This field is deprecated – use `workspaceId`
instead.
## Locations
Locations represent physical or logical places where stock is held:
* **Warehouse** — main storage
* **Van / Truck** — mobile stock
* **Site** — job site or retail floor
* **Other** — anything else
Each workspace has a **default location** (created automatically as "Inventory"). New items can receive opening stock at the location you have selected on the inventory page.
## Inventory balances
The balance for an item at a location is the **on-hand quantity** right now. Balances change when you:
* Set opening stock or **adjust stock**
* Complete a **transfer** (out from source, in at destination)
* **Revert** a transfer (owner only)
Balances are always derived from the movement ledger — you cannot edit history, only add new movements.
## Transfers
A transfer moves quantity from one location to another. In Antsfield, transfers are **instant**: when you create a transfer, stock moves immediately and the transfer is marked **completed**.
* A transfer has one source and one destination location.
* It can include multiple line items, each with its own quantity.
* **Workspace owners** can revert a completed transfer, which restores stock and writes reversal movements.
## Movements (audit ledger)
Every stock change creates a movement record. Movement types include:
| Type | Meaning |
| - | - |
| `opening` | Initial or adjusted on-hand quantity set |
| `transfer_out` / `transfer_in` | Stock leaving or arriving via a transfer |
| `transfer_revert_out` / `transfer_revert_in` | Stock restored after a reverted transfer |
| `adjustment_plus` / `adjustment_minus` | Manual quantity corrections |
| `receipt` / `issue` / `return` | Reserved for future flows |
View movements under **Inventory → Movements**. They are read-only.
## Tags
Tags are workspace-scoped labels with a name and color. Assign one or more tags to an item to filter the inventory list.
The unique ID of the tag.
The name of the tag.
The color of the tag.
## Usage limits
Plans enforce limits on:
* **Total items** — cumulative count; does not reset monthly
* **Transfers** — counted per billing cycle
* **Locations, tags, and users** — workspace caps
See [Billing & plans](/dashboard/billing/introduction) for current limits per plan.
# Advanced plan
Source: https://docs.antsfield.com/help/article/advanced-plan
Antsfield Advanced plan limits and features for larger operations.
The **Advanced** plan is for larger operations that need high item and transfer limits, many locations, a larger team, and priority support.
## Advanced plan highlights
| Feature | Advanced |
| - | - |
| **Total items** | 10,000+ (cumulative — does not reset monthly) |
| **Transfers per billing cycle** | 50,000 (resets each billing period) |
| **Locations** | 30 |
| **Tags** | 300 |
| **Suppliers** | 150 |
| **Team members** | 50 |
| **Invoicing, estimates & clients** | Yes |
| **Location permissions** | Yes |
| **CSV import & export** | Yes |
| **API access** | Yes |
| **Movement ledger** | Yes |
| **Support** | Priority Slack support |
Higher tiers within Advanced add even more items and transfers. See current pricing at [antsfield.com/pricing](https://antsfield.com/pricing).
## When to choose Advanced
Consider Advanced when:
* Your catalog exceeds Business item limits
* You run high transfer volume across many locations
* You need a larger team with location-level permissions
* You want priority support for production inventory operations
## Enterprise and SSO
For SAML SSO, SCIM provisioning, audit requirements, or limits beyond Advanced, contact [support@antsfield.com](mailto:support@antsfield.com) for **Enterprise** pricing.
Enterprise authentication guides
Full plan comparison
## Upgrade to Advanced
1. Go to **Settings → Billing** (owners only).
2. Click **Upgrade** or **Change plan**.
3. Select Advanced, choose monthly or yearly billing, and confirm checkout via Stripe.
# Azure AD SAML SSO
Source: https://docs.antsfield.com/help/article/azure-saml
Configure SAML single sign-on between Microsoft Entra ID (Azure AD) and Antsfield.
This guide walks workspace **owners** through connecting **Microsoft Entra ID** (formerly Azure AD) as a SAML identity provider for Antsfield. SAML SSO is available on **Enterprise** plans.
Test in a staging Entra enterprise app before enforcing SSO on production users. Keep at least one break-glass owner account with a non-SSO recovery path.
## Prerequisites
* Microsoft Entra ID admin access
* Antsfield workspace owner role
* Enterprise plan with SAML enabled
## Set up Azure AD SAML
In Antsfield, go to **Settings → Security** and click to configure **SAML Single Sign-On**. Select **Microsoft Entra ID (Azure AD)** as your identity provider.
In the [Microsoft Entra admin center](https://entra.microsoft.com), go to **Identity → Applications → Enterprise applications → New application**.
Choose **Create your own application**, name it **Antsfield**, and select **Integrate any other application you don't find in the gallery (Non-gallery)**.
Open the Antsfield enterprise app → **Single sign-on** → **SAML**.
From the Antsfield SAML setup modal, copy the **ACS URL** and **Entity ID**. Enter them in Entra:
* **Identifier (Entity ID)** — Antsfield Entity ID
* **Reply URL (ACS URL)** — Antsfield ACS URL
* **Sign-on URL** — leave blank for IdP-initiated, or set per your flow
## Step 4: Copy the metadata URL
In the Entra SAML configuration, Microsoft provides **App Federation Metadata Url**.
1. On the **SAML-based Sign-on** page, find **App Federation Metadata Url**.
2. Copy the metadata URL.
3. In Antsfield **Settings → Security**, paste the metadata URL into the SAML configuration form.
4. Save the configuration in Antsfield.
Antsfield uses this metadata to trust Entra ID's signing certificate and SSO endpoint.
Under **Attributes & Claims**, ensure the token includes:
| Claim | Antsfield expects |
| - | - |
| `emailaddress` or `user.mail` | Email address |
| `givenname` | First name (optional) |
| `surname` | Last name (optional) |
Use **Unique User Identifier (Name ID)** mapped to the user's email or UPN, consistent with your Antsfield email matching policy.
Go to **Users and groups** and assign the Antsfield app to users or groups.
1. Sign out of Antsfield.
2. On the login page, click **Sign in with SAML**, or launch from the Microsoft My Apps portal.
3. Confirm you land in the correct workspace.
Download the **Federation Metadata XML** from Entra if your security team prefers file-based exchange instead of a metadata URL.
## Remove SAML
Owners can disconnect SAML from **Settings → Security**. Coordinate with your IT team before removing production SSO.
See [Security documentation](/dashboard/security/introduction) and [Azure AD SCIM](/help/article/azure-scim) for user provisioning.
# Azure AD SCIM
Source: https://docs.antsfield.com/help/article/azure-scim
Automatically provision and deprovision Antsfield users from Microsoft Entra ID.
**SCIM** automatically creates, updates, and deprovisions users in Antsfield based on your Microsoft Entra ID directory — reducing manual invite management for large teams.
SCIM is available on **Enterprise** plans alongside SAML SSO.
Configure [Azure AD SAML](/help/article/azure-saml) first so provisioned users can sign in. SCIM manages workspace membership; SAML handles authentication.
## Prerequisites
* Microsoft Entra ID admin access
* Antsfield workspace owner role
* Enterprise plan with SCIM enabled
* SAML SSO configured (recommended)
## Set up Azure AD SCIM
In Antsfield, go to **Settings → Security** and open **SCIM** configuration. Generate or copy your:
* **SCIM endpoint URL**
* **Bearer token** (shown once — store in a secrets manager)
In the [Microsoft Entra admin center](https://entra.microsoft.com), open your **Antsfield** enterprise application.
Go to **Provisioning** and set **Provisioning Mode** to **Automatic**.
Under **Admin Credentials**:
* **Tenant URL** — Antsfield SCIM endpoint URL
* **Secret Token** — Antsfield bearer token
Click **Test Connection** to verify Entra can reach Antsfield.
Review **Provisioning → Mappings → Provision Microsoft Entra ID Users**. Ensure mappings include:
| Entra attribute | SCIM field |
| - | - |
| `userPrincipalName` or `mail` | `userName` / `emails` |
| `givenName` | `name.givenName` |
| `surname` | `name.familyName` |
| `Switch([IsSoftDeleted], , "False", "True", "True", "False")` | `active` |
Adjust mappings so the email Entra sends matches how users are identified in Antsfield.
1. Assign users or groups to the Antsfield enterprise app under **Users and groups**.
2. Set **Provisioning Status** to **On**.
3. Review the **Provisioning logs** for successful create and deactivate events.
Pair SCIM with **location access** — provision users into Antsfield, then let owners assign location permissions in **Settings → Members**.
## Rotate credentials
If your bearer token may have been exposed, regenerate it in **Settings → Security** and update Entra with the new token before revoking the old one.
## Remove SCIM
Disconnect SCIM from the Security page when decommissioning automated provisioning. Review active members afterward.
See [Security documentation](/dashboard/security/introduction).
# Business plan
Source: https://docs.antsfield.com/help/article/business-plan
Antsfield Business plan limits and features for growing teams.
The **Business** plan is for growing teams that need REST API access, a larger catalog, more transfers, and additional locations and seats.
## Business plan highlights
| Feature | Business |
| - | - |
| **Total items** | 2,500 (cumulative — does not reset monthly) |
| **Transfers per billing cycle** | 10,000 (resets each billing period) |
| **Locations** | 12 |
| **Tags** | 100 |
| **Suppliers** | 60 |
| **Team members** | 25 |
| **Invoicing, estimates & clients** | Yes |
| **Location permissions** | Yes |
| **CSV import & export** | Yes |
| **API access** | Yes |
| **Movement ledger** | Yes |
Higher tiers within Business add more items and transfers at stepped price points. See current pricing at [antsfield.com/pricing](https://antsfield.com/pricing).
## API access on Business
Business unlocks REST API access so you can:
* Sync items from an external product master
* Read on-hand balances for fulfillment systems
* Create tags or items from automated jobs
* Pull inventory data for reporting
Create API keys under **Settings → API Keys**. See [API introduction](/api-reference/introduction) and [Rate limits](/api-reference/rate-limits).
## What counts toward limits
### Total items
Cumulative catalog size. Deleting items frees capacity. Existing items and stock are unaffected when you hit the limit — you simply cannot add new items until you upgrade.
### Transfers per billing cycle
Resets at the start of each billing period. Monitor usage on **Settings → Billing** and in the sidebar usage widget.
## Upgrade to Business
1. Go to **Settings → Billing** (owners only).
2. Click **Upgrade** or **Change plan**.
3. Select Business, choose monthly or yearly billing, and confirm checkout via Stripe.
## Compare plans
Invoicing and suppliers for early-stage businesses
Higher limits and priority support
# Google Workspace SAML SSO
Source: https://docs.antsfield.com/help/article/google-saml
Configure SAML single sign-on between Google Workspace and Antsfield.
This guide walks workspace **owners** through connecting **Google Workspace** as a SAML identity provider for Antsfield. SAML SSO is available on **Enterprise** plans.
Test in a staging Google app before enforcing SSO on production users. Keep at least one break-glass owner account with a non-SSO recovery path.
## Prerequisites
* Google Workspace admin access
* Antsfield workspace owner role
* Enterprise plan with SAML enabled
## Set up Google Workspace SAML
In Antsfield, go to **Settings → Security** and click to configure **SAML Single Sign-On**. Select **Google Workspace** as your identity provider.
In the [Google Admin console](https://admin.google.com), go to **Apps → Web and mobile apps → Add app → Add custom SAML app**.
Name the app **Antsfield** and continue through the setup wizard.
From the Antsfield SAML setup modal, copy:
* **ACS URL** (Assertion Consumer Service URL)
* **Entity ID** (SP Entity ID / Audience URI)
Paste these into the corresponding fields in the Google SAML app configuration.
## Step 4: Copy the metadata URL
In the Google SAML app setup, Google provides an **IdP metadata URL** (or downloadable metadata XML).
1. Copy the **metadata URL** from Google.
2. In Antsfield **Settings → Security**, paste the metadata URL into the SAML configuration form.
3. Save the configuration in Antsfield.
Antsfield uses this metadata to trust Google's signing certificate and SSO endpoint.
In Google, map SAML attributes so Antsfield receives:
| Google attribute | Antsfield expects |
| - | - |
| **Primary email** | Email address |
| **First name** | Given name (optional) |
| **Last name** | Family name (optional) |
The email attribute must match a user allowed to access Antsfield.
In Google Admin, assign the Antsfield SAML app to users or groups who should sign in.
1. Sign out of Antsfield.
2. On the login page, click **Sign in with SAML** (or use your IdP-initiated flow).
3. Confirm you land in the correct workspace.
If login fails, verify the ACS URL, Entity ID, and metadata URL match exactly between Google and Antsfield.
## Remove SAML
Owners can disconnect SAML from **Settings → Security**. Coordinate with your IT team before removing production SSO.
See [Security documentation](/dashboard/security/introduction) and [Google Workspace SCIM](/help/article/google-scim) for user provisioning.
# Google Workspace SCIM
Source: https://docs.antsfield.com/help/article/google-scim
Automatically provision and deprovision Antsfield users from Google Workspace.
**SCIM** (System for Cross-domain Identity Management) automatically creates, updates, and deprovisions users in Antsfield based on your Google Workspace directory — reducing manual invite management for large teams.
SCIM is available on **Enterprise** plans alongside SAML SSO.
Configure [Google Workspace SAML](/help/article/google-saml) first so provisioned users can sign in. SCIM manages workspace membership; SAML handles authentication.
## Prerequisites
* Google Workspace admin access
* Antsfield workspace owner role
* Enterprise plan with SCIM enabled
* SAML SSO configured (recommended)
## Set up Google Workspace SCIM
In Antsfield, go to **Settings → Security** and open **SCIM** configuration. Generate or copy your:
* **SCIM endpoint URL**
* **Bearer token** (shown once — store in a secrets manager)
In the Google Admin console, open your **Antsfield** SAML app (or create a provisioning integration if your Google edition supports automated user provisioning for custom apps).
Enable **Automatic provisioning** and enter the Antsfield SCIM endpoint URL and bearer token when prompted.
Map Google directory attributes to Antsfield SCIM fields:
| Google attribute | SCIM field |
| - | - |
| Primary email | `userName` / `emails` |
| First name | `name.givenName` |
| Last name | `name.familyName` |
| Active status | `active` |
Ensure the email sent by Google matches how users are identified in Antsfield.
Assign the Antsfield app to Google users or groups who should be provisioned. Google pushes create, update, and deactivate events to Antsfield via SCIM.
1. Assign a test user in Google.
2. Confirm they appear under **Settings → Members** in Antsfield.
3. Deactivate the test user in Google and confirm they lose workspace access.
Pair SCIM with **location access** — provision users into Antsfield, then let owners assign location permissions in **Settings → Members**.
## Rotate credentials
If your bearer token may have been exposed, regenerate it in **Settings → Security** and update Google with the new token before revoking the old one.
## Remove SCIM
Disconnect SCIM from the Security page when decommissioning automated provisioning. Review active members afterward.
See [Security documentation](/dashboard/security/introduction).
# How to create an item
Source: https://docs.antsfield.com/help/article/how-to-create-item
Add a product to your Antsfield inventory catalog with SKU, description, cost, and optional opening stock.
Items are the products or SKUs you track in Antsfield. Each item has catalog details and **on-hand quantities** at each location — managed via stock adjustments and transfers.
Sign in to [app.antsfield.com](https://app.antsfield.com) and open your workspace. Click **Inventory** in the sidebar.
Click **Add item** in the toolbar, or press the `C` keyboard shortcut.
Enter:
* **Item code** — your SKU or unique product code
* **Description** — name or short description
* **Cost** — unit cost (used for reporting)
Optionally add a **Supplier**.
Use the **Tags** section to search and attach one or more tags. If you have no tags yet, create them under **Inventory → Tags**.
If a location is selected in the inventory page header, you can set an **Opening quantity** for that location.
If no location is selected, opening quantity is skipped. Use **Adjust stock** afterward to set quantities.
Click **Create item**. The new item appears in your inventory list.
## After creating an item
* **Edit** — open the item's **⋯** menu → **Edit** to update catalog fields and tags
* **Adjust stock** — set or change on-hand quantity at any location
* **Duplicate** — copy an item with the same details (stock is not copied)
## Plan limits
Your workspace has a **total items** limit based on your plan. This is a cumulative cap — it does not reset each month. When you reach the limit, you cannot add new items until you upgrade or delete existing ones.
See [Billing & plans](/dashboard/billing/introduction) and [Items documentation](/dashboard/items/introduction).
# How to get your workspace ID
Source: https://docs.antsfield.com/help/article/how-to-get-workspace-id
Find the workspace ID required for Antsfield API requests and integrations.
When you connect Antsfield to other tools via the API, you need your **workspace ID** alongside your API key. The workspace ID tells Antsfield which inventory catalog to read or write.
REST API access is available on **Business** plans and above. Create API keys under **Settings → API Keys**.
## Find your workspace ID
Sign in to [app.antsfield.com](https://app.antsfield.com) and open the workspace you want to integrate with.
Click **Settings → General** in the sidebar.
Copy the **workspace ID** shown on that page. It is a unique identifier for this workspace.
## Use the workspace ID in API requests
Include your API key in the `Authorization` header and pass the workspace ID for operations that require it:
```
Authorization: Bearer YOUR_API_KEY
```
See [API keys](/dashboard/api-keys/introduction), [Authentication](/api-reference/authentication), and [Retrieve a workspace](/api-reference/endpoint/retrieve-a-workspace) for full details.
Each workspace has its own ID. If you belong to multiple workspaces, make sure you use the ID for the correct one in your integration.
# How to invite teammates
Source: https://docs.antsfield.com/help/article/how-to-invite-teammates
Add owners and members to your Antsfield workspace by email or invite link.
Antsfield is built for teams. Invite colleagues so they can help manage inventory, create transfers, and adjust stock — with controls over who can see which locations.
Only workspace **owners** can invite and manage members. Each plan has a maximum number of users per workspace.
## Invite by email
Go to **Settings → Members** in the sidebar.
Click **Invite member** and enter one or more email addresses.
Select **Owner** or **Member**:
| Role | Capabilities |
| - | - |
| **Owner** | Full access: settings, billing, invites, API keys, security, revert transfers |
| **Member** | Day-to-day inventory work; cannot manage billing or workspace deletion |
For **members**, restrict which locations they can see or edit:
| Permission | Effect |
| - | - |
| **None** | Cannot see or edit stock at this location |
| **View** | Can see inventory and transfers involving this location |
| **Edit** | Can adjust stock and create transfers at this location |
Leave all locations on **Edit** for full workspace access.
Send the invite. Invitees receive an email with a link to join. Pending invites show status **Invited** in the members table.
## Invite link
For faster onboarding, generate a reusable **invite link** from the Members page. Anyone with the link can join the workspace (subject to your plan's user limit). Revoke or rotate links from the same screen when needed.
## Accepting an invite
Recipients click the email link or visit the invite URL while signed in (or create an account first). They are added to the workspace with the role and location access defined in the invite.
## Remove a member
Owners can remove active members or cancel pending invites from the Members table menu. Removed users lose access immediately but their account remains.
See [Team & members](/dashboard/team/introduction) for full details.
# How to use tags
Source: https://docs.antsfield.com/help/article/how-to-use-tags
Create colored tags, assign them to items, and filter your inventory faster.
Tags help you organize items by category, product line, season, supplier, or any grouping that makes sense for your business.
## What is a tag
A **tag** is a colored label you attach to one or more items. Tags do not affect stock quantities — they are for organization and filtering only.
Each tag has:
* A **name** — keep it short, e.g. "Apparel", "Q4 Promo", "Discontinued"
* A **color** — use consistently across your team (e.g. red for urgent categories)
Your plan limits how many tags you can create per workspace.
## Create a tag
Go to **Inventory → Tags** in the sidebar (under **Library**).
Click **Add tag**, enter a name, pick a color, and save.
## Assign tags to items
When creating or editing an item, use the **Tags** section in the add/edit modal to search and attach one or more tags.
You can also manage tags while editing an item from the inventory list (**⋯** menu → **Edit**).
## Filter inventory by tag
On the **Inventory** page:
1. Open the **Filter** control.
2. Select one or more tags.
3. The list shows only items matching your selection.
Combine tag filters with search and location selection — e.g. all "Summer" tagged products at the "Warehouse" location.
## Edit or delete tags
From **Inventory → Tags**, open a tag card's menu to rename, recolor, or delete.
Deleting a tag removes it from all items that used it. Items themselves are not deleted.
## Best practices
* **Keep names short** and meaningful for your whole team
* **Use color consistently** — e.g. blue for raw materials, green for finished goods
* **Avoid tag sprawl** — 10–20 well-defined tags beat hundreds of one-off labels
See [Tags documentation](/dashboard/tags/introduction) for more.
# Inventory locations
Source: https://docs.antsfield.com/help/article/inventory-locations
Create and manage warehouses, vans, sites, and other places where you hold stock.
**Locations** are where your inventory physically (or logically) lives. Every on-hand quantity is tied to an item **and** a location. Transfers move stock **between** locations.
## Location types
When creating a location, choose a type that fits how you operate:
| Type | Typical use |
| - | - |
| **Warehouse** | Main storage, distribution center |
| **Van** | Mobile sales or service vehicle |
| **Truck** | Larger mobile unit or freight |
| **Site** | Job site, retail floor, pop-up |
| **Other** | Anything that does not fit above |
The type is for organization and display — it does not change how stock math works.
## Create a location
Click **Locations** in the sidebar.
Click **Add location**, enter a **name** (unique within the workspace), choose a **type**, and add an optional **note**.
Save the location. It appears on the Locations page with a count of items that have stock there.
Your plan caps how many locations you can have. The first location created with your workspace is **Inventory** — often used as the default receiving location.
## Default location
Workspace owners set the **default location** under **Settings → General**. This location is pre-selected when you add items with opening stock from the inventory page.
## View location inventory
Click a location card to open inventory filtered to that location. Use the location dropdown on the **Inventory** page to check counts without leaving the list.
## Edit or delete a location
From a location card's **⋯** menu:
* **Edit** — change name, type, or note
* **Delete** — remove the location
You cannot delete a location that still has stock balances. Transfer or adjust stock to zero at that location first, or move items elsewhere.
## Location access for team members
When inviting teammates, you can restrict which locations each **member** can view or edit. Owners always see everything. See [How to invite teammates](/help/article/how-to-invite-teammates).
See [Locations documentation](/dashboard/locations/introduction) for more.
# Inventory movements
Source: https://docs.antsfield.com/help/article/inventory-movements
Read the audit trail of every stock change in your workspace.
The **Movements** ledger is a read-only history of every quantity change in your workspace. It is your source of truth for audits, reconciliation, and answering "what happened to this SKU?"
Open it from **Inventory → Movements** in the sidebar.
## What appears in the ledger
Every time stock changes, Antsfield appends a movement record. Common types you will see:
| Badge | Meaning |
| - | - |
| **Opening** | Initial or set on-hand quantity |
| **Transfer out** | Stock left a location via transfer |
| **Transfer in** | Stock arrived at a location via transfer |
| **Revert out / in** | Stock restored after a transfer was reverted |
| **Adjustment + / −** | Manual quantity correction |
Each row typically shows the item, movement type, quantity, locations involved, optional note, who performed the action, and timestamp.
## When to use movements
* **End-of-day review** — confirm transfers and adjustments match what happened on the floor
* **Dispute resolution** — trace when quantity changed for a specific item
* **Audit prep** — review chronological stock activity (pair with item-level location view for current balances)
## What movements are not
* **Not editable** — you cannot change or delete ledger entries. Correct mistakes with a new adjustment or transfer revert.
* **Not an inventory view** — for current on-hand counts, use **Inventory** or an item's **Locations** panel.
* **Not billing events** — transfer limits are counted separately on your plan usage meter.
## Pagination
Movements are listed newest first, 50 per page. Use pagination controls at the bottom to go further back in history.
Pair with **Transfers → Revert** (owners only) when a transfer was wrong but stock has not moved again. Use item **Locations** for current totals; use **Movements** for the story of how you got there.
See [Movements documentation](/dashboard/movements/introduction) for more.
# Inventory transfers
Source: https://docs.antsfield.com/help/article/inventory-transfers
Move stock between locations instantly and keep a clear record of every movement.
A **transfer** moves quantity of one or more items from a **source location** to a **destination location**. In Antsfield, transfers execute **immediately** — there is no separate "ship" or "receive" step. Stock updates the moment you submit the transfer.
## When to use transfers
* Restocking a retail store from the warehouse
* Loading a service van before a route
* Moving returned goods back to main inventory
* Any internal stock movement between your own locations
For count corrections (stocktake adjustments), use **Adjust stock** instead. For receiving from external suppliers, adjust stock at the receiving location with an appropriate note.
## Create a transfer
Click **Transfers** in the sidebar and click **Create transfer**.
Choose **From** (source) and **To** (destination). They must be different locations.
For each item to move:
* Choose an item (only items with stock at the source are listed once a source is selected)
* Enter **quantity** — cannot exceed available stock at the source
* Optionally add a per-line **note**
Add an optional transfer-level **note** and submit. Stock is deducted from the source and added to the destination. The transfer appears in your history with status **completed**.
## Transfer limits
Each workspace has a **transfers per billing cycle** limit based on your plan. The sidebar usage widget and **Settings → Billing** show how many transfers you have used this cycle. Limits reset at the start of each billing period.
## Revert a transfer
**Workspace owners** can undo a completed transfer if it was entered in error:
1. Find the transfer in the list.
2. Click **Revert**.
3. Optionally add a **revert note**.
4. Confirm.
Only revert when the physical stock still matches what the ledger should show after reversal. If goods were already consumed or moved again, adjust stock manually instead.
Members cannot revert transfers — contact a workspace owner if a correction is needed.
See [Transfers documentation](/dashboard/transfers/introduction) for more.
# Okta SAML SSO
Source: https://docs.antsfield.com/help/article/okta-saml
Configure SAML single sign-on between Okta and Antsfield.
This guide walks workspace **owners** through connecting **Okta** as a SAML identity provider for Antsfield. SAML SSO is available on **Enterprise** plans.
Test in a staging Okta app before enforcing SSO on production users. Keep at least one break-glass owner account with a non-SSO recovery path.
## Prerequisites
* Okta admin access
* Antsfield workspace owner role
* Enterprise plan with SAML enabled
## Set up Okta SAML
In Antsfield, go to **Settings → Security** and click to configure **SAML Single Sign-On**. Select **Okta** as your identity provider.
In the Okta Admin Console, go to **Applications → Create App Integration**.
Choose **SAML 2.0**, name the app **Antsfield**, and continue.
From the Antsfield SAML setup modal, copy the **ACS URL** and **Entity ID**. Enter them in Okta:
* **Single sign-on URL** — Antsfield ACS URL
* **Audience URI (SP Entity ID)** — Antsfield Entity ID
* **Name ID format** — EmailAddress
* **Application username** — Email
## Step 4: Copy the metadata URL
After saving the Okta SAML app, Okta provides an **Identity Provider metadata URL**.
1. In Okta, open the **Sign On** tab for the Antsfield app.
2. Under **SAML 2.0**, copy the **Metadata URL** (or download metadata XML).
3. In Antsfield **Settings → Security**, paste the metadata URL into the SAML configuration form.
4. Save the configuration in Antsfield.
Antsfield uses this metadata to trust Okta's signing certificate and SSO endpoint.
Ensure Okta sends an email attribute Antsfield can use to identify the user:
| Okta attribute | Antsfield expects |
| - | - |
| `user.email` | Email address |
Add optional `firstName` and `lastName` attributes if your Antsfield setup maps display names.
Assign the Antsfield app to Okta users or groups.
1. Sign out of Antsfield.
2. On the login page, click **Sign in with SAML**, or use Okta dashboard SSO.
3. Confirm you land in the correct workspace.
Use Okta's **View SAML setup instructions** if you need to verify ACS URL and audience values side by side.
## Remove SAML
Owners can disconnect SAML from **Settings → Security**. Coordinate with your IT team before removing production SSO.
See [Security documentation](/dashboard/security/introduction) and [Okta SCIM](/help/article/okta-scim) for user provisioning.
# Okta SCIM
Source: https://docs.antsfield.com/help/article/okta-scim
Automatically provision and deprovision Antsfield users from Okta.
**SCIM** automatically creates, updates, and deprovisions users in Antsfield based on your Okta directory — reducing manual invite management for large teams.
SCIM is available on **Enterprise** plans alongside SAML SSO.
Configure [Okta SAML](/help/article/okta-saml) first so provisioned users can sign in. SCIM manages workspace membership; SAML handles authentication.
## Prerequisites
* Okta admin access
* Antsfield workspace owner role
* Enterprise plan with SCIM enabled
* SAML SSO configured (recommended)
## Set up Okta SCIM
In Antsfield, go to **Settings → Security** and open **SCIM** configuration. Generate or copy your:
* **SCIM endpoint URL**
* **Bearer token** (shown once — store in a secrets manager)
In the Okta Admin Console, open your **Antsfield** SAML application.
Go to the **Provisioning** tab and click **Configure API Integration**. Enable provisioning and enter the Antsfield SCIM base URL and bearer token.
Under **Provisioning → To App**, enable:
* **Create Users**
* **Update User Attributes**
* **Deactivate Users**
Map Okta user profile attributes to Antsfield SCIM fields:
| Okta attribute | SCIM field |
| - | - |
| `user.email` | `userName` / `emails` |
| `user.firstName` | `name.givenName` |
| `user.lastName` | `name.familyName` |
Assign the Antsfield app to Okta users or groups. Okta pushes create, update, and deactivate events to Antsfield via SCIM.
1. Assign a test user in Okta.
2. Confirm they appear under **Settings → Members** in Antsfield.
3. Deactivate the test user in Okta and confirm they lose workspace access.
Use Okta's **Provisioning Logs** to troubleshoot failed syncs.
Pair SCIM with **location access** — provision users into Antsfield, then let owners assign location permissions in **Settings → Members**.
## Rotate credentials
If your bearer token may have been exposed, regenerate it in **Settings → Security** and update Okta with the new token before revoking the old one.
## Remove SCIM
Disconnect SCIM from the Security page when decommissioning automated provisioning. Review active members afterward.
See [Security documentation](/dashboard/security/introduction).
# Pro plan
Source: https://docs.antsfield.com/help/article/pro-plan
Antsfield Pro plan limits and features for small businesses.
The **Pro** plan is designed for small businesses that have outgrown the free tier and need invoicing, suppliers, more catalog capacity, and team collaboration.
## Pro plan highlights
| Feature | Pro |
| - | - |
| **Total items** | 500 (cumulative — does not reset monthly) |
| **Transfers per billing cycle** | 2,500 (resets each billing period) |
| **Locations** | 5 |
| **Tags** | 30 |
| **Suppliers** | 20 |
| **Team members** | 10 |
| **Invoicing, estimates & clients** | Yes |
| **Location permissions** | Yes |
| **CSV import & export** | Yes |
| **Movement ledger** | Yes |
| **API access** | No — upgrade to Business |
Higher tiers within Pro add more items and transfers at stepped price points. See current pricing at [antsfield.com/pricing](https://antsfield.com/pricing).
## What counts toward limits
### Total items
The number of items in your catalog. **Deleting items frees capacity.** Adding items via the UI, CSV import, bulk create, or API all count. When you hit the limit, you cannot create new items until you upgrade or delete existing ones.
### Transfers per billing cycle
Each completed transfer increments usage for the current billing period. **Reverted transfers** still count toward the limit for the cycle in which they were created.
### Locations, tags, and users
Hard caps per workspace. You cannot create more than your plan allows without upgrading.
## Upgrade to Pro
1. Go to **Settings → Billing** (owners only).
2. Click **Upgrade** or **Change plan**.
3. Select Pro, choose monthly or yearly billing, and confirm checkout via Stripe.
Limits update immediately after payment.
## Compare plans
API access, more items, and larger teams
Full plan comparison and usage details
# What is a workspace?
Source: https://docs.antsfield.com/help/article/what-is-a-workspace
A workspace is your company's home in Antsfield — one catalog, one team, one billing plan.
A **workspace** is your company's home in Antsfield — one product catalog, one set of locations, one billing plan, and one team. Think of it like a Slack workspace: separate from other organizations you might join.
## What lives in a workspace
Everything you manage in Antsfield belongs to a single workspace:
* **Items** — your product catalog and SKUs
* **Locations** — warehouses, vans, stores, and other places you hold stock
* **Transfers** — stock movements between your locations
* **Tags** — colored labels for organizing items
* **Members** — owners and members with roles and location access
* **Billing** — subscription and usage limits for this business
## Workspace URL
Each workspace has a **slug** — a URL-friendly identifier. If your slug is `acme-supply`, your dashboard lives at:
```
https://app.antsfield.com/acme-supply/inventory
```
Owners can change the slug under **Settings → General**. Updating the slug changes your dashboard URL.
## Multiple workspaces
One person can belong to many workspaces — useful if you run separate businesses or manage inventory for clients. Each workspace has its own plan, usage, and members. Billing is per workspace, not per user account.
Use the workspace switcher in the sidebar to move between workspaces.
## Default setup
When you create a workspace, Antsfield:
1. Creates a default location named **Inventory**
2. Sets it as the default location for opening stock on new items
## Related guides
Create, switch, and configure workspaces
Required for API integrations
# What is Antsfield?
Source: https://docs.antsfield.com/help/article/what-is-antsfield
Antsfield is an inventory management platform for tracking products across locations and teams.
**Antsfield** is an inventory management platform built for business owners and their teams. It helps you track products across warehouses, stores, vans, and job sites — with a complete audit trail of every stock change.
## What Antsfield does
Antsfield gives your team one place to:
* **Manage a product catalog** — SKUs, descriptions, costs, suppliers, and tags
* **Track stock by location** — see on-hand quantities at each warehouse, van, truck, or site
* **Transfer inventory** — move stock between your own locations instantly
* **Audit every change** — a movements ledger records openings, transfers, adjustments, and reversals
* **Collaborate** — invite teammates with roles and optional location-level permissions
## Who Antsfield is for
Antsfield is designed for small and mid-sized businesses that need reliable inventory tracking without enterprise ERP complexity — distributors, retailers, field service teams, and multi-location operators who want their whole team on the same page.
## How it is organized
When you sign in at [app.antsfield.com](https://app.antsfield.com), you work inside a **workspace** — your company's isolated inventory environment with its own catalog, locations, billing, and team.
| Area | What it's for |
| - | - |
| **Inventory** | View, search, filter, and manage items and quantities |
| **Locations** | Create and manage where stock is stored |
| **Transfers** | Move stock between locations |
| **Movements** | Read-only history of every stock change |
| **Tags** | Organize items with colored labels |
| **Settings** | Workspace name, billing, members, security, and API keys |
## Get started
Set up your workspace in minutes
Understand how workspaces work
# API
Source: https://docs.antsfield.com/help/category/api
Connect Antsfield to your tools with the REST API and workspace credentials.
The Antsfield API lets you read and write inventory data programmatically — sync items from an ERP, pull on-hand balances for fulfillment, or automate nightly imports.
REST API access is available on **Business** plans and above. Create API keys under **Settings → API Keys**.
Find the ID required for API requests
Create and manage keys for your integrations
Authentication, endpoints, and getting started
How to authorize requests with your API key
# Billing
Source: https://docs.antsfield.com/help/category/billing
Compare Antsfield plans and understand usage limits for your workspace.
Each workspace has its own subscription and usage meters. Choose the plan that fits your catalog size, transfer volume, team, and integration needs.
For small businesses getting serious about inventory
Growing teams with API access and movement ledger
Larger operations with higher limits and priority support
Antsfield also offers a **Free** tier for trying the product and an **Enterprise** plan with SAML SSO, SCIM, and custom limits. See [Billing & plans](/dashboard/billing/introduction) for the full comparison.
## Manage billing
Workspace **owners** can upgrade, change plans, and open the Stripe customer portal under **Settings → Billing**.
# Getting started
Source: https://docs.antsfield.com/help/category/getting-started
Set up your account, workspace, items, and team in Antsfield.
New to Antsfield? These guides walk you through the essentials — from understanding what Antsfield is to adding your first items and inviting your team.
Overview of inventory management in Antsfield
How workspaces organize your catalog and team
Add products to your inventory catalog
Invite by email or shareable link
## Recommended path
Sign up at [app.antsfield.com](https://app.antsfield.com) and create a workspace with a name and URL slug. Antsfield automatically adds a default **Inventory** location.
Create items with SKUs and descriptions, then set opening quantities or adjust stock per location.
Add owners and members under **Settings → Members**, with optional location restrictions.
Follow the full [Quick start](/quick-start) guide in the documentation for a complete walkthrough including your first transfer.
# Inventory
Source: https://docs.antsfield.com/help/category/inventory
Manage locations, transfers, stock movements, and tags in your workspace.
Antsfield tracks inventory by **item** and **location**. Use these guides to set up where stock lives, move it between places, audit changes, and organize your catalog with tags.
Create warehouses, vans, sites, and other storage places
Move stock between locations instantly
Read the audit trail of every stock change
Label and filter items by category or product line
## Related documentation
Create, search, and manage your product catalog
Adjust quantities and view stock by location
Bulk load your catalog from a spreadsheet
# SAML SSO
Source: https://docs.antsfield.com/help/category/saml-sso
Configure SAML single sign-on and SCIM provisioning with your identity provider.
Enterprise teams can centralize authentication with SAML SSO and automate user provisioning with SCIM. These guides cover setup for Google Workspace, Okta, and Microsoft Entra ID (Azure AD).
SAML SSO and SCIM are available on **Enterprise** plans. Workspace owners configure security under **Settings → Security**.
## SAML single sign-on
Connect Google as your identity provider
Connect Okta as your identity provider
Connect Microsoft Entra ID as your identity provider
## SCIM provisioning
Automatically provision users from Google
Automatically provision users from Okta
Automatically provision users from Entra ID
See also [Security](/dashboard/security/introduction) in the product documentation.
# Help Center
Source: https://docs.antsfield.com/help/index
Find answers about inventory, workspaces, billing, SSO, and the Antsfield API.
Welcome to the Antsfield Help Center. Browse popular articles below or jump to a category for step-by-step guides on inventory management, team setup, billing, and enterprise security.
## Popular articles
Learn what Antsfield does and who it's built for
Add your first product to the inventory catalog
Move stock between warehouses, vans, and stores
Add owners and members to your workspace
Limits and features for small businesses
Connect Google Workspace as your identity provider
## Browse by category
New to Antsfield? Start here
Locations, transfers, movements, and tags
Plans, limits, and when to upgrade
Enterprise sign-in and SCIM provisioning
Workspace IDs, API keys, and integrations
## Product documentation
For in-depth feature guides, see the main documentation sidebar — including [Items](/dashboard/items/introduction), [Locations](/dashboard/locations/introduction), [Transfers](/dashboard/transfers/introduction), and the [API Reference](/api-reference/introduction).
## Still need help?
* Email [support@antsfield.com](mailto:support@antsfield.com)
* Open the in-app chat from your Antsfield dashboard
* Visit [antsfield.com/pricing](https://antsfield.com/pricing) for current plan pricing
# Integrations
Source: https://docs.antsfield.com/integrations
Connect Antsfield with custom tools and automation through the REST API and CSV import/export.
Antsfield integrates with your workflow through the dashboard, CSV import/export, and the REST API.
## Build your own integration
Use Antsfield's inventory API to connect any system:
1. Create an [API key](/dashboard/api-keys/introduction) on a Business plan or higher.
2. Read the [API reference](/api-reference/introduction).
3. Use workspace-scoped endpoints for items, locations, transfers, and invoicing where your plan includes them.
## CSV workflows
Import items and clients from CSV on supported plans, then export catalogs and client lists for reporting or downstream tools.
Need a specific integration? Contact [support@antsfield.com](mailto:support@antsfield.com) with your use case.
# Introduction
Source: https://docs.antsfield.com/introduction
Antsfield helps trades and field-service teams track inventory across warehouses, vans, and job sites, send invoices, and keep crews in sync on web and iPhone.
Antsfield helps trades and field-service teams track stock across warehouses, vans, and job sites, move materials with a clear audit trail, send invoices, and stay aligned between the office and the field — all in one workspace.
Set up your workspace and run your first transfer in minutes
Understand how workspaces, items, locations, and stock fit together
## What you can do in Antsfield
Every item has an on-hand quantity at each **location** (warehouse, van, truck, site, or custom type). Switch locations from the inventory page to see stock where it actually lives.
Move one or many items from a source location to a destination in a single transfer. Stock updates instantly and is recorded in your movement history.
Apply colored tags to items so you can filter and find products quickly — by category, supplier, season, or any system that fits your business.
On paid plans, bulk-import items from CSV and export your catalog for reporting or backups.
Invite teammates by email or shareable invite link. Assign **owner** or **member** roles and optionally restrict which locations each person can see or edit.
The **Movements** ledger records openings, transfers, adjustments, and reversals with timestamps — useful for reconciliation and internal audits.
## How the app is organized
When you sign in at [app.antsfield.com](https://app.antsfield.com), you land in a **workspace** — your company's isolated inventory environment.
| Area | What it's for |
| - | - |
| **Inventory** | View, search, filter, and manage items and quantities |
| **Locations** | Create and manage where stock is stored |
| **Transfers** | Move stock between locations |
| **Movements** | Read-only history of every stock change |
| **Tags** | Organize items with colored labels |
| **Settings** | Workspace name, billing, members, security, and API keys |
Use the workspace switcher in the sidebar to move between workspaces if you belong to more than one.
## Plans at a glance
Antsfield offers a free tier for trying the product and paid plans as your catalog and team grow. Limits apply to **total items** (they do not reset each month), **transfers per billing cycle**, locations, tags, and team size.
See what each plan includes and how usage is measured
## Need help?
* Email [support@antsfield.com](mailto:support@antsfield.com)
* Open the in-app chat from the dashboard
* Browse the guides in the sidebar for step-by-step instructions on every feature
# Keyboard shortcuts
Source: https://docs.antsfield.com/keyboard-shortcuts
Speed up everyday inventory work with keyboard shortcuts in the dashboard.
Shortcuts work when you are focused on the dashboard and not typing in a text field.
## Global
| Key | Action | Where |
| - | - | - |
| `C` | Create new item | Inventory |
| `C` | Create new location | Locations |
| `C` | Create new transfer | Transfers |
| `C` | Create new tag | Tags |
| `M` | Invite member | Settings → Members |
## Item list
| Key | Action | When |
| - | - | - |
| `X` | Delete selected items | Items selected in bulk mode |
| `Escape` | Clear selection | Items selected in bulk mode |
## Item menu (hover a card or open ⋯ menu)
| Key | Action |
| - | - |
| `E` | Edit item |
| `D` | Duplicate item |
| `I` | Copy item ID |
| `A` | Adjust stock |
| `X` | Delete item |
## Tag cards
| Key | Action | When |
| - | - | - |
| `E` | Edit tag | Tag card focused or menu open |
| `I` | Copy tag ID | Tag card focused or menu open |
| `X` | Delete tag | Tag card focused or menu open |
Look for shortcut hints on buttons throughout the app — for example, **Add item** shows `C`.
# Quick start
Source: https://docs.antsfield.com/quick-start
Get your workspace running: add items, set stock, create locations, and make your first transfer.
Follow this guide to go from a new account to a working inventory setup. The in-app **Complete setup** checklist tracks the same milestones.
1. Go to [app.antsfield.com/register](https://app.antsfield.com/register) and sign up with Google or your email.
2. After sign-up you are taken to the welcome screen. Click **Create workspace**, choose a name and URL slug, then confirm.
3. Antsfield automatically creates a default location called **Inventory** for your new workspace.
You are redirected to the inventory page for that workspace.
1. On the **Inventory** page, click **Add item** (or use the `C` keyboard shortcut).
2. Fill in **Item code** (SKU), **Description**, and **Cost**. Supplier is optional.
3. Optionally assign **Tags** and set an **Opening quantity** for the currently selected location.
4. Click **Create item**.
If you do not set an opening quantity, the item is created with zero stock. You can set quantity later via **Adjust stock** on the item menu.
1. Open **Locations** in the sidebar.
2. Click **Add location**, enter a name, choose a type (warehouse, van, truck, site, or other), and save.
3. Repeat for each physical place you track stock.
Your plan limits how many locations you can create. See [Billing](/dashboard/billing/introduction) for plan details.
For items that already exist:
1. On **Inventory**, select the location from the dropdown at the top of the page.
2. Open the item's **⋯** menu and choose **Adjust stock**.
3. Pick the location, enter the on-hand quantity, optionally add a note, and save.
When creating a new item, you can set opening stock in the same modal if a location is selected.
1. Open **Transfers** in the sidebar and click **Create transfer**.
2. Choose a **From** location (source) and **To** location (destination). They must be different.
3. Add one or more line items with quantities. Only items with stock at the source location are available.
4. Add an optional note and submit.
The transfer completes immediately — stock is deducted from the source and added to the destination. The event appears under **Transfers** and in **Movements**.
1. Go to **Settings → Members**.
2. Click **Invite member** and enter their email, or copy an **Invite link** to share.
3. Choose a role (**Owner** or **Member**) and optionally set **Location access** per location (None, View, or Edit).
Members with restricted location access only see inventory and transfers for the locations you assign.
## Recommended daily workflow
```mermaid theme={null}
flowchart LR
A[Check inventory by location] --> B[Adjust stock if counts changed]
B --> C[Create transfers to move stock]
C --> D[Review movements for audit]
```
1. **Morning** — Open inventory filtered by location and verify on-hand counts.
2. **During the day** — Record transfers when stock moves between sites, vans, or warehouses.
3. **End of day** — Skim **Movements** to confirm everything that happened is logged.
## What's next?
Adjust quantities, view stock across locations, and understand the ledger
Bulk-load your catalog from a spreadsheet
Invites, permissions, and location access
Know when to upgrade and what counts toward your plan