Skip to main content

Import Purchase (foreign vendors)

Buying from a supplier outside India is not just a PO in a different currency. The bill carries no Indian GST, the tax you can claim shows up at customs (goods) or as a self‑assessed reverse charge (services), you may have to withhold TDS under §195, and the rupee value moves between the bill date and the day you pay. Raya models the whole cycle so an accountant can follow it screen by screen and get balanced vouchers at every step.

This page walks two fully worked examples end to end — Flow A: import of goods and Flow B: import of services (RCM) — with the exact Dr/Cr journal entries Raya posts.

Purchase orders

When is a purchase an "import"?

Raya derives Import automatically from the vendor: a foreign Country + no valid 15‑character GSTIN → Import. You never tick an "import" box — pick the foreign vendor and the forms reconfigure themselves. Which of the two flows you are in depends on whether the lines are goods (HSN) or services (SAC‑99):

Import of GOODS (HSN lines)Import of SERVICES (SAC‑99 lines)
GST on the vendor billNone — a foreign supplier cannot charge Indian GSTSelf‑assessed IGST (default 18%) under RCM §5(3) IGST Act
Where IGST enters the booksAt customs, via the Bill of Entry panel after clearanceOn the bill voucher itself, from the PO tax rows
ITC claimable whenThe BoE voucher posts — appears in GSTR‑2B as IMPGAfter the RCM cash deposit posts (§49(4))
TDSNot applicable — §195 does not cover goods§195, 10% default, no threshold — verify DTAA relief
Reverse‑charge switchOFFON
Self‑invoiceNot requiredRequired — §31(3)(f) document SI-<PO#>

:::note Smart defaults — "auto until touched" Pick the vendor and the line type, and Raya pre‑applies the GST + RCM treatment for you: goods clear the GST picker (hint: "bill stays GST‑free; IGST is recorded at customs"), SAC‑99 lines set IGST 18% + Reverse Charge ON. This is auto until touched — the moment you override the GST rate or the RCM switch, the form stops auto‑managing that field and leaves your value alone. :::

One‑time setup

You do not need to pre‑build any import ledgers. The only setup is the vendor.

  1. Create the foreign vendor (Accounts → Contacts → + New, or + Add new from the PO):
    • Set Country to the supplier's country (e.g. UAE, China, Germany).
    • Leave the GSTIN blank (a foreign supplier has none). This is the trigger — a foreign country and no valid 15‑character GSTIN is what flips every downstream form into Import mode.
    • Optionally set the vendor's default currency (USD, AED, EUR…) so it pre‑fills on orders.
  2. That's it. Every ledger the import cycle needs is auto‑created on first use:
Ledger (code)NatureUsed for
PUR_IMPORT — Import PurchasesDirect ExpenseGoods value of import bills (PUR_HIGHSEAS for high‑seas)
IGST_IN — Input IGSTCurrent AssetITC — from the BoE voucher (goods) or the bill voucher (services)
CUSTOMS_DUTY — Customs DutyDirect ExpenseBCD + cesses (part of landed cost, not creditable)
CUSTOMS_PAY — Customs & Import Charges PayableLiabilityWhat you owe on the BoE challan
RCM_LIAB_PAY — RCM Liability PayableLiabilitySelf‑assessed GST owed to the government (services)
FOREX_GL — Foreign Exchange Gain / LossIndirect ExpenseRealised FX difference on settlement
TDS_PAY — TDS PayableLiability§195 (and §194Q) withholding

Flow A — Import of goods, end to end

Worked example (used throughout): you import 100 units at USD 10 each = USD 1,000, booked at an exchange rate of ₹83 (goods value ₹83,000). At the port, Basic Customs Duty (BCD) is ₹8,000 and customs IGST is ₹16,500 (18% on an assessable value of ≈ ₹91,600 = CIF + BCD). You settle the vendor later, when the rate has moved to ₹84.

1. Create the PO

  1. Purchase → Purchase Orders → + New PO and pick the foreign vendor.
  2. The Supply Type flips to Import automatically: the GST picker clears (goods‑import hint appears) and Reverse Charge stays OFF.
  3. Enter the Exchange Rate = 83. The totals card shows the ₹‑equivalent caption (USD 1,000 @ ₹83 ≈ ₹83,000) so you can sanity‑check the rate before saving.
  4. Add the HSN goods lines (100 × USD 10). Approve / send as usual.

:::tip Landed cost vs. duty Freight, insurance and clearing you pay to Indian parties can be added on the PO to apportion into landed cost. BCD and customs IGST are not entered here — they come from the Bill of Entry in step 4, because their assessable value is set by customs, not the PO. :::

2. Receive the goods (GRN)

Receive against the PO exactly as a domestic order (Receive tab → + New Receipt, with quality check / batches if enabled). Raya posts the stock journal converted into INR:

Dr Inventory .................... 83,000
Cr Import Purchases ................. 83,000
(narration: [USD @ 83])

The credit lands on Import Purchases, which acts as a GR/IR clearing account — it is squared off by the bill in the next step.

:::caution Value is qty × rate × FX — not the USD number The GRN must post ₹83,000 (100 × 10 × 83), not 1,000. If you ever see a journal at the raw USD figure, the exchange rate did not save on the PO — fix the rate and re‑receive. :::

3. Record the supplier bill

On the PO, Bill tab → + New Bill: enter the supplier's invoice number, date and the USD 1,000 amount. The purchase voucher posts GST‑free at the PO rate:

Dr Import Purchases ............. 83,000
Cr Accounts Payable ................ 83,000
(narration: [USD @ 83], no GST legs)

Now the Import Purchases clearing account nets to zero (credited by the GRN, debited by the bill), leaving Inventory ₹83,000 on one side and A/P ₹83,000 on the other.

:::note TDS on goods The bill's TDS preview will state that §195 does not apply to a goods‑only import. Leave TDS unticked. (§194Q on domestic goods purchases is a separate matter.) :::

4. Record the Bill of Entry (customs IGST + duty)

Go to PO → Payment & Finance tab → Customs / Bill of Entry panel and enter the BoE number, date, port code, assessable value, BCD ₹8,000 and IGST ₹16,500, then Record Customs & Post Voucher. Raya posts:

Dr Customs Duty ................. 8,000
Dr Input IGST ................... 16,500
Cr Customs & Import Charges Payable ... 24,500
(Bill No = the BoE number, for 2B matching)
  • BCD (₹8,000) is an expense — part of landed cost, never creditable.
  • Input IGST (₹16,500) is your ITC and becomes claimable the moment this voucher posts (it will appear in GSTR‑2B as an IMPG row).
  • The BoE number is stamped as the voucher's Bill No and a chip appears on the panel. Re‑recording the BoE reverses the old voucher and re‑posts — safe to correct.

5. Pay the vendor (FX settlement)

Payment & Finance → Record Payment. Because this is an FX PO, a "Rate at payment" field appears (defaulting to the book rate of 83). You settle USD 1,000 at ₹84, i.e. you pay ₹84,000. The dialog previews FX loss ₹1,000 and posts:

Dr Accounts Payable ............. 83,000
Dr Foreign Exchange Gain/Loss ... 1,000
Cr Bank ........................... 84,000

The A/P always clears at book value (₹83,000) — the rupee difference is booked to FX. Had the rate fallen to ₹82, the mirror image posts an FX gain:

Dr Accounts Payable ............. 83,000
Cr Bank ........................... 82,000
Cr Foreign Exchange Gain/Loss ....... 1,000

:::tip Settle at book value Leave the "Rate at payment" field blank or unchanged to settle at the book rate — the voucher then has no FX legs (A/P and Bank both 83,000). :::

6. Pay customs

Settle Customs & Import Charges Payable with a normal outgoing payment against the challan:

Dr Customs & Import Charges Payable ... 24,500
Cr Bank .............................. 24,500

7. GSTR‑2B (IMPG) reconciliation

Finance → GSTR‑2 recon → import the 2B JSON. Raya parses the IMPG rows (BoE number, date, IGST) and auto‑matches them to your customs vouchers by BoE number, comparing the portal's IGST against the voucher's Input‑IGST leg:

Recon resultMeaning
MatchedExactBoE number found, IGST equals the voucher (₹16,500) — claim it
MismatchAmountBoE found but IGST differs — investigate before claiming
MissingInBooksPortal shows a BoE you never recorded — add the BoE voucher

After Flow A, the books read: Inventory +₹83,000, Input IGST +₹16,500, Customs Duty +₹8,000 in the P&L, A/P and Customs Payable cleared to zero, and any rate movement sitting in Foreign Exchange Gain/Loss. The Trial Balance stays balanced throughout.


Flow B — Import of services (RCM)

Worked example: a UAE consultancy invoices you USD 2,000 for services, booked at ₹83 = ₹1,66,000. The lines are SAC‑99, so IGST is self‑assessed at 18% under reverse charge, and because the payee is a non‑resident you must withhold §195 TDS at 10%.

1. Create the PO (SAC‑99 lines)

Create the PO with the foreign vendor and SAC‑99 service lines. Smart defaults set IGST 18% rows + Reverse Charge ON automatically (change the rate if the service isn't 18%). Set the Exchange Rate = 83 as before.

2. Record the bill (§195 TDS + RCM self‑assessment)

On + New Bill, the TDS preview flags §195 ("payments to non‑residents…") even if the vendor's TDS policy is No — confirm to deduct 10% of the taxable value, or override the amount for a lower DTAA treaty rate. The purchase voucher posts:

Dr Import Purchases (service) ... 1,66,000
Dr Input IGST ................... 29,880 (18% RCM, self-assessed)
Cr Accounts Payable ............... 1,49,400 (ex-GST 1,66,000 − TDS 16,600)
Cr TDS Payable ....................... 16,600 (§195 @ 10%)
Cr RCM Liability Payable ............. 29,880

Note the two self‑cancelling GST legs: Input IGST (Dr) is your future ITC and RCM Liability Payable (Cr) is the same tax you now owe the government in cash. A/P is the net of ex‑GST value minus TDS. Debits (1,95,880) equal credits (1,95,880).

3. Issue the self‑invoice (§31(3)(f))

Payment & Finance tab → RCM panel → Step 1: Issue Self‑Invoice. Raya assigns SI-<PO#>, the §31(3)(f) document a recipient must raise for RCM supplies. It is idempotent — clicking again returns the same number; a self‑invoice is never renumbered. No accounting entry — it is a compliance document.

4. Record the RCM cash deposit (§49(4))

RCM panel → Step 2: Record RCM Deposit. Enter the amount (the estimate ₹29,880 is shown), the date and the bank/cash account:

Dr RCM Liability Payable ........ 29,880
Cr Bank .............................. 29,880

:::caution RCM must be paid in cash — §49(4) You cannot offset RCM with input credit; it has to be deposited in cash. Only after this deposit posts does the Input IGST (₹29,880) from step 2 become claimable ITC. A second deposit against the same bill is rejected — reverse the first to correct it. :::

5. Pay the vendor and the TDS

Pay the vendor exactly as in Flow A — the FX "Rate at payment" logic applies to the net A/P of ₹1,49,400 (FX gain/loss legs appear if the settlement rate differs from ₹83):

Dr Accounts Payable ............. 1,49,400
Cr Bank .............................. 1,49,400 (at book rate; +/- Forex GL if rate moved)

Separately, remit the withheld tax to the government by the due date:

Dr TDS Payable .................. 16,600
Cr Bank ................................ 16,600

:::note §195 vs. the vendor's TDS policy §195 has no threshold and fires on the first rupee to a non‑resident, which is why it prompts even when the party record says TDS No. The 10% is Indian domestic law — apply a DTAA treaty rate by overriding the deduction amount where relief is available. :::


Quick Purchase (inline)

Quick Purchase carries the same capabilities inline: a visible Supply Type (auto‑derived, overridable), Exchange Rate + RCM controls when the vendor is non‑domestic, and the same smart tax defaults. On approval it receives stock, posts the bill and completes — then use the full PO page for the Bill of Entry / RCM deposit / payment steps.

Good to know

  • Only realised FX gain/loss is booked (at settlement). Period‑end unrealised revaluation of open FX payables is not modelled.
  • §195 defaults to 10% domestic‑law rate; DTAA relief is applied by overriding the amount (there is no treaty‑rate master).
  • IMPG SEZ (impgsez) 2B rows are not auto‑parsed yet — only standard impg.
  • One exchange rate per PO. For part‑shipments at different rates, edit the PO rate before recording each bill.