Reports (Start-of-Day)
Reports (Start-of-Day)
Bakkt's Start of Day (SOD) reporting suite equips clients with detailed summaries and insights into trades, positions, and account activities. These comprehensive reports offer granular insight into the operational aspects of your platform and customers, ensuring you stay informed about everything that is happening and reconcile all transactions.
Note: SOD reports will be different depending on the client's settlement type. For example, Cash Activity and Cash Balance reports are only for clients that are using Bakkt's fiat onramp service.
Overview
In order to effectively manage customer buying power on the Bakkt Crypto platform, clients must use start of day files to get the starting point of customer buying power and then adjust that value based on trading information for the timeframe from the last SOD file run until now. The below steps will get your system the correct customer buying power in real-time.
- The starting point of buying power is the customer's Fiat balance/position. Bakkt has a Cash Balance SOD file that has a Settled Amount of USD column. This balance is as of 16:40 CT.
- Once you have this balance, then you need to reduce the buying power for a couple of reasons.
- Bakkt has an Aged TPJ SOD file that has all of the failed cash transactions that were still unsettled as of 16:40 CT. For each row in this file, you should reduce the customer buying power by the notional amount that has not settled.
- Note that there should not be many failed fiat deposits from sell trades, but it can happen due to account restrictions. Theoretically, your system should credit buying power for these, but many clients ignore this to remain conservative regarding the customer buying power.
- The client system must keep track of trades that execute in the market and thus need to settle between 16:40 CT and the current time. For each trade execution, the client will need to debit or credit the buying power to maintain the live buying power.
- The client system must keep track of orders that have been sent to the market. For each buy order, buying power need to be reserved/reduced while it sits in the market.
- If the order executes, then it becomes a trade execution and falls into step 3 above. In this case, the reservation becomes permanent.
- If the order gets canceled without a trade execution, your system can safely return the reserved buying power.
- Note that sell orders do NOT receive a buying power credit until they actually execute in the market and become part of 3 above.
Some clients choose to update buying power each morning with this process and others will keep a live buying power and then only confirm the value each morning using the above logic.
Daily Crypto Positions
In order to manage cryptocurrency trading and reconcile account positions for crypto investors, Bakkt provides daily asset position files to clients in their Amazon Web Service (AWS) Simple Storage Service (S3) buckets. Each position file contains a list of investor accounts that have Bakkt positions. Clients may use this file to reconcile their systems' positions versus Bakkt positions.
Core Concepts and Functionality
The position file name convention is as follows: CorrespondentCode_YYYY-MM-DD_asset_positions.csv (e.g., XYYZ_2021-06-16_asset_positions.csv). The position file includes the following fields.
| Timestamp | The date/time in UTC when Bakkt takes the snapshot of the position | | Account ID | The eight-character account identification number (e.g., XYZ12345) | | Asset ID | The symbol for an asset's held position | | Asset Type | The type of asset | | Quantity | The quantity of the asset held in the account at the given timestamp according to the Bakkt system |
Timing
Bakkt generates the file with positions as of 4:40 PM CT. Bakkt delivers the asset position file to the client's AWS S3 bucket at 5:00 PM CT each day. Contact the Bakkt support team if any position discrepancies occur.
Daily Crypto Positions Example Report
| Timestamp | Account ID | Asset ID | Type | Quantity |
|---|---|---|---|---|
| 2023-04-05T21:44:09.713Z | XYZ12345 | BTC | CURRENCY | 0.00019367 |
| 2023-04-05T21:44:09.713Z | XYZ12346 | GRT | CURRENCY | 0.0000000 |
| 2023-04-05T21:44:09.713Z | XYZ12347 | ETH | CURRENCY | 0.00029485 |
Daily Trade and Settlement Reports
Execution Confirm
Bakkt communicates order acknowledgments, cancels, rejections, and fills via the Execution Report.
The Bakkt crypto system will create an Execution and TPJ Confirm file every day. This file will be used in many reconciliation scenarios for customer trades and Third-Party Journal Cash transactions to support those trades. Additionally, you can use this file along with the Aged TPJ File to keep your system's buying power in sync with Bakkt.
Bakkt Crypto Execution and TPJ Confirm File Details
If you are on Bakkt FIAT every day at approximately 5 pm CT a file will be available on the correspondents S3 bucket. The time period will be from 4:40 pm CT the previous day to 4:40 pm CT the current day.
If you are on Apex FIAT every day at approximately 7:45 pm CT a file will be available on the correspondents S3 bucket. The time period will be from 7:15 pm CT the previous day to 7:15 pm CT the current day. File delivery timing is dependant on the Apex batch time.
The Execution Confirm file has all the day's Crypto Execution details along with the TPJ details. Any coin execution in the file can be assumed to have cleared and the coin will now be part of the customer's position. The TPJ's may or may not have settled depending on the account status and balance in the account.
The file name convention is straightforward:
- If using BAKKT FIAT -
YYYY-MM-DD_execution_and_Bakkt_tpj_confirms_<Correspondent code>.csv - If using Apex FIAT -
YYYY-MM-DD_execution_and_tpj_confirms_<Correspondent code>.csv
If a file is generated on 06/08/2023, the file will reflect the records as of the date in the file name (e.g. 2023-06-08_execution_and_Bakkt_tpj_confirms_<Correspondent code>).
At the top of the Execution Confirm file you will see a From-To time range for the report. This is meant to synchronize with the Bakkt Marketplace cash activity file. Note that any executions/TPJ's that happen after 4:40 Central time will show up in the next day's file (if using BAKKT FIAT).
Field Descriptions
| Fields | Description |
|---|---|
| account_id | This is the 8-character Client's Account ID (e.g. XYZ12345). |
| direction | This is the direction of the net cash flow between customer account and Bakkt (Deposit or Withdrawal). For manual coin adjustments this will be blank. |
| side | This is the direction of the customer account's trade. For manual cash adjustment this field will be blank. NOTE: All prices reported in this file will be positive, so you may need to adjust them using the Side values to be positive/negative based on how your system represents them. |
| symbol | This is the crypto symbol for the trade or for a manual coin adjustment. You will see USD for manual cash adjustments. |
| notional | This is the notional value of the fill (i.e. Last Price * Last Quantity). Manual cash adjustments will be the amount of the adjustment. |
| fees | This is the trade fee for the execution, if you charge your customers trade fees. Manual coin and cash adjustments will have blank fees. NOTE: This column will be zero if you do not charge fees, but instead use markup/markdown. |
| total | This is the total cost of the execution or total manual adjustment (i.e. Notional + Fees) based on side. |
| transaction_type | This is the category of the transaction type. They include the following: CLIENT_PURCHASE, CLIENT_SALE, CLIENT_ALLOCATION_SALE, CLIENT_ALLOCATION_PURCHASE, and MANUAL_ADJUSTMENT |
| record_type | Type of record, includes execution, allocation, TPJ update for execution, and TPJ update for allocation. |
| execution_time | This is the time of the execution/fill in UTC time. |
| tpj_time | This is the time of TPJ cash moved is settled. |
| client_order_id | This is the Order ID that you sent with the crypto order. This will be blank for an allocation. |
| execution_id | This is the Execution ID that we sent you in your execution report for the crypto execution/fill for a single trade. Our Execution IDs are often numbers but can also be alpha-numeric. Your system should treat them as text strings. It will be blank for allocations. NOTE: Be careful when using the Execution ID in Excel as it tends to try to convert the long numeric strings to Scientific Notation which will remove the granular numbers closer to what it perceives is the decimal point in the execution ID. |
| batch_transaction_id | The ID that the client used to create the batch of allocations that included this allocation. This will be blank for all single trade executions. |
| client_transaction_Id | The ID that the client used to create the allocation request. This will be blank for all single trade executions. |
| trade_date | This is the process date of the transaction. This will coincide with the trade date in the FIX execution report. |
| last_quantity | This is the quantity filled for this order fill (tied to the execution ID), allocation (tied to Client Transaction ID) or MANUAL_COIN_ADJUSTMENT. MANUAL_CASH_ADJUSTMENT will have a blank last quantity. |
| last_price | This is the price where the execution, allocation or MANUAL_COIN_ADJUSTMENT was filled. MANUAL_CASH_ADJUSTMENT will have a blank last price. |
| tpj_id | This is the TPJ ID for the request from Bakkt Marketplace. It will be the TPJ complete ID when the TPJ succeeded and the TPJ pending ID for the attempted TPJ when rejected. It will be blank when the TPJ Status is blank indicating that Bakkt's system has not yet tried to pull funds from the account due to timing of the execution fill and the run time of the report. |
| tpj_settled | This is the indicator if the TPJ has settled or not at Bakkt Marketplace. Values can be "completed' Or "not_completed". |
| transaction_id | Internal transaction ID. |
| tpj_reason | This is the explanation for a "not completed" TPJ settled status. |
Execution Confirm Example Report
The following two execution confirm example files will demonstrate transaction dynamics between two consecutive days.
Day 1 Example File: 2021-06-10_execution_confirms_xyyz
In the "TPJ settled" column of the provided files, any execution marked as "not_settled" signals a failed attempt to transfer funds, impacting the account's available balance. As a result, your system must adjust the customer's buying power accordingly, reflecting the unprocessed TPJ amount, until a "settled" status confirms the completion of the transaction. This ensures accurate representation of buying power based on real-time fund availability within Bakkt's system.
- For Buy Executions, the withdrawal has not been applied, so you will need to reduce the SOD amount available for this account.
- For Sell Executions, the deposit has not been applied, so you will need to increase the SOD amount available for this account.
Your system will need to make these adjustments to these accounts until you get a record in the execution confirm file that says the TPJ has cleared. The Bakkt system will periodically try to clear TPJ's that have failed on previous days (and been reported in that day's execution confirm file). Note that your system will only get the notification of the failed TPJ in one Execution Confirm file on the day that the trade first executed and the TPJ failed. Your system should assume that it is still failed until you get a record in the Execution Confirm file that flags the execution as "settled" in the TPJ Settled column.
| Account ID | Client Order ID | Execution ID | Trade Date | Execution Time | Side | Symbol | Last Quantity | Last Price | Notional | Fees | Total | TPJ Status | TPJ ID | TPJ Settled |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| YYZ08849 | 1296023955039 | 21060921000862660 | 2021-06-09 | 2021-06-09T14:25:01Z | BUY | BTCUSD | 0.00028445 | 35155.43 | 10.00 | 0.00 | 10.00 | completed | e9b98741-5739-4713-aa0d-aa06c14d7d2e | completed |
| YYZ08879 | 1292006035039 | 1060921523857408 | 2021-06-09 | 2021-06-09T12:26:16Z | BUY | BTCUSD | 0.0000283 | 35341.881976 | 1.00 | 0.00 | 1.00 | completed | 130d6dd8-a573-4293-891d-60ffc0b4d105 | completed |
| YYZ07972 | 1292084475039 | 1060917692491776 | 2021-06-09 | 2021-06-09T07:35:47Z | BUY | LTCUSD | 1 | 161.3778087 | 161.38 | 0.00 | 161.38 | rejected | 04f4c92b-aaef-49e5-8507-a14e75ff8fe7 | not_settled |
| YYZ12946 | 1292084855039 | 1060916867393536 | 2021-06-09 | 2021-06-09T06:29:02Z | BUY | ETHUSD | 0.59274392 | 2530.6037886 | 1500.00 | 0.00 | 1500.00 | not_settled |
Day 2 Example File: From: 2021-06-10T00:15:00Z
| Account ID | Client Order ID | Execution ID | Trade Date | Execution Time | Side | Symbol | Last Quantity | Last Price | Notional | Fees | Total | TPJ Status | TPJ ID | TPJ Settled |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| YYZ08849 | 1296023955039 | 21060921000862660 | 2021-06-10 | 2021-06-10T14:25:01Z | BUY | BTCUSD | 0.00028445 | 35155.43 | 10.00 | 0.00 | 10.00 | completed | e9b98741-5739-4713-aa0d-aa06c14d7d2e | completed |
| YYZ08879 | 1292006035039 | 1060921523857408 | 2021-06-10 | 2021-06-10T12:26:16Z | BUY | BTCUSD | 0.0000283 | 35341.881976 | 1.00 | 0.00 | 1.00 | completed | 130d6dd8-a573-4293-891d-60ffc0b4d105 | completed |
| YYZ07972 | MANUAL_ADJUSTMENT | 1060917692491776 | 2021-06-09 | 2021-06-10T06:30:00Z | WITHDRAWAL | USD | 161.38 | 161.38 | 161.38 | completed | 04f4c92b-aaef-49e5-8507-a14e75ff8fe7 | completed | ||
| YYZ12946 | MANUAL_ADJUSTMENT | 1060916867393536 | 2021-06-09 | 2021-06-10T06:30:00Z | WITHDRAWAL | USD | 1500.00 | 1500.00 | 1500.00 | completed | b9060fba-a6f6-4734-a59d-2717bccf6994 | completed | ||
| YYZ12946 | MANUAL_ADJUSTMENT | MANUAL_ADJUSTMENT | 2021-06-10 | 2021-06-10T06:31:00Z | WITHDRAWAL | USD | 200.00 | 200.00 | 200.00 | completed | 2554aee9-a422-49fb-a934-b87f9ccef87e | completed |
In order to facilitate your buying power management, Bakkt also has an Aged TPJ File that keeps track of all unsettled TPJs. This alleviates the need for your system to keep track of unsettled TPJs from day to day.
Net Settlement
The Net Settlement report applies exclusively to clients who are using their own fiat onramp solutions independently. For these clients, Bakkt provides a daily net settlement report to facilitate accurate reconciliation and settlement of transactions.
Daily Net Settlement Report
Each day, Bakkt generates a critical file for the period from 9 AM CT of the previous day to 9 AM CT of the current day. The file indicates the beginning and ending times for the transactions included in the net settlement, along with the net money that needs to be settled between Bakkt and the client who is using Bakkt execution services for daily settlements.
- Net Settlement Report: This file contains detailed transaction data for all crypto executions within the settlement window. A summary of the Net Settlement will appear at the top of the file. Below that data will confirm that all listed coin executions have been cleared, with the assets now reflecting in the customer's holdings. This document is vital for cross-verifying transaction reconciliation between your system and Bakkt.
Each day, your team will net settle funds using a wire transfer. The net settlement summary file will be emailed to your finance team and the Bakkt Operations team to facilitate the daily net settlement process. We request you to provide an appropriate email distribution list to ensure the right team members are looped into these communications. Any discrepancies identified will be collaboratively resolved by our teams before finalizing the settlement.
Start-of-Day Settlement Report Data Layout
The net settlement file will be uploaded to the eod_settlement directory in your S3 bucket.
The file name convention is as follows: DD_MM_YYYY_NET_SETTLEMENT_<Correspondent code>
| Settlement Detail Fields | Definitions |
|---|---|
| From | Beginning time stamp of the settlement window. |
| To | End time stamp of the settlement window. |
| Net Settlement | USD value of what is owed after the 9 AM cutoff. Positive values mean the client owes Bakkt. Negative values mean Bakkt owes the client. |
| Account ID | Client's unique Account ID for the customer's account. |
| Client Order ID | Order ID sent with crypto order. |
| Execution ID | Unique identifier sent in execution report. Execution IDs are often numbers, but can also be alpha-numeric. |
| Trade Date | Date part of the Execution Timestamp. |
| Execution Time | UTC time of execution/fill. |
| Side | Text string with Buy or Sell for trades and DEPOSIT and WITHDRAWAL for manual adjustments. |
| Symbol | Crypto symbol for trade (i.e. BTC). |
| Last Quantity | Quantity filled for corresponding Execution ID. |
| Last Price | Price where execution was filled. |
| Notional | Notional Value of the fill (i.e. Last Price * Last Quantity). |
| Fees | Trade fee in USD, where applicable. |
| Total | Total cost of the execution (Notional + Fees). |
| Transaction Type | This is the category of the transaction type. They include the following: CLIENT_PURCHASE, CLIENT_SALE, CLIENT_ALLOCATION_SALE, CLIENT_ALLOCATION_PURCHASE, and MANUAL_ADJUSTMENT |
| Transaction ID | Internal transaction ID. |
| Client Transaction ID | The ID that the client used to create the allocation request. This will be blank for all single trade executions. |
| Batch Transaction ID | The ID that the client used to create the batch of allocations that included this allocation. This will be blank for all single trade executions. |
Like an equity trade reconciliation, you can use the settlement detail file to reconcile all the customer trade executions you have in your system vs. the executions that Bakkt knows have happened.
Aged TPJ File
Bakkt will place an Aged TPJ file into client's S3 buckets that will contain the full list of TPJ's that have failed and continue to fail. This file will contain ALL of the unsuccessful TPJ's that your system needs to use to adjust buying power.
For clients utilizing Bakkt's fiat onramp service, we call for cash using a mechanism called Third Party Journal (TPJ). After a trade has been filled, the Bakkt system will call for cash to satisfy the trade. If that call for cash fails, our system will flag it as "Not Settled" in the Execution Confirm file. These unsettled transactions can happen due to the timing of fund availability (e.g., ACH (Automated Clearing House) sent from bank, but not yet received, Funds from a sell equity trade have not settled, etc.). They can also happen if the user was allowed to trade without having funds available. It is important that your operations team review these aged TPJ's to resolve them in a timely manner. The Bakkt system will retry these unsettled trades twice a day at 6:00 AM CT and 5:00 PM CT and they will settle if the money comes into the account.
Twice a day, Bakkt will generate an Aged TPJ file that will include all the unsettled TPJ's for a client's customers. The aged TPJ reports will be generated at 9:30 AM CT and 7:30 PM CT. They will be placed in the client's S3 bucket under the sub directory named tpj_aging. This file should be used by your operations team to identify the failed cash calls for trades so you can identify the cause and resolve the failed payment. Any unsettled trades that exist after 30 days will be written off from the client's portion of the revenue share in the subsequent month.
In addition, there is an Official SOD Bakkt TPJ aging file that is put into the sub directory named sod_tpj_aging. You will find an official tpj aging file in your S3 bucket at approximately 5PM CT. This will run at the same time as your execution confirm file, described in that document. Use the Official SOD Bakkt TPJ aging file to adjust customer buying power based on these unsettled trades.
File Name Convention
For the SOD file:
- Bakkt FIAT -
sod_tpj_aging/aged_bakkt_tpj_{correspondent_code}_YYYYMMDD.csv - Apex FIAT -
sod_tpj_aging/Aged_tpj_{correspondant_code}_YYYYMMDD-HHMMSS_UTC.csv
For the unsettled TPJ file generated twice daily:
tpj_aging/aged_bakkt_tpj_{correspondent_code}_YYYYMMDD-HHMMSSUTC.csv
Timestamps in the file will be in ISO 8601 format (e.g. 2019-10-12T07:20:50.523Z).
Field Descriptions
| Fields | Description |
|---|---|
| hours_old | This field quantifies the total hours that have elapsed since the inception of the first TPJ attempt. |
| manual_retries | This field quantifies the number of times Bakkt has tried to pull the funds for this trade. |
| tpj_reason | This field describes the reason that the TPJ failed. Note that this comes from Bakkt marketplace. |
| account | This is the 8-character Client's Account ID for the failed TPJ. |
| direction_from_tpj_error | This field describes the direction of TPJ money movement that failed. WITHDRAWAL means that the customer bought and owes money for that crypto purchase. DEPOSIT means that the customer sold and Bakkt owes the customer money for that crypto sale. Deposits typically will only fail if the account has been closed at Bakkt for some reason. |
| amount_from_tpj_error | This is the USD amount that Bakkt Marketplace has tried to TPJ. |
| symbol | This is the crypto symbol/coin that was executed and resulted in the failed TPJ. |
| side | This is the side of the execution that resulted in the failed TPJ. (i.e., BUY/SELL) |
| last_price | This is the execution price of the execution that resulted in the failed TPJ. |
| last_qty | This is the quantity of coin that was executed that resulted in the failed TPJ. |
| notional | This is the notional value of the execution that resulted in the failed TPJ. |
| execution_time | This field describes the execution time when the order took place and then resulted in the failed TPJ. |
| tpj_pending_tpj_id | This is an internal field used by Bakkt to know the ID that was used when trying to pull cash from the Bakkt TPJ service. |
| trade_date | This field is the process date for the execution that resulted in the failed TPJ. |
| execution_id | This field is the execution ID for the execution that resulted in the failed TPJ. Note that Excel can corrupt this number when it is all numeric. We plan to put a character at the beginning of these numbers to prevent that behavior. |
| customer_transaction_id | This is the 36-character account GUID for the customer transaction in the Bakkt transaction DB. |
| batch_transaction_id | The ID that the client used to create the batch of allocations that included this allocation. This will be blank for all single trade executions. |
| client_transaction_Id | The ID that the client used to create the allocation request. This will be blank for all single trade executions. |
| client_order_id | This is the original Client Order ID that the client system sent which resulted in the execution and then resulted in the failed TPJ. |
| estimated_account_position | This is the total coin value in USD for all coins that are in the customer's account. |
| record_type | TPJ update for Execution, TPJ update for allocation. |
Aged TPJ Example File
| hours_old | manual_retries | tpjd_reason | account | direction_from_tpj_error | amount_from_tpj_error | amount_available | amount_extra | symbol | side | last_price | last_qty | notional | execution_time | tpj_pending_tpj_id | trade_date | execution_id | customer_transaction_id | client_order_id | estimated_account_position |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 24 | 2 | insufficient funds | XXXX | WITHDRAWAL | -3 | 0 | -3 | SHIBUSD | BUY | 0.00002195 | 136674.25968109 | 3 | 2022-03-15 14:33:15.797116+00:00 | XXXX | 2022-03-15 | XXXX | XXXX | XXXX | 88 |
| 38.8 | 3 | insufficient funds | XXXX | WITHDRAWAL | 5 | 2.22 | -2.78 | ETHUSD | BUY | 2628.75716655 | 0.00190204 | 5 | 2022-03-14 23:44:20.653214+00:00 | XXXX | 2022-03-14 | XXXX | XXXX | XXXX | 0 |
| 82.8 | 5 | insufficient funds | XXXX | WITHDRAWAL | 1,000.00 | 201 | -799 | SOLUSD | BUY | 83.24368213 | 12.01292368 | 1000 | 2022-03-13 03:46:27.735367+00:00 | XXXX | 2022-03-13 | XXXX | XXXX | XXXX | 99 |
| 1770.40 | 105 | insufficient funds | XXXX | WITHDRAWAL | -4 | 0 | -4 | BTCUSD | BUY | 48072.61747691 | 0.00008321 | 4 | 2022-01-01 20:06:42.019316+00:00 | XXXX | 2022-01-02 | XXXX | XXXX | XXXX | 1 |
Daily Coin Transfers
In order to view cryptocurrency transfers occurring in investor accounts, Bakkt provides daily Coin Transfer files to clients in their Amazon Web Service (AWS) Simple Storage Service (S3) buckets. Each Coin Transfer file contains a list of investor accounts with current status for all crypto coin transfers at the time the report runs. If a transfer is not in a terminal state (e.g., COMPLETE, CANCELLED, or REJECTED) by the time the report runs, a record in the Coin Transfer file provides details that include the latest status. Once the transfer reaches a terminal status, the record includes the final terminal state in the Coin Transfer file. Transfers may take over an hour to complete, so a transfer may report a non-terminal status on one day with the expectation that the transfer reaches the terminal status on the next day. Clients may use this file to reconcile their systems' coin transfers versus Bakkt coin transfers.
File Name Convention
CorrespondentCode_YYYYMMDD-HHMMSS_coin_transfers.csv- (e.g.,
XYYZ_20221201-164503_coin_transfer.csv).
Field Descriptions
| Field | Description |
|---|---|
| account | The unique account identification number for the investor's account (e.g., XYZ12345) |
| created_at | The date/time in UTC of the transfer creation |
| apexcryptotransferid | The UUID that Bakkt assigns to the transfer transaction |
| client_transaction_id | The UUID that goes with all withdrawal requests; blank for deposits |
| currency | The coin symbol for the transferring cryptocurrency coin |
| quantity | The quantity of the sending or receiving coin |
| type | The coin transfer type (e.g., WITHDRAWAL or DEPOSIT) |
| feeestimateid | The ID for the estimated fees for the associated withdrawal; blank for deposits |
| fee | The fee for the withdrawal in coin transferring from the investor's account adding to the quantity of transferring coin; only coin withdrawals incur fees |
| totalquantity | The total amount of coin withdrawing or depositing to the investor's account |
| usdrate | The coin price at the time of transfer to calculate the estimated fee in USD and compare to sending transactional limits |
| receive_address | For a WITHDRAWAL, this is the wallet address the investor specifies for the destination of the coin that is withdrawing and transferring out of the account; for a DEPOSIT, this is the wallet address receiving the funds (i.e., the investor's receiving address at Bakkt) |
| kytriskscore | The risk score for the transaction from 0-10 to develop the decision; contact the Bakkt Compliance team with additional questions |
| kytdecision | The decision for allowing the transaction to complete (e.g., APPROVED or DENIED) |
| block_chain_hash | The hash code for the send/receive transaction found on the blockchain |
| modified_at | The last modification date/time for the transaction |
| status | The current status of the transaction (e.g., PENDING, IN_PROGRESS, COMPLETE, REJECTED, FAILED, ACCEPTED, CANCELLED) |
| selfHosted | This is a boolean field if true Travel Rule is not applicable |
| recipientFamilyName | This travel rule eligible field requires the last name of the recipient |
| recipientGivenName | This travel rule eligible field requires the first name of the recipient |
| vaspName | Virtual Asset Service Provider, is a required field for a travel rule eligible transaction |
Coin Transfer Example Report
| created_at | apexcryptotransferid | client_transaction_id | account | currency | quantity | type | feeestimateid | fee | totalquantity | usdrate | receive_address | kyt_id | kytdecision | block_chain_hash | modified_at | status |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2021-12-15 12:53:04.430781+00 | d6adf350-01f8-469f-ab45-e36ca34aa285 | 9af05004-0000-0000-0000-000000000000 | BTC | 0.0001 | DEPOSIT | 0 | 0 | 0 | 2MvB5eFbnvQXc3oLmBMfhnbUzv43fkDQNwM | ce3f21ed-83f7-426f-9ff2-8221e509cd2d | APPROVED | 8f68c2df9614137d11766992367fe6fec02748c9a62607e1e8f2d1e30049d589 | 2021-12-15 12:54:43.182733+00 | COMPLETE | ||
| 2021-12-13 21:13:15.86305+00 | NULL | 9af05004-0000-0000-0000-000000000000 | BTC | 0.001 | DEPOSIT | 0 | 0 | 0 | NULL | 30bef9c2-ae1c-420b-8a70-f0f8a84057bc | APPROVED | f75f30b87d62dabfa00d9150830ff8fc4904bd9c778641a60be9a4b86bc9f0a9 | 2021-12-13 21:14:09.789642+00 | IN_PROGRESS | ||
| 2021-12-14 07:49:46.681364+00 | f46ce2b6-823f-492d-b8b3-a8ec7d3f6a58 | 17d22415-ed80-4000-8b09-5b4efa28b407 | 9e60be23-fc3c-4b8a-836c-c1cb76d7c125 | LTC | 0.001 | WITHDRAWAL | 84bddd31-369f-4d6f-8381-4ed2bfea2c66 | 0.72 | 0.00506432 | 145.1 | string | todo | todo | 2021-12-14 07:49:46.713966+00 | REJECTED | |
| 2021-12-14 12:34:55.52743+00 | e684155d-3f43-41de-b1f9-70cf92486d61 | 17d22415-ed80-4000-8b09-5b4efa28b409 | 9e60be23-fc3c-4b8a-836c-c1cb76d7c125 | LTC | 0.1 | WITHDRAWAL | 729bea03-7e88-4a63-b66f-31b3569f38be | 0.72 | 0.10483151 | 149.09 | string | todo | todo | 2021-12-14 12:34:56.625118+00 | IN_PROGRESS |
Cash Activity
For clients using our fiat onramp services, Bakkt will generate a Cash Activity report. This report will contain every single fiat transaction that impacted the customers fiat balance.
Report Name Format
{partnerName}_CashActivityReport_mm-dd-yy.csv
Field Descriptions
- Amount: The transaction amount
- Transaction Date: Date and time the transaction was completed
- Transaction Id: Unique Transaction ID generated by Bakkt
- Partner Transaction Ref: Unique Transaction ID specified by partner to a transaction request
- Fiat Transaction Type: Type of transaction (DEPOSIT, WITHDRAW, DEBIT, CREDIT, DEPOSIT_RETURN, ACH_RETURN_FEE)
- Instrument Type: Type of money movement instrument (ACH, WIRE, TPJ, DEBIT_CARD, PARTNER_WRITE_OFF, BAKKT_WRITE_OFF, DECEASED_PARTY, MANUAL_ADJUSTMENT)
- Status: Transaction status (PENDING, COMPLETED, DECLINED, CANCELLED)
Cash Activity Example Report
| Partner Transaction Ref | Transaction Id | Partner Party Ref | Amount | Fiat Transaction Type | Transaction Date | Instrument Type | Status | ACH Return Code |
|---|---|---|---|---|---|---|---|---|
| f3b20907-6cff-426d-9a2d-a86af7912747 | 11476483-5db7-4d31-9750-52fc5bece9aa | c5809abd-2363-4434-9293-3fac7110296c | 10 | CREDIT | 2023-05-13T16:30:12.952Z | TPJ | COMPLETED | |
| 53843eb2-9bef-4b32-b65d-6f197744c772 | 14c9977f-1c97-407b-b56e-d43c7021e3bb | beb27d17-4525-467c-aa61-f566515ba93e | 25 | DEPOSIT | 2023-05-13T16:30:12.952Z | ACH | PENDING | |
| 8a934c4b-68ca-4c21-aa4c-fee067dacac2 | 169e6e14-1691-44ab-8ae9-9a634b7a062e | cd25b091-7ae9-411c-89de-e75de4cdfa46 | 10 | CREDIT | 2023-05-13T16:30:12.952Z | TPJ | COMPLETED | |
| b234d1b9-7c04-4e19-97f5-687c40d5efa3 | 2d9a024b-b82e-4e6f-9ba8-e1440ad65c71 | e3e5ea1e-949e-48cc-9f27-c6516528535e | 20 | DEPOSIT | 2023-05-13T16:30:12.952Z | ACH | PENDING | |
| 08d83131-e6a3-47a4-a0c4-c7a909e831ad | 43eddfbb-dd41-4dac-8f7a-432f12c9d953 | a08d2964-60df-4325-b5d4-d71dab22b29a | 10000 | CREDIT | 2023-06-01T18:32:24.448Z | WIRE | PENDING | |
| d296e67e-8669-49fc-b55f-a83c116bbccd | 9cb0142f-dfe7-4d02-9f0b-8503edf67658 | 6bed72bc-2339-415a-ba32-aa32ea90cb43 | 200 | DEPOSIT | 2023-06-01T18:02:56.392Z | ACH | CANCELLED | |
| dd7e96b5-0961-4752-85ae-e7a0a03f6a34 | e415d3f9-edeb-4723-8a82-f9e19cc2c51c | 43675708-2913-4d58-aba4-08b66d98db40 | 16 | DEBIT | 2025-05-08T13:19:43.186Z | MANUAL_ADJUSTMENT | COMPLETED |
Cash Balance
For clients using our fiat onramp services, Bakkt will generate a Cash Balance report. This report will include all settled and unsettled amount.
Report Name Format
{partnerName}_CashBalanceReport_mm-dd-yy.csv
Field Descriptions
- Partner Transaction Ref: Unique Transaction ID specified by partner to a transaction request
- Unsettled Amount: Amount that is Pending and has not settled with Bakkt Bank
- Settled Amount: Amount that is available for the consumer to use
Cash Balance Example Report
| Partner Party Ref | Unsettled Amount | Settled Amount |
|---|---|---|
| f8f66b40-ba9e-40e2-974f-55f3c5c04020 | -11 | 22 |
| f08c76d6-dfa8-4ef0-bbbd-127126a9909a | -25 | 90 |
| 934f1d88-fb50-4a22-a20c-6339b7d61abc | -80 | 160 |
| fb9072ea-e1c4-4170-adcb-e18ff6860fcb | -10 | 20 |
Updated 3 days ago
