Specific Lot Identification via API
Overview
The Specific Lot Identification (also known as SpecID) method allows the user to explicitly choose which specific purchased lot(s) will be used to satisfy a sale or disposition. This method is typically used when the items or assets are not interchangeable or when the user wants maximum control over their realized gain or loss for tax purposes.
Please note:
- Since this process depends on current inventory and requires lot IDs, Specific Lot Identification is currently supported only through the Transactions API and is not available in the Dashboard CSV upload.
- Further, SpecID is a transaction-level method. It cannot be configured as the default method for an account or filer.
Choose the Right Approach
There may be specific lots that can be chosen using another one of our supported disposition methods. See below for the recommended method for each scenario.
|
Requirement |
Recommended method |
Ingestion path |
|
Select one or more exact lots |
SpecID |
API |
|
Select the most recently acquired lots |
LIFO |
CSV or API |
|
Select the oldest acquired lots |
FIFO |
CSV or API |
|
Select lots by cost basis |
HIFO or LOFO |
CSV or API |
For a full description of supported methods, please refer to the following guides: Supported Disposition Methods.
Note that the counterparty transaction ID cannot be used to select an acquisition transaction. The Taxbit generated inventory lot ID must be used.
Updating Specific Lot ID on Transactions
Use the following workflow when your application needs to select an exact lot.
Step 1: User Initiates Transaction and Specifies SpecID
The user initiates a disposition (e.g., SELL) for a known asset (e.g., BTC, ETH). The user must indicate the SpecID method via your exchange UI.
Step 2: Retrieve Available Lots (Inventory Lookup)
To allow the user to select specific lots, your backend must first fetch the current available inventory for the asset being sold with GET/inventory. This response will return lot ids that can be selected to be disposed of.
Step 3: User Lot Selection
The user selects specific quantities from the available lots fetched in Step 2 in your UI.
Validations: The specific quantities must add up to the total quantity disposed.
Step 4: Send SELL Transaction to Taxbit
The exchange submits the SELL transaction data. The transaction payload must include the dispositionMethod field set to SPECID and the detailed lot information in inventory_lots.
The inventory_lots object needs to contain inventory lot IDs (retrieved from Step 2) and associated asset quantities. The sum of quantities must not exceed the asset amount on the transaction.
Post Submission
Upon successful submission, Taxbit processes the transaction. The consumed lots are updated in the inventory. The system can use a webhook, and the exchange can be notified through a webhook when the inventory is updated, allowing the UI to reflect the user's specific tax outcome.
Please note: Do not submit the SpecID disposal until the acquisition is available in inventory and the calculation is complete. If a specified lot cannot be found, or the specified lots do not cover the full disposal quantity, Taxbit may apply the account-level disposition method, if configured, and otherwise the filer-level method to the unresolved quantity.
Please refer to the following API guides for additional information:
- Supported Disposition Methods
- Setting Disposition Methods
- Inventory Lots and Summary for a Single Asset
- Send a Transaction to Taxbit
Using API and CSV Transaction Ingestion Together
If needed, you can use both ingestion methods for the same account:
- Upload transaction activity through the Dashboard CSV workflow
- Send specific transactions that require Specific Lot Identification through the API
Please note: When an existing transaction ID is provided, Taxbit updates the existing record on file. If a transaction ID is provided via API and then subsequently included within a CSV upload, the information originally provided via API (e.g., transaction data, disposition settings, etc.) will be replaced with the information included on the CSV. Because the current CSV template does not support SPECID, do not include transactions within a CSV file, if you would like to preserve any information related to Specific Lot Identification that was previously sent via API.