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:
| Step | What to do | Documents needed |
|---|---|---|
| 1. Identify the mismatch | Compare 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 bank | Send 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 documents | Provide 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 amendment | The 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 matching | After 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:
| Platform | Typical code applied | Correct code (most cases) | Action needed |
|---|---|---|---|
| Amazon (goods sellers) | P0102 or P1008 | P0102 | Verify on credit advice. If P1008, request amendment immediately. Amazon's Currency Converter usually applies P0102 correctly. |
| Amazon (digital / Kindle) | P1007 or P1008 | P1007 | If tagged P1008, request amendment. Digital products are software under FETERS. |
| Payoneer | Varies (often P1008 or P0102) | Depends on your export type | Payoneer 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 type | Wise 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. |
| PayPal | P1007 or P1008 | Depends on your export type | PayPal 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 India | P0104 |
| Processing charges for job-work on foreign-owned materials | P0108 |
| Software development, SaaS, IT services | P1007 |
| BPO, KPO, consulting, professional services | P1008 |
| Engineering design, technical consulting | P1011 |
| Freight / shipping costs billed separately to buyer | P0801 |
| Vessel or aircraft charter hire | P0802 |
| Passenger fare receipts from international routes | P0806 |
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.