diff --git a/container/src/hledger-flow/accounts/btcpayserver/btcpayserver-shared.bash b/container/src/hledger-flow/accounts/btcpayserver/btcpayserver-shared.bash index f188f68..a4ebacd 100755 --- a/container/src/hledger-flow/accounts/btcpayserver/btcpayserver-shared.bash +++ b/container/src/hledger-flow/accounts/btcpayserver/btcpayserver-shared.bash @@ -49,13 +49,15 @@ function btcpayserver::print_warning() # # TL;DR: # +# - As of v2.2.0, *MUST* install the "Legacy Invoice Export" plugin. TODO: use v2.2.0 format w/out plugin +# # - *MUST* export both "Legacy Invoice" report and "Wallets" report for an accurate balance. # * The "Legacy Invoice" report currently does *not* include any outgoing txs (refunds or transfers). # # WARNING: # -# - All outgoing txs do *not* account for fees (they are lumped in with the total). -# * Until upstream changes this, any fees must be separated manually w/ custom rules. +# - If using a watch-ony wallet, consider accounting entirely here (via btcpayserver) or +# entirely via that other wallet (e.g., electrum). Mixing the two may cause tax accounting issues. # # CAUTION: # @@ -119,16 +121,19 @@ function btcpayserver::legacy() printf $16 OFS # InvoiceCurrency printf $17 OFS # InvoiceDue printf $18 OFS # InvoicePrice - printf $19 OFS # InvoiceItemCode + printf $19 OFS # InvoiceTaxIncluded + printf $20 OFS # InvoiceTip + printf $21 OFS # InvoiceSubtotal + printf $22 OFS # InvoiceItemCode # TODO: if description contains comma(s)? - printf $20 OFS # InvoiceItemDesc + printf $23 OFS # InvoiceItemDesc - printf $21 OFS # InvoiceFullStatus - printf $22 OFS # InvoiceStatus - printf $23 OFS # InvoiceExceptionStatus - printf $24 OFS # BuyerEmail - printf $25 OFS # Accounted + printf $24 OFS # InvoiceFullStatus + printf $25 OFS # InvoiceStatus + printf $26 OFS # InvoiceExceptionStatus + printf $27 OFS # BuyerEmail + printf $28 OFS # Accounted # WARNING: appears to be always IN (see notes regarding "Wallets" report) printf "IN" OFS # Direction @@ -176,6 +181,9 @@ function btcpayserver::wallets() if ($6 !~ /^-/) next + # Strip sign from amount (using direction instead) + sub(/^-/, "", $6) + # Date (ReceivedDate w/ local timezone added) sub(/ /, "T", $1) # HACK: makes arg-friendly by removing space cmd = "date \"+%F %T %z\" --date="$1 | getline date @@ -197,14 +205,25 @@ function btcpayserver::wallets() printf $2 OFS # Crypto (CryptoCode) # BalanceChange (Paid) - printf("%.8f", $6); printf OFS + # NOTE: must provide as subtotal, so subtract fee + printf("%.8f", $6 - $7); printf OFS + + # Fee (NetworkFee) + printf("%.8f", $7); printf OFS - printf OFS # (NetworkFee) printf OFS # (ConversionRate) - printf OFS # (PaidCurrency) - printf OFS # (InvoiceCurrency) + + # FeeRate (PaidCurrency) + printf("%.3f", $8); printf OFS + + # Rate (XXX) (InvoiceCurrency) + printf("%.3f", $9); printf OFS + printf OFS # (InvoiceDue) printf OFS # (InvoicePrice) + printf OFS # (InvoiceTaxIncluded) + printf OFS # (InvoiceTip) + printf OFS # (InvoiceSubtotal) printf OFS # (InvoiceItemCode) printf OFS # (InvoiceItemDesc) printf OFS # (InvoiceFullStatus) @@ -223,7 +242,7 @@ function btcpayserver::wallets() function btcpayserver::parse() { - lib_preprocess::test_header "ReceivedDate,StoreId,OrderId,InvoiceId,InvoiceCreatedDate,InvoiceExpirationDate,InvoiceMonitoringDate,PaymentId,Destination,PaymentType,CryptoCode,Paid,NetworkFee,ConversionRate,PaidCurrency,InvoiceCurrency,InvoiceDue,InvoicePrice,InvoiceItemCode,InvoiceItemDesc,InvoiceFullStatus,InvoiceStatus,InvoiceExceptionStatus,BuyerEmail,Accounted" \ + lib_preprocess::test_header "ReceivedDate,StoreId,OrderId,InvoiceId,InvoiceCreatedDate,InvoiceExpirationDate,InvoiceMonitoringDate,PaymentId,Destination,PaymentType,CryptoCode,Paid,NetworkFee,ConversionRate,PaidCurrency,InvoiceCurrency,InvoiceDue,InvoicePrice,InvoiceTaxIncluded,InvoiceTip,InvoiceSubtotal,InvoiceItemCode,InvoiceItemDesc,InvoiceFullStatus,InvoiceStatus,InvoiceExceptionStatus,BuyerEmail,Accounted" \ && btcpayserver::legacy lib_preprocess::test_header "Date,InvoiceId,OrderId,Category,PaymentMethodId,Confirmed,Address,PaymentCurrency,PaymentAmount,PaymentMethodFee,LightningAddress,InvoiceCurrency,InvoiceCurrencyAmount,Rate" \ @@ -238,7 +257,9 @@ function btcpayserver::parse() lib_preprocess::test_header "Date,InvoiceId,State,AppId,Product,Quantity,CurrencyAmount,Currency" \ && btcpayserver::sales - lib_preprocess::test_header "Date,Crypto,TransactionId,InvoiceId,Confirmed,BalanceChange" \ + # TODO: don't hardcode USD (upstream should make the currency in "Rate (XXX)" into a separate column). + #lib_preprocess::test_header "Date,Crypto,TransactionId,InvoiceId,Confirmed,BalanceChange,Fee,FeeRate,Rate (USD)" \ + lib_preprocess::test_header "Date,Crypto,TransactionId,InvoiceId,Confirmed,BalanceChange,Fee,FeeRate" \ && btcpayserver::wallets } diff --git a/container/src/hledger-flow/accounts/btcpayserver/btcpayserver-shared.rules b/container/src/hledger-flow/accounts/btcpayserver/btcpayserver-shared.rules index 1140695..c07be2b 100644 --- a/container/src/hledger-flow/accounts/btcpayserver/btcpayserver-shared.rules +++ b/container/src/hledger-flow/accounts/btcpayserver/btcpayserver-shared.rules @@ -16,7 +16,7 @@ # along with this program. If not, see . # TODO: currently, only supports "Legacy Invoice" and "Wallets" format (w/ additional custom columns) -fields ReceivedDate,StoreId,OrderId,InvoiceId,InvoiceCreatedDate,InvoiceExpirationDate,InvoiceMonitoringDate,txid,index,Destination,PaymentType,CryptoCode,Paid,NetworkFee,ConversionRate,PaidCurrency,InvoiceCurrency,InvoiceDue,InvoicePrice,InvoiceItemCode,InvoiceItemDesc,InvoiceFullStatus,InvoiceStatus,InvoiceExceptionStatus,BuyerEmail,Accounted,direction,subaccount +fields ReceivedDate,StoreId,OrderId,InvoiceId,InvoiceCreatedDate,InvoiceExpirationDate,InvoiceMonitoringDate,txid,index,Destination,PaymentType,CryptoCode,Paid,NetworkFee,ConversionRate,PaidCurrency,InvoiceCurrency,InvoiceDue,InvoicePrice,InvoiceTaxIncluded,InvoiceTip,InvoiceSubtotal,InvoiceItemCode,InvoiceItemDesc,InvoiceFullStatus,InvoiceStatus,InvoiceExceptionStatus,BuyerEmail,Accounted,direction,subaccount # NOTE: BTCPayServer exports to localtime date-format %Y-%m-%d %H:%M:%S %z @@ -41,43 +41,78 @@ if %Accounted ^[^a-z]*$ # NOTE: all IN assumed to be INCOME # Default comment -comment created:%InvoiceCreatedDate, expired:%InvoiceExpirationDate, store_id:%StoreId, order_id:%OrderId, invoice_id:%InvoiceId, type:%PaymentType, to_address:%Destination, txid:%txid, index:%index, status:%InvoiceStatus, direction:%direction, taxed_as:INCOME +comment created:%InvoiceCreatedDate, expired:%InvoiceExpirationDate, store_id:%StoreId, order_id:%OrderId, invoice_id:%InvoiceId, invoice_tax:%InvoiceTaxIncluded, invoice_tip:%InvoiceTip, invoice_subtotal:%InvoiceSubtotal, type:%PaymentType, to_address:%Destination, txid:%txid, index:%index, status:%InvoiceStatus, direction:%direction, taxed_as:INCOME # Comment w/ item code if %InvoiceItemCode [a-z0-9] - comment created:%InvoiceCreatedDate, expired:%InvoiceExpirationDate, store_id:%StoreId, order_id:%OrderId, invoice_id:%InvoiceId, item_code:%InvoiceItemCode, type:%PaymentType, to_address:%Destination, txid:%txid, index:%index, status:%InvoiceStatus, direction:%direction, taxed_as:INCOME + comment created:%InvoiceCreatedDate, expired:%InvoiceExpirationDate, store_id:%StoreId, order_id:%OrderId, invoice_id:%InvoiceId, invoice_tax:%InvoiceTaxIncluded, invoice_tip:%InvoiceTip, invoice_subtotal:%InvoiceSubtotal, item_code:%InvoiceItemCode, type:%PaymentType, to_address:%Destination, txid:%txid, index:%index, status:%InvoiceStatus, direction:%direction, taxed_as:INCOME # Comment w/ buyer email if %BuyerEmail [a-z0-9] - comment created:%InvoiceCreatedDate, expired:%InvoiceExpirationDate, store_id:%StoreId, order_id:%OrderId, invoice_id:%InvoiceId, email:%BuyerEmail, type:%PaymentType, to_address:%Destination, txid:%txid, index:%index, status:%InvoiceStatus, direction:%direction, taxed_as:INCOME + comment created:%InvoiceCreatedDate, expired:%InvoiceExpirationDate, store_id:%StoreId, order_id:%OrderId, invoice_id:%InvoiceId, invoice_tax:%InvoiceTaxIncluded, invoice_tip:%InvoiceTip, invoice_subtotal:%InvoiceSubtotal, email:%BuyerEmail, type:%PaymentType, to_address:%Destination, txid:%txid, index:%index, status:%InvoiceStatus, direction:%direction, taxed_as:INCOME # Comment w/ both item code + buyer email if %InvoiceItemCode [a-z0-9] & %BuyerEmail [a-z0-9] - comment created:%InvoiceCreatedDate, expired:%InvoiceExpirationDate, store_id:%StoreId, order_id:%OrderId, invoice_id:%InvoiceId, item_code:%InvoiceItemCode, email:%BuyerEmail, type:%PaymentType, to_address:%Destination, txid:%txid, index:%index, status:%InvoiceStatus, direction:%direction, taxed_as:INCOME - -# Comment for "Wallets" export -if %direction ^OUT$ - comment txid:%txid, confirmed:%Accounted, direction:%direction + comment created:%InvoiceCreatedDate, expired:%InvoiceExpirationDate, store_id:%StoreId, order_id:%OrderId, invoice_id:%InvoiceId, invoice_tax:%InvoiceTaxIncluded, invoice_tip:%InvoiceTip, invoice_subtotal:%InvoiceSubtotal, item_code:%InvoiceItemCode, email:%BuyerEmail, type:%PaymentType, to_address:%Destination, txid:%txid, index:%index, status:%InvoiceStatus, direction:%direction, taxed_as:INCOME # # Direction # +# NOTE/TODO: +# +# InvoiceTaxIncluded, InvoiceTip and InvoiceSubtotal are not included +# as new accounts because they are static across rows and treated more +# like tags (i.e., if an invoice is not paid in full in a single tx, +# then these entries will be repeated across rows). + # Default income if %direction ^IN$ account2 income:btcpayserver:%subaccount:%CryptoCode comment2 %ReceivedDate,INCOME,btcpayserver:%subaccount,%CryptoCode,%Paid,%InvoiceCurrency,%PaidCurrency,%InvoiceId -# Default equity transfer +# Default refund +# +# NOTE: +# +# - If the tx is not a refund, use custom rules for account2/comment2 +# * If the tx also not an expense, remove comment tag taxed_as:SPEND +# +# - Since refunds may not be considered taxable events, and since the +# "Wallets" export only includes the market price of the tx at the +# time of sending (refunding), use custom rules to replace the +# sending tx's price to the time of receiving (the income tx). +# +# This way one can "negate" the original income event by "spending" +# the original amount at the original rate (the rate at which the +# invoice was paid): +# +# Example in custom rules (replace "MANUAL_ADJUSTMENT_NEEDED"): +# +# if %direction ^OUT$ +# comment txid:%txid, confirmed:%Accounted, direction:%direction, taxed_as:SPEND +# comment2 %ReceivedDate,SPEND,btcpayserver:%subaccount:%CryptoCode,%CryptoCode,%Paid,USD,MANUAL_ADJUSTMENT_NEEDED,REFUND +# +# - Use different custom rules if your refund type is not the default +# provided option of 'price at the rate the invoice was paid'. +# if %direction ^OUT$ - account2 equity:btcpayserver:%subaccount:deposit:%CryptoCode + account2 expenses:btcpayserver:%subaccount:refunds:%CryptoCode + amount -%Paid %CryptoCode + comment txid:%txid, confirmed:%Accounted, direction:%direction, taxed_as:SPEND + comment2 %ReceivedDate,SPEND,btcpayserver:%subaccount:%CryptoCode,%CryptoCode,%Paid,USD,,REFUND +# TODO: don't hardcode USD (upstream should make the "Rate (XXX)" currency column a separate column). -# TODO: -# -# WARNING: -# -# - All outgoing txs do *not* account for fees (they are lumped in with the total). -# * Until upstream changes this, any fees must be separated manually w/ custom rules. +if %direction ^OUT$ +& %NetworkFee [1-9] + account3 assets:btcpayserver:%subaccount:%CryptoCode + amount3 -%NetworkFee %CryptoCode + account4 expenses:electrum:%subaccount:fees:%CryptoCode + amount4 %NetworkFee %CryptoCode + comment txid:%txid, confirmed:%Accounted, direction:%direction, taxed_as:SPEND + comment3 %ReceivedDate,SPEND,btcpayserver:%subaccount:%CryptoCode,%CryptoCode,%NetworkFee,USD,%PaidCurrency,FEE +# Using comment3 so a comment2 SPEND isn't overwritten (when applicable) +# TODO: don't hardcode USD (upstream should make the "Rate (XXX)" currency column a separate column). # vim: sw=2 sts=2 si ai et diff --git a/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2024/legacy.csv b/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2024/legacy.csv index 9ca040a..ce0aa48 100644 --- a/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2024/legacy.csv +++ b/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2024/legacy.csv @@ -1,5 +1,3 @@ -ReceivedDate,StoreId,OrderId,InvoiceId,InvoiceCreatedDate,InvoiceExpirationDate,InvoiceMonitoringDate,PaymentId,Destination,PaymentType,CryptoCode,Paid,NetworkFee,ConversionRate,PaidCurrency,InvoiceCurrency,InvoiceDue,InvoicePrice,InvoiceItemCode,InvoiceItemDesc,InvoiceFullStatus,InvoiceStatus,InvoiceExceptionStatus,BuyerEmail,Accounted -2025-01-01 11:11:11,STOREXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,PAY_REQUEST_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX2,INVOICEXXXXXXXXXXXXXX2,2025-01-01 12:12:12,2025-01-01 12:12:12,2025-01-01 12:12:12,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2-10,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2,BTC-CHAIN,BTC,0.12345678,0,100000.101,12345.6904,USD,0,12345.69,,,Settled,complete,,alice@bob.email,true -2025-01-01 11:11:11,STOREXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,PAY_REQUEST_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX2,INVOICEXXXXXXXXXXXXXX2,2025-01-01 12:12:12,2025-01-01 12:12:12,2025-01-01 12:12:12,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2-10,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2,BTC-CHAIN,BTC,0.12345678,0,100000.101,12345.6904,USD,0,12345.69,,,Settled,complete,,alice@bob.email, -2024-12-31 22:22:22,STOREXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,PAY_REQUEST_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX1,INVOICEXXXXXXXXXXXXXX1,2024-12-31 23:23:23,2024-12-31 23:23:23,2024-12-31 23:23:23,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1-5,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,BTC-CHAIN,BTC,0.01234567,0,95000.505,1172.840,USD,0,1172.84,product_1,Great Product That You Want #1,Settled,complete,,,true -2024-12-31 22:22:22,STOREXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,PAY_REQUEST_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX1,INVOICEXXXXXXXXXXXXXX1,2024-12-31 23:23:23,2024-12-31 23:23:23,2024-12-31 23:23:23,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1-5,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,BTC-CHAIN,BTC,0.01234567,0,95000.505,1172.840,USD,0,1172.84,product_1,Great Product That You Want #1,Settled,complete,,, +ReceivedDate,StoreId,OrderId,InvoiceId,InvoiceCreatedDate,InvoiceExpirationDate,InvoiceMonitoringDate,PaymentId,Destination,PaymentType,CryptoCode,Paid,NetworkFee,ConversionRate,PaidCurrency,InvoiceCurrency,InvoiceDue,InvoicePrice,InvoiceTaxIncluded,InvoiceTip,InvoiceSubtotal,InvoiceItemCode,InvoiceItemDesc,InvoiceFullStatus,InvoiceStatus,InvoiceExceptionStatus,BuyerEmail,Accounted +2025-08-06 15:08:52,6Hba3EYeVpNaZbDduFrJ2jkKsGF69k83dJJUFNB1haX2,6ZiCU7wv2ATm7RQNda1hPr,2DYE61SvSs9Q1DsfKjXd21,2025-08-06 15:08:39,2025-08-06 15:23:39,2025-08-07 15:23:39,dc132e44e053d9023cf20374aea200850efd1e88de28d1344f5a1343bbc0519f-1,tb1q20fhdv9tvl5rz5vfgnn96hwqhy242yqgfyd6d9,BTC-CHAIN,BTC,0.0006219,0,115131.4,71.600,USD,0,71.6,6.8,0,64.8,,,Settled,complete,,user2@local.domain,true +2025-08-06 15:05:20,6Hba3EYeVpNaZbDduFrJ2jkKsGF69k83dJJUFNB1haX2,RuuupW4i5qXpD9biED4V79,8bZWGbYbKJh3moNwjehdfY,2025-08-06 15:04:54,2025-08-06 15:19:54,2025-08-07 15:19:54,a4174c80d019043eed0227c1b2bedf99f432f5fdb27149595810c8299fb09f9d-0,tb1qvfle8fr3xfhksc5gxuuz486t0rpq4td4hnk4tv,BTC-CHAIN,BTC,0.00007254,0,115118.7,8.351,USD,-0.001,8.35,0.7,1,6.65,,,Settled,complete,,user@local.domain,true \ No newline at end of file diff --git a/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2024/wallets.csv b/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2024/wallets.csv index 8638c0e..8ae66dd 100644 --- a/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2024/wallets.csv +++ b/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2024/wallets.csv @@ -1,4 +1,4 @@ -Date,Crypto,TransactionId,InvoiceId,Confirmed,BalanceChange -2024-12-31 22:22:22,BTC,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,INVOICEXXXXXXXXXXXXXX1,true,0.01234567 -2025-01-01 11:11:11,BTC,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2,INVOICEXXXXXXXXXXXXXX2,true,0.12345678 -2025-02-02 02:02:02,BTC,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX3,,true,-0.00123456 +Date,Crypto,TransactionId,InvoiceId,Confirmed,BalanceChange,Fee,FeeRate,Rate (USD) +2025-08-06 15:05:20,BTC,a4174c80d019043eed0227c1b2bedf99f432f5fdb27149595810c8299fb09f9d,8bZWGbYbKJh3moNwjehdfY,true,0.00007254,0.00015848,112.397,115118.7 +2025-08-06 15:08:52,BTC,dc132e44e053d9023cf20374aea200850efd1e88de28d1344f5a1343bbc0519f,2DYE61SvSs9Q1DsfKjXd21,true,0.00062190,0.00015854,112.439,115131.4 +2025-08-06 15:13:27,BTC,8cbae88fd430eb257960738577bbba7d5be72b3f8799954fa309d288749431ee,,true,-0.00014869,0.00007615,54.007,115199.95 \ No newline at end of file diff --git a/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2025/legacy.csv b/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2025/legacy.csv index ca48276..ce0aa48 100644 --- a/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2025/legacy.csv +++ b/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2025/legacy.csv @@ -1,5 +1,3 @@ -ReceivedDate,StoreId,OrderId,InvoiceId,InvoiceCreatedDate,InvoiceExpirationDate,InvoiceMonitoringDate,PaymentId,Destination,PaymentType,CryptoCode,Paid,NetworkFee,ConversionRate,PaidCurrency,InvoiceCurrency,InvoiceDue,InvoicePrice,InvoiceItemCode,InvoiceItemDesc,InvoiceFullStatus,InvoiceStatus,InvoiceExceptionStatus,BuyerEmail,Accounted -2025-01-01 11:11:11,STOREXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,PAY_REQUEST_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX2,XXXXXXXXXXXXXXXXXXXXX2,2025-01-01 12:12:12,2025-01-01 12:12:12,2025-01-01 12:12:12,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2-10,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2,BTC-CHAIN,BTC,0.12345678,0,100000.101,12345.6904,USD,0,12345.69,,,Settled,complete,,alice@bob.email,true -2025-01-01 11:11:11,STOREXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,PAY_REQUEST_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX2,XXXXXXXXXXXXXXXXXXXXX2,2025-01-01 12:12:12,2025-01-01 12:12:12,2025-01-01 12:12:12,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2-10,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2,BTC-CHAIN,BTC,0.12345678,0,100000.101,12345.6904,USD,0,12345.69,,,Settled,complete,,alice@bob.email, -2024-12-31 22:22:22,STOREXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,PAY_REQUEST_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX1,XXXXXXXXXXXXXXXXXXXXX1,2024-12-31 23:23:23,2024-12-31 23:23:23,2024-12-31 23:23:23,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1-5,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,BTC-CHAIN,BTC,0.01234567,0,95000.505,1172.840,USD,0,1172.84,product_1,Great Product That You Want #1,Settled,complete,,,true -2024-12-31 22:22:22,STOREXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,PAY_REQUEST_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX1,XXXXXXXXXXXXXXXXXXXXX1,2024-12-31 23:23:23,2024-12-31 23:23:23,2024-12-31 23:23:23,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1-5,bc1qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,BTC-CHAIN,BTC,0.01234567,0,95000.505,1172.840,USD,0,1172.84,product_1,Great Product That You Want #1,Settled,complete,,, +ReceivedDate,StoreId,OrderId,InvoiceId,InvoiceCreatedDate,InvoiceExpirationDate,InvoiceMonitoringDate,PaymentId,Destination,PaymentType,CryptoCode,Paid,NetworkFee,ConversionRate,PaidCurrency,InvoiceCurrency,InvoiceDue,InvoicePrice,InvoiceTaxIncluded,InvoiceTip,InvoiceSubtotal,InvoiceItemCode,InvoiceItemDesc,InvoiceFullStatus,InvoiceStatus,InvoiceExceptionStatus,BuyerEmail,Accounted +2025-08-06 15:08:52,6Hba3EYeVpNaZbDduFrJ2jkKsGF69k83dJJUFNB1haX2,6ZiCU7wv2ATm7RQNda1hPr,2DYE61SvSs9Q1DsfKjXd21,2025-08-06 15:08:39,2025-08-06 15:23:39,2025-08-07 15:23:39,dc132e44e053d9023cf20374aea200850efd1e88de28d1344f5a1343bbc0519f-1,tb1q20fhdv9tvl5rz5vfgnn96hwqhy242yqgfyd6d9,BTC-CHAIN,BTC,0.0006219,0,115131.4,71.600,USD,0,71.6,6.8,0,64.8,,,Settled,complete,,user2@local.domain,true +2025-08-06 15:05:20,6Hba3EYeVpNaZbDduFrJ2jkKsGF69k83dJJUFNB1haX2,RuuupW4i5qXpD9biED4V79,8bZWGbYbKJh3moNwjehdfY,2025-08-06 15:04:54,2025-08-06 15:19:54,2025-08-07 15:19:54,a4174c80d019043eed0227c1b2bedf99f432f5fdb27149595810c8299fb09f9d-0,tb1qvfle8fr3xfhksc5gxuuz486t0rpq4td4hnk4tv,BTC-CHAIN,BTC,0.00007254,0,115118.7,8.351,USD,-0.001,8.35,0.7,1,6.65,,,Settled,complete,,user@local.domain,true \ No newline at end of file diff --git a/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2025/wallets.csv b/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2025/wallets.csv index 8638c0e..8ae66dd 100644 --- a/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2025/wallets.csv +++ b/container/src/hledger-flow/accounts/btcpayserver/template/btcpayserver/subaccount-1/1-in/mockup/2025/wallets.csv @@ -1,4 +1,4 @@ -Date,Crypto,TransactionId,InvoiceId,Confirmed,BalanceChange -2024-12-31 22:22:22,BTC,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1,INVOICEXXXXXXXXXXXXXX1,true,0.01234567 -2025-01-01 11:11:11,BTC,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX2,INVOICEXXXXXXXXXXXXXX2,true,0.12345678 -2025-02-02 02:02:02,BTC,TXIDXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX3,,true,-0.00123456 +Date,Crypto,TransactionId,InvoiceId,Confirmed,BalanceChange,Fee,FeeRate,Rate (USD) +2025-08-06 15:05:20,BTC,a4174c80d019043eed0227c1b2bedf99f432f5fdb27149595810c8299fb09f9d,8bZWGbYbKJh3moNwjehdfY,true,0.00007254,0.00015848,112.397,115118.7 +2025-08-06 15:08:52,BTC,dc132e44e053d9023cf20374aea200850efd1e88de28d1344f5a1343bbc0519f,2DYE61SvSs9Q1DsfKjXd21,true,0.00062190,0.00015854,112.439,115131.4 +2025-08-06 15:13:27,BTC,8cbae88fd430eb257960738577bbba7d5be72b3f8799954fa309d288749431ee,,true,-0.00014869,0.00007615,54.007,115199.95 \ No newline at end of file