Currency exchange problem
"For the purposes of report generation, I would recommend that you present the data in the currency of the user's home country. You could present another indicator, if needed, to indicate that a specific transaction was denominated in a foreign currency, where the amount represents the value of the foreign-denominated transaction in the user's home country Currency. For example: Airfare from USA to London: $1,000.00 Taxi from airport to hotel: $100.00 (in £) In terms of your database design, I would recommend not storing the data in any one denomination or reference currency. This would require you to do many more conversions between currencies that is likely to be necessary, and will create additional complexity where in some cases, you will need to do multiple conversions per transaction in and out of your reference currency. I think it will be easier for you to store multiple currencies as themselves, and not in a separate reference currency. I would recommend storing several pieces of information separately for each transaction: This way, you can create a calculated Amount for each transaction that is not in the user's ""home"" currency, whereas you would need to calculate this for all transactions if you used a universal reference currency. You could also get data from an external source if the user has forgotten the conversion rate. Remember that there are always fees and variations in the exchange rate that a user will get for their home country's currency, even if they change money at the same place at two different times on the same day. As a result, I would recommend building in a simple form that allows a user to enter how much they exchanged and how much they got back to calculate the exchange rate. So for example, let's say I have $ 200.00 USD and I exchanged $ 100.00 USD for £ 60.00, and there was a £ 3.00 fee for the exchange. The exchange rate would be 0.6, and when the user enters a currency conversion, your site could create three separate transactions such as: USD Converted to £: $100.00 £ Received from Exchange: £ 60.00 Exchange Fee: £ 3.00 So if the user exchanged currency and then ran a balance report by Currency, you could either show them that they now have $ 100.00 USD and £ 57.00, or you could alternatively choose to show the £ 57.00 that they have as $95.00 USD instead. If you were showing them a transaction report, you could also show the fee denominated in dollars as well. I would recommend storing your balances and transactions in their own currencies, as you will run into some very interesting problems otherwise. For example, let's say you used a reference currency tied to the dollar. So one day I exchange $ 100.00 USD for £ 60.00. In this system I would still have 100 of my reference currency. However, if the next day, the exchange rate falls and $ 1.00 USD is only worth £ 0.55, and I change my £ 60.00 back into USD, I will get approxiamately $ 109.09 USD back for my £ 60.00. If I then go and buy something for $ 100.00 USD, the balance of the reference currency would be at 0, but I will still have $ 9.09 USD in my pocket as a result of the fluctuating currency values! That is why I'd recommend storing currencies as themselves, and only showing them in another currency for convenience using calculations done ""on the fly"" at report runtime. Best of luck with your site!"
What you are doing is barter trade. Most countries [if not all] would tax this on assumed fair value. There are instances where countries may relax this norm in border areas for a small amount.   Barter is not just for gold – one can virtually do this for any goods, i.e. sell garments in exchange for oil, sell electronic chips in exchange for consumer goods, etc. Quite a few business would flourish doing this and not exchange currency at all, hence the need for government to tax on the [assumed / calculated / arrived/ derived] fair value. A word of caution: at times this may not be fair at all and may actually cost more than had one done a transaction using currency. "Bingo, great question.  I'm not the original poster, ""otherwiseyep"", but I am in the economics field (I'm a currency analyst for a Forex broker).  I also happen to strongly disagree with his posts on the origin of money.  To answer your question:  the villagers are forced to use the new notes by their government, which demands that their income taxes be paid with the new currency.  This is glossed over by otherwiseyep, which is unfortunate because it misleads people who are new to economics into believing the system of fiat money we have now is natural/emergent (created from the bottom-up) and not enforced from the top-down.  Legal tender laws enforced in each nation's courts mean that all contracts can be settled in the local fiat currency, regardless of whether the receiver of the money wants a different currency.  These laws (and the income tax) create an artificial ""root demand"" for the fiat currency, which is what gives it its value.  We don't just *decide* that green paper has value.  We are forced to accumulate it by the government.  Fiat currencies are not money.  We call them money, but in fact they are credit derivatives.  Let me explain:  A currency's value is inextricably tied to the nation's bond market.  When investors buy a nation's bonds, they are loaning that nation money.  The investor expects to receive interest payments on the bonds.  The interest rate naturally rises as the bonds are perceived to be more-risky, and naturally falls as the bonds are perceived to be less-risky.  The risk comes from the fact that governments sometimes get really close to not being able to pay their interest payments.  They get into so much debt, and their tax-revenue shrinks as their economy worsens.  That drives up the interest rate they must pay when they issue new bonds (ie add debt).  So the value of a currency comes from tax revenue (interest payments).  If a government misses an interest payment, or doesn't fully pay it, the market considers this a ""credit event"" and investors sell their bonds and freak out.  Selling bonds has the effect of driving interest rates even higher, so it's a vicious cycle.  If the government defaults, there's massive deflation because all debt denominated in that currency suddenly skyrockets due to the higher interest rates.  This creates a chain of cascading defaults - one person defaults, which leads another person, and another, and so on.  Everyone was in debt to everyone else, somewhere along the chain.  In order to counteract this deflation (which ultimately leads to the kind of depression you saw in 1930's US), governments will print print print, expanding the credit supply via the banks.  So this is what you see happening today - banks are constantly being bailed out all over the Western world, governments are cutting programs to be able to meet their interest payments, and central banks are expanding credit supplies and bailing out their buddies.  Real money has ZERO counterparty risk.  What is counterparty risk?  It's just the risk that the guy who owes you something won't honor his debt.  Gold and silver and salt and oil aren't IOU's.  So they can be real money." Have you tried calling a Forex broker and asking them if you can take  delivery on currency? Their spreads are likely to be much lower than  banks/ATMs. "The key term you're looking for is ""purchasing power parity"", which considers the local prices of goods and services when making comparisons between countries. For example, you can look up the GDP by PPP per capita to get a sense of much people on average incomes can buy in each country. Of course, average incomes may not be too relevant to your own specific circumstances, but nonetheless you can look at the PPP data itself to figure out how to translate specific numbers between two currencies. However, note that the ""basket"" of goods used to calculate this measure itself has a significant impact on the results. Comparing prices of food and electronic equipment respectively will often give very different answers." There are lots of reasons for the differences in price. Can you go to (a) bank, (b) forex bureau and (c) central bank and post back both bid and offer prices at a given time so we can consider the spread? What you've said above for (a) and (b) are presumably USDGHS offer prices, because they are higher than the (c) central bank price. If a bank or bureau bid price was higher than the central bank offer price then you could buy GHS from the central bank and then sell them to a bureau for a higher price, an almost no risk arbitrage, other than the armoured car to deliver the funds from central bank to bureau. What you've posted is: (a) a bank will sell you 1 USD for 3.4 GHS (b) a bureau will sell you 1 USD for 3.7 GHS (c) we can see the bid/offer for central bank is 3.1949/3.1975 which means the central bank, if you have an account, will sell you 1 USD for 3.1975 GHS. You clearly want to buy USD from the central bank, then the bank, then the bureau. Anyway, the reason for these differences is all to do with liquidity conditions in the local areas, the customer types, and the frequency of orders versus inventory... Think about it. The central bank has the most frequency of orders and the biggest customers so it offers the lower price, then the bank, and then the bureau. I think the bureau is the worst price there... You have to explain further :) "You are right, if by ""a lot of time"" you mean a lot of occasions lasting a few milliseconds each. This is one of the oldest arbitrages in the book, and there's plenty of people constantly on the lookout for such situations, hence they are rare and don't last very long. Most of the time the relationship is satisfied to within the accuracy set by the bid-ask spread. What you write as an equality should actually be a set of inequalities.  Continuing with your example, suppose 1 GBP ~ 2 USD, where the market price to buy GBP (the offer) is $2.01 and to sell GBP (the bid) is $1.99.  Suppose further that 1 USD ~ 2 EUR, and the market price to buy USD is EUR2.01 and to sell USD is EUR1.99.  Then converting your GBP to EUR in this way requires selling for USD (receive $1.99), then sell the USD for EUR (receive EUR3.9601).  Going the other way, converting EUR to GBP, it will cost you EUR4.0401 to buy 1 GBP.  Hence, so long as the posted prices for direct conversion are within these bounds, there is no arbitrage." Originally dollars were exchangeable for specie at any time, provided you went to a govt exchange. under Bretton Woods this was a generally fixed rate, but regardless there existed a spread on gold. This ceased to be the case in 71 when the Nixon shock broke  Bretton woods. "It's simply supply and demand.   First, demand: If you're an importer trying to buy from overseas, you'll need foreign currency, maybe Euros.  Or if you want to make a trip to Europe you'll need to buy Euros.  Or if you're a speculator and think the USD will fall  in value, you'll probably buy Euros. Unless there's someone willing to sell you Euros for dollars, you can't get any.  There are millions of people trying to exchange currency all over the world.  If more want to buy USD, than that demand will positively influence the price of the USD (as measured in Euros).  If more people want to buy Euros, well, vice versa. There are so many of these transactions globally, and the number of people and the nature of these transactions change so continuously, that the prices (exchange rates) for these currencies fluctuate continuously and smoothly. Demand is also impacted by what people want to buy and how much they want to buy it.  If people generally want to invest their savings in stocks instead of dollars, i.e., if lots of people are attempting to buy stocks (by exchanging their dollars for stock), then the demand for the dollar is lower and the demand for stocks is higher.  When the stock market crashes, you'll often see a spike in the exchange rate for the dollar, because people are trying to exchange stocks for dollars (this represents a lot of demand for dollars). Then there's ""Supply:"" It may seem like there are a fixed number of bills out there, or that supply only changes when Bernanke prints money, but there's actually a lot more to it than that.  If you're coming from Europe and want to buy some USD from the bank, well, how much USD does the bank ""have"" and what does it mean for them to have money?  The bank gets money from depositors, or from lenders.  If one person puts money in a deposit account, and then the bank borrows that money from the account and lends it to a home buyer in the form of a mortgage, the same dollar is being used by two people.  The home buyer might use that money to hire a carpenter, and the carpenter might put the dollar back into a bank account, and the same dollar might get lent out again.  In economics this is called the ""multiplier effect."" The full supply of money being used ends up becoming harder to calculate with this kind of debt and re-lending.   Since money is something used and needed for conducting of transactions, the number of transactions being conducted (sometimes on credit) affects the ""supply"" of money. Demand and supply blur a bit when you consider people who hoard cash.  If I fear the stock market, I might keep all my money in dollars.  This takes cash away from companies who could invest it, takes the cash out of the pool of money being used for transactions, and leaves it waiting under my mattress.  You could think of my hoarding as a type of demand for currency, or you could think of it as a reduction in the supply of currency available to conduct transactions. The full picture can be a bit more complicated, if you look at every way currencies are used globally, with swaps and various exchange contracts and futures, but this gives the basic story of where prices come from, that they are not set by some price fixer but are driven by market forces.   The bank just facilitates transactions.  If the last price (exchange rate) is 1.2 Dollars per Euro, and the bank gets more requests to buy USD for Euros than Euros for USD, it adjusts the rate downwards until the buying pressure is even.  If the USD gets more expensive, at some point fewer people will want to buy it (or want to buy products from the US that cost USD).  The bank maintains a spread (like buy for 1.19 and sell for 1.21) so it can take a profit. You should think of currency like any other commodity, and consider purchases for currency as a form of barter.  The value of currency is merely a convention, but it works.  The currency is needed in transactions, so it maintains value in this global market of bartering goods/services and other currencies.  As supply and demand for this and other commodities/goods/services fluctuate, so does the quantity of any particular currency necessary to conduct any of these transactions. A official ""basket of goods"" and the price of those goods is used to determine consumer price indexes / inflation etc.  The official price of this particular basket of goods is not a fundamental driver of exchange rates on a day to day basis." "Im not sure, but let me try. ""That person"" won't affect the value of currency, after two (or three) years (maybe months), agencies will report anomalies in country. Will be start the end of market.  God bless FBI and NSA for prevent this.  Actually, good ""hypothetical"" question." of course the value will be non zero however it would be very small, as all the countries would not leave at once...  if its a piig holding the bag it would fall precipitously, if its a AAA (non france) it would go to 1.5  Its very path dependent on whom leaves when It depends on the asset and the magnitude of the exchange rate change relative to the inflation rate. If it is a production asset, the prices can be expected to change relative to the changes in exchange rate regardless of magnitude, ceteris paribus. If it is a consumption asset, the prices of those assets will change with the net of the exchange rate change and inflation rate, but it can be a slow process since all of the possessions of the country becoming relatively poorer cannot immediately be shipped out and the need to exchange wants for goods will be resisted as long as possible. "You are violating the Uncovered Interest Rate Parity.  If Country A has interest rate of 4% and Country B has interest rate of 1%, Country B's expected exchange rate must appreciate by 3% compared to spot. The ""persistent pressure to further depreciate"" doesn't magically occur by decree of the supreme leader. If there is room for risk free profit, the entire Country B would deposit their money at Country A, since Country A has higher interest rate and ""appreciates"" as you said. The entire Country A will also borrow their money at Country B.  The exception is Capital Control. Certain people are given the opportunity to get the risk free profit, and the others are prohibited from making those transactions, making UIP to not hold." Central banks don't generally post exchange rates with other currencies, as they are not determined by central banks but by the currency markets. You need a source for live exchange rate data (for example www.xe.com), and you need to calculate the prices in other currencies dynamically as they are displayed -- they will be changing continually, from minute to minute. "The solution I've come up with is to keep income in CAD, and Accounts Receivable in USD.  Every time I post an invoice it prompts for the exchange rate. I don't know if this is ""correct"" but it seems to be preserving all of the information about the transactions and it makes sense to me.  I'm a programmer, not an accountant though so I'd still appreciate an answer from someone more familiar with this topic." You want to bank with HSBC: From: http://www.offshore.hsbc.com/1/2/international/foreign-exchange-currency/foreign-exchange/faqs HSBC Bank International does not   charge ‘commission’, therefore   offering 0% commission on foreign   currency exchange transactions