Skip to main content

Multi-Currency Invoices

If you receive invoices from suppliers who bill in a different currency to your base currency, Brikly handles this automatically. A cafe in Northern Ireland might be set up with GBP as their base currency but receive some invoices in EUR from Republic of Ireland suppliers. Brikly detects the invoice currency, converts the prices, and stores everything in your base currency so your recipe costs and margins are always accurate.

How it works

When you upload an invoice, Brikly's AI extracts the currency along with all other invoice data. If the invoice currency differs from your base currency (set in Settings > Account), Brikly automatically:

  1. Detects the currency - the AI identifies the invoice currency from symbols, codes, and context on the document.
  2. Fetches the exchange rate - Brikly looks up the rate for the invoice date using European Central Bank data.
  3. Converts all prices - line item prices are converted to your base currency before they flow into your ingredient costs.
  4. Records the original - the original currency, original price, and the exchange rate used are all stored for transparency.
Invoice (EUR)          Exchange Rate          Ingredient Cost (GBP)
----------------- ---------------- -----------------------
Espresso: EUR 0.41 x 0.8560 EUR/GBP = GBP 0.35

You do not need to do anything differently - just upload the invoice as normal. The conversion happens behind the scenes during the matching and price update stage.

Where you will see it

Supplier pricing table

On the Ingredients page, when you expand a supplier row, any supplier whose latest price was converted from a foreign currency shows a small note under the pack price:

GBP 0.35
from EUR

Hover over it to see the exact exchange rate that was used.

Price history drawer

In the price history for an ingredient, each entry that involved a currency conversion shows the original amount alongside the converted price:

GBP 0.35
from €0.41 EUR

This makes it easy to see at a glance which price updates came from foreign-currency invoices and what rate was applied.

Supported currencies

Brikly supports conversion between all major currencies:

CurrencyCode
British PoundGBP
EuroEUR
US DollarUSD
Australian DollarAUD
Canadian DollarCAD
New Zealand DollarNZD
Japanese YenJPY
Swiss FrancCHF
Swedish KronaSEK

Your base currency is set during account setup and can be changed in Settings > Account.

Exchange rates

Brikly uses exchange rates from the European Central Bank (ECB), which publishes reference rates on each business day. When a rate is needed:

  • Brikly uses the rate for the invoice date, not the date you upload the invoice. This means the converted price matches what the supplier charged on that day.
  • If the invoice date falls on a weekend or bank holiday, the most recent available rate is used automatically.
  • Rates are cached to keep processing fast - you will not notice any delay.
Rates are locked at processing time

The exchange rate is captured when the invoice is processed and does not change afterwards. This is standard practice in hospitality cost management - it gives you a stable cost base rather than fluctuating values. If exchange rates move significantly, you will see the impact reflected in the next invoice from that supplier.

Impact on recipe costing

Because all ingredient prices are converted to your base currency before being stored, your recipe costs and gross margins are always calculated in a single currency. You do not need to worry about mixed-currency recipes producing misleading margins.

Example: Latte recipe

IngredientInvoice currencyConverted cost (GBP)
Espresso blendEURGBP 0.35
Whole milkGBPGBP 0.20
Total costGBP 0.55
Selling priceGBP 3.50
Gross margin84.3%

Without conversion, the cost would incorrectly show as £0.61 (mixing the EUR 0.41 espresso cost with the GBP 0.20 milk cost), producing a margin of 82.6% instead of 84.3%. That 1.7 percentage point difference might seem small on one drink, but across hundreds of lattes a week it adds up - and if several ingredients are affected, the error compounds.

Price change alerts and currency conversion

Brikly flags significant price changes when it detects that an ingredient's cost has moved beyond a threshold. Because all prices are converted to your base currency before being stored, the price change detection compares like-for-like - both the previous and new prices are in the same currency.

This means a price change alert can be triggered by two different things:

  • The supplier changed their price - for example, espresso went from EUR 0.41 to EUR 0.47 per serving.
  • The exchange rate moved - the espresso is still EUR 0.41 but the EUR/GBP rate shifted from 0.8560 to 0.9000, increasing the converted cost from GBP 0.35 to GBP 0.37.

Both are real cost changes from your perspective - either way, your margins are affected.

Understanding what changed

When you review a price change on an ingredient that involves currency conversion, Brikly shows a Currency Conversion Breakdown so you can see exactly what caused the cost to move:

PreviousCurrent
Supplier priceEUR 0.41EUR 0.41
Exchange rate0.85600.9000
Converted costGBP 0.35GBP 0.37

In this example, the supplier price is unchanged - the cost increase is entirely due to exchange rate movement. This helps you decide whether to contact your supplier (if they raised prices) or simply wait for the rate to settle (if it is a currency fluctuation).

Supplier price vs exchange rate

If the supplier price is unchanged and only the exchange rate has moved, you might choose to wait and see whether the rate corrects itself. If the supplier has raised prices, it is worth contacting them to negotiate or considering an alternative supplier.

Entering the amount you paid

The ECB mid-market rate gives you a close estimate of your converted costs straight away - accurate enough for most day-to-day costing. Banks do add a small margin and sometimes a fixed fee when they process the payment, so the amount that actually leaves your account will differ slightly (typically 1-3%). If you want your ingredient costs to reflect exactly what you paid, you can enter the bank charge and Brikly will recalculate using your real effective rate.

How to use it

  1. Open any invoice where the invoice currency differs from your base currency.
  2. In the Invoice Summary section, you will see an Amount Paid input below the invoice total.
  3. Enter the amount your bank charged in your base currency (e.g. £85.50 for an €100 invoice).
  4. Click Save.

Brikly calculates the effective exchange rate from your entry:

Effective rate = Amount paid (GBP) / Invoice total (EUR)
= 85.50 / 100.00
= 0.8550

What happens to existing prices

If you have already matched line items on this invoice, Brikly automatically re-converts their ingredient costs using the real rate. You will see a confirmation showing how many prices were updated.

You will typically process invoices when they arrive and then see the bank charge a day or two later on your statement. You can come back to the invoice at any time to enter the actual amount - there is no deadline.

Future matches on the same invoice

Any line items you match after entering the amount paid will automatically use the effective exchange rate.

This step is optional

The ECB rate is already a good estimate of your costs. This feature is there for operators who want penny-precise costing - if the estimate is close enough for your needs, you can skip it entirely.

What if the exchange rate API is unavailable?

In the rare event that the exchange rate cannot be fetched (e.g. a temporary network issue), Brikly will still process the invoice and store the prices - but without conversion. The prices will be stored in the original invoice currency. This avoids blocking your workflow. A warning is logged so the Brikly team can investigate.

Set your base currency early

Make sure your base currency is set correctly in Settings > Account before you start processing invoices. All ingredient costs are stored in this currency, and changing it later does not retroactively convert existing prices.