Confused about transaction/split

Niranjan Rao nhrdls at gmail.com
Sun May 24 23:56:49 EDT 2026


Thank you John. I made bit more progress, ended up 
uncompressing/expanding my sample file and then adding values like 1 or 
2 and then comparing the results with previous entries.

It started working properly after I changed the transaction currency 
from commodity to actual currency. I am still struggling with another 
entry I want to add, but your email and my research will hopefully put 
me on right track.

Regards,

Niranjan

On 5/24/26 20:22, John Ralls wrote:
> Niranjan,
>
> The transaction carries the date, description, and the CURRENCY that 
> the transaction will be balanced in. In theory that doesn’t have to be 
> either the currency in which the stock is priced nor the currency of 
> the account from which you transfer the payment, but the more 
> currencies that are involved the harder it is for GnuCash’s balancing 
> code to get it right, so everything works best if there’s only one 
> currency.
>
> Before you create the transaction you must already have created the 
> stock’s commodity and an account of type STOCK or MUTUAL FUND 
> denominated in that commodity. That account should be parented with an 
> account of either type ASSET or type BANK denominated in the currency 
> in which the stock trades. In GnuCash debits are positive numbers and 
> credits are negative numbers. You’ll create a split in that account 
> with the number of shares as the amount and the value as the extended 
> value (i.e. amount * price) in the transaction currency. You’ll create 
> a second split in the cash account with the amount set to the negative 
> equivalent in the cash account’s currency and value as the negative 
> extended value in the transaction currency.
>
> So the simplest example is all currencies are, say, INR.
> Transaction.Date = 2026-05-31, Transaction.Description = “Buy XYZ 100 
> @ 25.00 INR/share”, Transaction.Currency = INR
> Split1.Account = /Assets/Investment/Broker/Stocks/XYZ, Split1.Amount = 
> 100, Split1.Value = 2500.00
> Split2.Account = /Assets/nvestment/Broker/Cash, Split2.Amount = 
> -2500.00, Split2.Value = -2500.00.
>
> A more complicated example where the stock and cash account are still 
> in INR but the transaction currency is USD. Today’s exchange rate is 
> .010 USD = 1 INR so it will look like
>
> Transaction.Date = 2026-05-31, Transaction.Description = “Buy XYZ 100 
> @ 25.00 INR/share”, Transaction.Currency = USD
> Split1.Account = /Assets/Investment/Broker/Stocks/XYZ, Split1.Amount = 
> 100, Split1.Value = 25.00
> Split2.Account = /Assets/nvestment/Broker/Cash, Split2.Amount = 
> -2500.00, Split2.Value = -25.00.
>
> Regards,
> John Ralls
>
>> On May 24, 2026, at 12:23, Niranjan Rao <nhrdls at gmail.com> wrote:
>>
>> Greetings,
>>
>> I am trying to add a shares purchase transaction. I've account for 
>> given stock/commodity and a cash account from which money will be 
>> transferred
>>
>> As I understand one part of the split should come from cash which 
>> will be currency or dollar value. Other split will be number of 
>> shares purchased for that money.
>>
>> I am trying to use API (through my Java library) to create a 
>> transaction and not able to get it right. I am especially getting 
>> confused about the value and amount parts. I am not sure which field 
>> will represent the quantity or number of shares purchased.
>>
>> Here is the general flow I am calling from Java
>>
>>
>> Create transaction - xaccMallocTransaction
>>
>> Set currency as my commodity of stock - xaccTransSetCurrency
>>
>> Create split xaccTransSetCurrency
>>
>>
>> Set appropriate account and parent xaccSplitSetAccount, 
>> xaccSplitSetParent
>>
>>
>> I now have three data fields available - total amount in dollar  
>> (moneySpent), number of shares purchased (quantity) and price  
>> (price) at which they were purchased. I tried various combinations of 
>> xaccSplitSetAmount, xaccSplitSetValue, xaccSplitSetSharePriceAndAmount
>>
>>
>> But not matter what I do, I always get imbalance record or price gets 
>> calculated wrong. In general split entry is wrong. Mirroring split 
>> from cash account looks correct. At least that account shows the 
>> entry the way it should be.
>>
>> Can you please help me with the right method calls and parameters I 
>> need to pass get the transaction right. I've intentionally used 
>> slightly different variable names in the email so as to avoid the 
>> confusion with the actual parameter names used in header files.
>>
>>
>> Regards,
>>
>> Niranjan
>>
>>
>> _______________________________________________
>> gnucash-devel mailing list
>> gnucash-devel at gnucash.org
>> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gnucash.org/pipermail/gnucash-devel/attachments/20260524/9312885a/attachment.htm>


More information about the gnucash-devel mailing list