Banking & FEMA

RBI Purpose Codes for Exporters: Complete List and Guide

P0102 vs P0108 vs P1007. Complete export purpose code table, common mistakes, how to fix wrong codes, and platform-specific mapping.

By Aaryan Kakani · · 8 min read

What Are RBI Purpose Codes?

Purpose codes are a classification system defined by the Reserve Bank of India under its FETERS (Foreign Exchange Transactions Electronic Reporting System) framework. Every cross-border receipt or payment processed through an Authorised Dealer (AD) bank in India must carry a purpose code. A four-character alphanumeric identifier (like P0102) that tells the RBI what the foreign exchange transaction is for.

The system exists because the RBI needs to track India's balance of payments at a granular level. Every dollar, euro, or pound that enters or leaves India must be categorised. Is it payment for exported goods? A software service fee? Freight charges? Dividend income? The purpose code makes this classification possible at scale.

For exporters, purpose codes are not just a reporting formality. They are the link between your inward remittance and the RBI's EDPMS (Export Data Processing and Monitoring System). When your AD bank receives an inward remittance and tags it with a purpose code, that code determines which EDPMS pipeline the receipt flows into. A goods export receipt tagged with P0102 gets matched against your shipping bill. A software export receipt tagged with P1007 goes through SOFTEX reporting. The wrong code means the wrong pipeline, and the wrong pipeline means your entries do not match.

Why Correct Purpose Codes Matter

A wrong purpose code is not like a typo on an invoice. It creates a chain reaction across multiple compliance systems. Here is what breaks when the code is wrong:

EDPMS matching fails

The EDPMS system matches inward remittances against shipping bills based on purpose code, amount, and exporter details. If your goods export receipt arrives tagged as P1007 (software) instead of P0102 (goods), EDPMS will not link it to your shipping bill. Your shipping bill stays "open" and the clock keeps ticking toward the 9-month repatriation deadline. Even though the money is sitting in your bank account.

eBRC generation gets blocked

The electronic Bank Realisation Certificate (eBRC) is generated only when the EDPMS entry is fully matched. Shipping bill linked to the correct inward remittance with the correct purpose code. Without a valid eBRC, you cannot claim RoDTEP, duty drawback, MEIS benefits, or any other export incentive that requires proof of realisation.

FEMA compliance risk

Incorrect purpose code reporting is a contravention of FEMA regulations. While the RBI typically treats this as a procedural lapse rather than a deliberate violation, repeated instances can trigger scrutiny from the RBI's regional office. More critically, the unmatched EDPMS entry creates a false "non-repatriation" flag, which is a far more serious FEMA violation.

RBI audit exposure

The RBI conducts periodic audits of AD banks' forex reporting. During these audits, purpose code discrepancies are flagged individually. Each mismatch is a separate reporting contravention. If your AD bank has been reporting your receipts under wrong purpose codes consistently, the audit findings can result in directions to the bank to seek compounding from the RBI on your behalf.

Most Common Purpose Code Mistakes

After reviewing thousands of export transactions, these are the purpose code errors we see most frequently. Each one causes a specific type of compliance problem.

Mistake 1: Using P0102 instead of P0108 (Goods vs Processing)

This is the most common error for exporters who do job-work or contract manufacturing for foreign brands. If a European fashion brand sends fabric to your factory, you stitch garments, and ship the finished garments back. The receipt for your manufacturing charges should be tagged P0108 , not P0102 .

Why it matters: P0102 tells the RBI you are selling your own goods. P0108 tells the RBI you are processing someone else's goods. The EDPMS treatment is different. P0108 transactions require documentation of the inward consignment of raw materials, not just the outward shipping bill. Using P0102 for a processing transaction means your EDPMS record is fundamentally incomplete.

Mistake 2: Using P0102 instead of P1007 (Goods vs Software)

Indian IT companies and SaaS businesses frequently receive payments tagged as P0102 when they should be P1007 . This happens because the foreign buyer (or their bank) does not distinguish between "products" and "services" when initiating the wire transfer. The buyer sees it as paying for a "product" and their bank tags it as goods.

The problem: goods exports are tracked through EDPMS and require a shipping bill. Software exports are tracked through SOFTEX forms filed with the STPI/SEZ. If your SaaS revenue arrives tagged as P0102, the RBI expects a corresponding shipping bill. Which does not exist because you shipped software, not physical goods. The result is an unmatched EDPMS entry that looks like non-repatriation.

Mistake 3: Platform Payments Tagged With Wrong Codes

E-commerce sellers on Amazon, Etsy, or Shopify receive payouts through payment processors like Payoneer, Wise, or the platform's own payment system. These intermediaries often batch multiple transactions into a single payout and apply a generic purpose code that may not match the exporter's actual activity.

Common scenarios: an Amazon seller exporting handmade goods receives a Payoneer payout tagged as P1008 (business services) instead of P0102 (goods). A freelance developer on Upwork receives payment tagged as P0102 instead of P1007 . In both cases, the EDPMS system cannot match the receipt correctly.

How to Fix a Wrong Purpose Code

If a wrong purpose code has already been applied to your inward remittance, you can get it corrected. The process is straightforward but time-sensitive. The longer you wait, the more downstream systems get affected. Here is the step-by-step process:

StepWhat to doDocuments needed
1. Identify the mismatchCompare the purpose code on your bank credit advice / FIRC with the nature of your export (goods, software, service, freight). If they do not match, proceed to step 2.FIRC, bank credit advice, export invoice
2. Write to your AD bankSend a formal letter to your AD bank's trade finance / forex department requesting a purpose code amendment. Specify the FIRC number, original code, correct code, and reason for amendment.Amendment request letter, original FIRC
3. Submit supporting documentsProvide the AD bank with documentation that proves the correct nature of the transaction. The bank needs this to justify the amendment in their EDPMS reporting.Export invoice, contract/PO, shipping bill (for goods) or SOFTEX form (for software)
4. Bank processes amendmentThe AD bank updates the purpose code in their EDPMS reporting to the RBI. This typically takes 5-15 working days depending on the bank.None (bank internal process)
5. Verify EDPMS matchingAfter the amendment is processed, confirm with your AD bank that the EDPMS entry is now correctly matched against your shipping bill or SOFTEX form.Updated EDPMS statement from bank

Impact on eBRC

If the wrong purpose code has already caused an EDPMS mismatch, your eBRC application for that shipment will be in a "pending" or "rejected" state. Once the AD bank processes the purpose code amendment and the EDPMS entry is correctly matched, you can re-apply for the eBRC. The timeline for eBRC re-issuance after a purpose code amendment is typically 7-10 working days.

During this period, any export incentive claims (RoDTEP, duty drawback, MEIS) that depend on the eBRC will be on hold. If you have multiple shipments affected by purpose code errors, prioritise the amendments by eBRC value. Fix the highest-value shipments first to unlock the largest incentive claims.

Platform-Specific Purpose Code Mapping

If you receive export proceeds through a payment platform or marketplace, the purpose code is typically applied by the platform's banking partner or by your AD bank when the funds arrive. Here is what to expect and what to verify for the most common platforms:

PlatformTypical code appliedCorrect code (most cases)Action needed
Amazon (goods sellers)P0102 or P1008P0102Verify on credit advice. If P1008, request amendment immediately. Amazon's Currency Converter usually applies P0102 correctly.
Amazon (digital / Kindle)P1007 or P1008P1007If tagged P1008, request amendment. Digital products are software under FETERS.
PayoneerVaries (often P1008 or P0102)Depends on your export typePayoneer does not always distinguish between goods and services. Check every payout. Share the correct code with Payoneer support and your AD bank.
Wise (TransferWise)Varies (buyer-specified or generic)Depends on your export typeWise allows the sender to specify a purpose code, but many foreign senders skip this. Instruct your buyer to include the correct code in the transfer details.
PayPalP1007 or P1008Depends on your export typePayPal tends to tag everything as services. If you export goods, request amendment to P0102. PayPal's banking partner in India may apply a default code.

Best practices for platform payments

  • Check the purpose code on every platform payout within 48 hours of receipt. Do not assume the platform applied the correct code.
  • If the platform allows you to set a default purpose code in your account settings (Payoneer does), set it correctly and verify it is being applied.
  • For platforms that batch multiple transactions, maintain your own record of which orders are included in each payout so you can provide supporting documentation if an amendment is needed.
  • If you export both goods and services through the same platform, consider using separate platform accounts or requesting separate payouts to avoid mixed purpose code issues.

Quick Reference: Which Code Should I Use?

I am exporting..Use this code
Physical goods (finished products, raw materials, components)P0102
Goods bought in Country A and sold to Country B (no India transit)P0103
Goods sold to a foreign buyer for use within IndiaP0104
Processing charges for job-work on foreign-owned materialsP0108
Software development, SaaS, IT servicesP1007
BPO, KPO, consulting, professional servicesP1008
Engineering design, technical consultingP1011
Freight / shipping costs billed separately to buyerP0801
Vessel or aircraft charter hireP0802
Passenger fare receipts from international routesP0806

Frequently Asked Questions

What is the difference between purpose code P0102 and P0108 for Indian exporters?

P0102 is for the standard sale of goods. You own the raw materials, manufacture or source the finished product, and sell it to a foreign buyer. P0108 is for processing or manufacturing on behalf of a foreign party. They send you the raw materials, you process them, and ship back the finished product. The key distinction is ownership of the input material. Using the wrong code causes EDPMS mismatches because the RBI tracks these as fundamentally different transaction types.

How do I fix a wrong purpose code on an inward remittance?

Write to your AD bank's trade finance or forex department requesting a purpose code amendment. Include the FIRC number, the original purpose code, the correct purpose code, and supporting documents (invoice, contract, shipping bill). The bank will update the code in their EDPMS reporting. Request the amendment within 30 days of the credit for the smoothest process. See our purpose code change guide for template letters.

Which purpose code should I use for software or IT service exports from India?

Use P1007 for all software and IT service exports, including custom development, SaaS subscriptions, app development, data processing, and IT consulting. Do not use P0102 even if the contract says "product delivery". P0102 is strictly for physical goods with shipping bills. Software exports are reported through SOFTEX forms filed with the STPI or SEZ authority.

What purpose code do Amazon, Payoneer, and Wise payments use for Indian exporters?

It varies by platform and is often incorrect. Amazon's Currency Converter usually applies P0102 for goods sellers, but Payoneer and Wise often apply generic codes like P1008. Always check the purpose code on your bank credit advice within 48 hours of each payout. If the code does not match your actual export type, request an amendment from your AD bank immediately. Including the correct purpose code on your proforma invoice helps prevent errors at source.

Update history

  • First published.