RBI

How to change purpose code with your bank or payment platform

Fix wrong RBI purpose codes at your AD bank or payment platform. EDPMS mismatch prevention, bank correction process, and sample letter template.

By Aaryan Kakani · · 5 min read

What Are Purpose Codes and Why Do They Matter?

Every inward remittance credited to an Indian bank account gets tagged by the AD bank with an RBI purpose code. This code tells RBI the nature of the transaction (goods export, services, advance payment, etc.) and drives how the payment flows through EDPMS, eBRC, and GST systems.

Purpose codes for goods exporters

CodeDescriptionWhen used
P0101Export bills negotiated/purchased/discountedBank has negotiated the export bill (LC/DA/DP handled by bank)
P0102Export bills sent on collectionDirect TT/wire payment against export (most common for MSMEs)
P0103Advance payment against goods exportPayment received before shipment. Shipping bill date must be after remittance date
P0108Realisation of export bills (past due/overdue)Late payment received after due date

Purpose codes for service exporters (not goods)

CodeDescription
P0801Software/IT services (SOFTEX form)
P0802Other business/professional services
P0807Software exports (non-SOFTEX)

Common purpose code mistakes

Most frequent errors

  • Goods vs services mix-up. Payment for goods export tagged with P0802 (services) or vice versa. This is the single most common error, especially for exporters who also sell services
  • P0103 for service advance. P0103 is strictly for advance against goods export. Advance for services should be P0802. Banks and DGFT flag this mismatch
  • P0101 vs P0102 confusion. P0101 is for bank-negotiated bills (LC), P0102 is for collection/direct TT. Exporters often pick whichever appears first in the bank dropdown
  • Bank auto-assigns from SWIFT narration. The AD bank infers the code from the overseas bank's MT103 payment description. If the buyer's bank enters a vague narration, the code comes out wrong
  • Outdated forum advice. Old posts suggesting codes like P0021 for freelance work are incorrect. Following outdated guidance creates errors

What happens with the wrong purpose code

Downstream cascade of a wrong code

  1. EDPMS mismatch. The payment doesn't match your shipping bill in EDPMS. The export entry sits "open" and unrealised.
  2. eBRC generation blocked. DGFT's system requires the eBRC purpose code to match the bank-reported IRM. Mismatch = rejection.
  3. GST refund fails. GST export refund claims require FIRC/e-FIRA with matching purpose code. Wrong code = refund held up.
  4. RoDTEP/drawback delayed. Incentive claims need eBRC, which needs correct purpose code. The entire chain stalls.
  5. Caution listing risk. If the shipping bill stays "open" in EDPMS beyond 9 months, you risk RBI caution listing.
  6. FEMA exposure. Repeated or deliberate-looking errors can attract FEMA compounding penalties (up to 3x transaction value in egregious cases).

How to fix the purpose code at your AD bank

There is no self-service portal for exporters to change purpose codes. The correction must go through your AD bank, because the bank is the entity that reported the IRM to RBI's EDPMS.

Step-by-step correction process

  1. Contact the trade/forex operations desk. Go to your bank's trade operations team, not the branch RM. Most banks have a specific "code correction" email or desk for this.
  2. Submit a written request on company letterhead. Include: FIRC/IRM reference number, UTR/SWIFT reference, remittance date and amount, the incorrect code, the correct code, and reason for discrepancy.
  3. Attach supporting documents. Commercial invoice showing nature of transaction (goods/services), export contract or purchase order, shipping bill copy (for goods), IEC and PAN.
  4. Bank amends internally. The bank corrects the purpose code in their system and re-reports the corrected IRM to RBI's EDPMS.
  5. Verify EDPMS update. After correction, check that your shipping bill/export entry now shows as matched in EDPMS. Ask your bank for confirmation.
  6. Re-check eBRC. If eBRC was rejected, retry self-certification on the DGFT portal once the corrected IRM is reflected.

Sample correction letter (on company letterhead)

To: Branch Manager / Trade Operations

[Bank Name], [Branch]

Subject: Correction of purpose code on inward remittance

Dear Sir/Madam,

We request correction of the purpose code on the following inward remittance:

FIRC/IRM Reference: [number]

UTR/SWIFT Reference: [number]

Remittance Date: [date] | Amount: USD [amount]

Current Purpose Code: [wrong code] (e.g., P0802)

Correct Purpose Code: [correct code] (e.g., P0102)

This remittance pertains to export of goods against Shipping Bill No. [number] dated [date] / Invoice No. [number]. The enclosed commercial invoice and shipping bill confirm this is a goods export transaction.

Kindly amend the purpose code and re-report to EDPMS accordingly.

Enclosures: Commercial invoice, Shipping bill copy, Export contract/PO

IEC: [number] | PAN: [number] | A/c No: [number]

Authorized Signatory

Bank-specific notes

BankHow to reach trade ops
SBIContact your designated forex branch. SBI routes trade corrections through the International Banking division. Branch visit usually required for first request.
HDFCEmail trade.services@hdfcbank.com or contact your trade relationship manager. Corrections can often be initiated via email with scanned documents.
ICICIContact the Trade Operations Centre through your branch or via Trade Online portal. Submit correction request through the branch with documents.
KotakContact the Trade Finance desk at your branch. Kotak typically requires a branch visit with physical documents for code corrections.
AxisAxis Bank trade desk handles corrections. Contact through your designated forex branch or RM. Email-initiated with follow-up at branch.

Purpose codes in payment platforms

When you receive export payments through platforms like Payoneer, Wise, or PayPal, the platform (or its banking partner) assigns the purpose code when the funds are transferred to your Indian bank account.

Platform-specific handling

PlatformWho sets the codeHow to change
PayoneerPayoneer's partner bank (typically Yes Bank or ICICI) assigns based on your account categorySet "Business Type" correctly in Payoneer settings. For goods exports, ensure your account is categorized as goods (not services). Contact Payoneer support to change category if wrong.
WiseWise's banking partner assigns code when transferring to your INR accountSpecify the purpose code during withdrawal setup. If the code is wrong on the FIRA, contact Wise support with your invoice/contract. Wise may need to coordinate with their banking partner.
PayPalPayPal's banking partner (typically ICICI) assigns based on transaction narrationPayPal auto-categorizes based on transaction type. For goods payments, ensure buyer pays as "Goods and Services." If code is wrong, contact both PayPal and your receiving AD bank.
Amazon Global SellingAmazon's payout partner assigns codes. Payouts are aggregated, complicating per-shipment matching.Amazon payouts typically come with goods purpose codes. The main challenge is matching aggregated payouts to individual shipping bills, not wrong purpose codes. See our Amazon guide.
Razorpay / CashfreeConfigure purpose code in the payment gateway dashboardBoth platforms allow you to set the purpose code in your merchant dashboard under "International Payments" or "Forex Settings." Set it before the first transaction.

EBRC-specific purpose code rules

DGFT eBRC purpose code rules

  • P0101 or P0108 alone. Cannot generate eBRC for these codes standalone. They must be part of a matched shipping bill with bank-reported IRM.
  • P0103 clubbing. P0103 (advance payment) can be clubbed with other purpose codes for a single eBRC. This is the only code that allows clubbing.
  • P0103 date rule. For P0103 eBRC, the shipping bill/invoice date must be on or after the remittance date. A common source of rejection that looks like a purpose code error but is actually a date sequencing issue.
  • Mismatch = upstream fix needed. If the eBRC portal shows a mismatch against bank-reported data, the fix must happen at the bank (re-report the IRM). DGFT's system is downstream of whatever the bank has reported.

For the full eBRC self-certification process, see our eBRC Filing guide.

How to prevent wrong purpose codes

Prevention checklist

  • Verify on every FIRC/e-FIRA. Check the purpose code as soon as the FIRA is issued. Don't wait until eBRC filing to discover a mismatch.
  • Clear invoice language. Make your commercial invoices unambiguous about goods vs services. Banks often auto-assign codes from the remitter narration, so vague invoices increase misclassification risk.
  • Brief your buyer's bank. The overseas buyer's bank fills in the SWIFT MT103 payment description. Ask your buyer to instruct their bank to mention "payment for goods" or "against invoice [number] for [product]."
  • Set up platform correctly. Configure Payoneer/Wise/Razorpay with the right business type and purpose code before the first transaction. Changing after is harder.
  • Know your codes. P0102 for direct TT against goods, P0103 for advance against goods, P0802 for services. If in doubt, see our purpose code reference.
  • One bank for exports. Using a single AD bank for all export receipts reduces the chance of miscoding and simplifies EDPMS reconciliation.

Seasaw automates this

Catch purpose code mismatches before they cascade

Seasaw's EDPMS reconciliation flags purpose code mismatches the moment your bank reports the IRM. Before you file eBRC, before you claim RoDTEP, before the 9-month clock runs out. One dashboard for all your shipping bills, payments, and purpose codes.

See how Seasaw works →

Sources & citations

  • RBI Master Direction No. 16/2015-16. Export of Goods and Services.
  • RBI Annex II. Purpose Codes for Reporting Forex Transactions.
  • DGFT Trade Notice No. 12/2024-25. EBRC Bulk Generation.
  • DGFT FAQs on Self-Certification of eBRC..
  • FEMA (Current Account Transactions) Rules, 2000..

Update history

  • First published.