Download bulk upload template
curl --request GET \
--url https://api.ebrc.in/api/v1/genebrc/bulk-upload/template \
--header 'x-api-key: <api-key>'import requests
url = "https://api.ebrc.in/api/v1/genebrc/bulk-upload/template"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.ebrc.in/api/v1/genebrc/bulk-upload/template', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ebrc.in/api/v1/genebrc/bulk-upload/template",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ebrc.in/api/v1/genebrc/bulk-upload/template"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ebrc.in/api/v1/genebrc/bulk-upload/template")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ebrc.in/api/v1/genebrc/bulk-upload/template")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body"<string>"Bulk and Excel
Download Bulk Upload Template
Download the Excel bulk upload template for eBRC generation, with all 37 column headers and two example rows, then fill one row per IRM-to-invoice mapping.
GET
/
genebrc
/
bulk-upload
/
template
Download bulk upload template
curl --request GET \
--url https://api.ebrc.in/api/v1/genebrc/bulk-upload/template \
--header 'x-api-key: <api-key>'import requests
url = "https://api.ebrc.in/api/v1/genebrc/bulk-upload/template"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.ebrc.in/api/v1/genebrc/bulk-upload/template', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ebrc.in/api/v1/genebrc/bulk-upload/template",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ebrc.in/api/v1/genebrc/bulk-upload/template"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ebrc.in/api/v1/genebrc/bulk-upload/template")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ebrc.in/api/v1/genebrc/bulk-upload/template")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body"<string>"Download a pre-filled Excel (
.xlsx) template with all required and optional column headers and two example rows. Use it as the starting point for a bulk upload. Column headers are matched to fields by name, so keep the header text unchanged.
One row per IRM-to-invoice mapping
A row is one IRM against one shipping bill, Softex or invoice. Either side may repeat:- One remittance settling several invoices. Repeat the IRM columns on one row per invoice, with a different
SB Cum Invoice Number,Bill NoandMapped IRM Amount FCCon each. The mapped amounts for one IRM must add up to no more than the amount still available on it; the whole file is refused if they do not. The two example rows show this:IRMNUMBER123maps 6,000 to shipping bill1234567and 4,000 to shipping bill1234568, out of a 10,000 remittance. - Several remittances settling one invoice. One row per remittance, each carrying the same
SB Cum Invoice Number. DGFT issues one eBRC per row, so the invoice ends up with one certificate per remittance.
Serial No, from 1 upwards.
The file is named ebrc-bulk-upload-template.xlsx and the sheet is named EBRC Bulk Upload.
Request example
curl --request GET \
--url 'https://api.ebrc.in/api/v1/genebrc/bulk-upload/template' \
--header 'x-api-key: <YOUR_API_KEY>' \
--output ebrc-bulk-upload-template.xlsx
Template columns
The template contains these 37 columns, in order. 19 are mandatory — a row missing any of them is rejected with a per-row error and nothing in the file is filed.| # | Column header | Required | Example row value |
|---|---|---|---|
| 1 | Serial No | Yes | 1 |
| 2 | Upload Type | Yes | 101 |
| 3 | Branch Sl No | Yes | 1 |
| 4 | IRM IFSC Code | Yes | HDFC0001234 |
| 5 | IRM AD Code | Yes | 0510215 |
| 6 | IRM Number | Yes | IRMNUMBER123 |
| 7 | IRM Date | Yes | 01/01/2024 |
| 8 | IRM FCC | Yes | USD |
| 9 | IRM Purpose Code | Yes | P0102 |
| 10 | IRM Remit Amt FCC | Yes | 10000 |
| 11 | SB Cum Invoice Number | Yes | 1234567 |
| 12 | SB Cum Invoice Date | Yes | 01/01/2024 |
| 13 | Port Code | Yes | INMAA1 |
| 14 | Bill No | Yes | SB123456 |
| 15 | SB Cum Invoice FCC | Yes | USD |
| 16 | SB Cum Invoice Value In FCC | Yes | 6000 |
| 17 | Mapped IRM Amount FCC | Yes | 6000 |
| 18 | Is Vostro | Yes | N |
| 19 | Vostro Type | No | |
| 20 | Mapped ORM Amount FCC | No | |
| 21 | Is Third Party Export | No | N |
| 22 | Commission Val Deduct | No | |
| 23 | Commission Val Info | No | |
| 24 | Discount Val Deduct | No | |
| 25 | Discount Val Info | No | |
| 26 | Insurance Val Deduct | No | |
| 27 | Insurance Val Info | No | |
| 28 | Other Deduction Deduct | No | |
| 29 | Other Deductions Info | No | |
| 30 | Freight Val Deduct | No | |
| 31 | Freight Val Info | No | |
| 32 | SAC Code 1 | No | |
| 33 | SAC Code 2 | No | |
| 34 | Service Type Modes Value | No | |
| 35 | Is GST Avail | Yes | N |
| 36 | GSTIN Invoice Number | Conditional | |
| 37 | GSTIN Invoice Date | Conditional |
Conditional means required when Is GST Avail is Y, and it must be left empty when it
is N.
Full formats and constraints for each field are in the
Push IRM Request Fields annexure under the field of the same name.
The annexure documents the DGFT specification, which marks
mappedORMAmountFCC and
isThirdPartyExport as required. Our Excel validation treats both as optional and will
accept a file without them. DGFT may still reject such a filing downstream, so populate them
when they apply to your consignment.Column and value formats
- Header text is matched by name, case-insensitively and ignoring spaces and punctuation.
SB Cum Invoice Number,sbcuminvoicenumberandInvoice Numberall resolve to the same field, so a header your ERP exports in a different case still works. Column order does not matter; only the header text does. Unrecognised columns are ignored. - Dates are accepted as
DD/MM/YYYY,DD-MM-YYYY,DDMMYYYY,YYYY-MM-DD, or a real Excel date cell, and are normalised to DGFT’sDDMMYYYYbefore filing. Ambiguous values are always read day-first:01/02/2024is 1 February, never 2 January. A well-formed but impossible date such as31/02/2024is rejected rather than filed. - Y/N columns (
Is Vostro,Is Third Party Export,Is GST Avail) accept either case —yandYboth work. Anything else, includingYesandTrue, is rejected. - Numeric columns may arrive as numbers or as text;
"10000"and10000are equivalent. - Fully blank rows are skipped, so trailing empty rows in the sheet are harmless.
Valid codes
- Purpose Codes for IRM Purpose Code
- Currency Codes for IRM FCC and SB Cum Invoice FCC
- Port Codes for Port Code
Next steps
- Upload the filled file.
- Want the template pre-filled with real IRM data? Use Load IRMs in Excel.
Authorizations
Response
200 - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Excel template file (.xlsx)
The response is of type file.