India's New GST Invoice Format

Friend, this is a nice free software and there should be some sort of contribution from our side to run our business. I have been doing this too…
Get the invoice copy in PDF, seal mark them as Original, Duplicate or Triplicate, print this PDF again using a PDF writer and there you get all the copies, which is not easy to edit. Should I send some sample images?

3 Likes

Please read this too…
From the above report, if manual calculation is made, we will know our tax liability. PLEASE NOTE THAT THE REQUIRED FILING HAS TO BE DONE IN PRESCRIBED FORMAT AND IT CAN BE DONE BY A TAX PRACTITIONER or YOU CAN USE FILING SOFTWARES AVAILABLE ONLINE.


2 Likes

As you consider and discuss the challenges presented by these new requirements, make sure you have read this Guide:

https://www.manager.io/guides/best-practices/multi-component-custom-tax-codes

If I interpret @anoopchintu correctly, the Guide illustrates his approach.

2 Likes

Yes, That’s true… @anoopchintu described things very nicely. But I don’t know that we can make invoice format by our self and not as per the GST probable example given…
If you are true about Invoice format than its so much easy for manager team and for us also.

I completely Don’t understand the tax credit calculations… :cry:

@lubos

Is there a way to lock the business and transaction details?

I have tried the lock date under settings but that does not lock the business details shown on invoices, etc.
After GST implementation all business will be given a different business identifier. So the documents before and after 1st July should have the details that were relevant during that period. I have seen that changing the business details does change everything prior to the lock date set as well. Any advice regarding this?

1 Like

Are we talking a totally different identifier or an amendment to the existing one. In other countries with such changes they just added a two digit prefix to the existing identifier so it had dual usage.

Totally different.

Presently we have the following,

  1. Central Excise Number
  2. TIN Number
  3. CST Number
  4. Import Export Code

After GST every business will have only one GSTIN number instead of the above four.

1 Like

Come on @sharpdrivetek really? Manager should do that also? We haven’t even found solution to the invoice disclosure requirement and now this? I haven’t seen any accounting application that is able to Lock company info. I don’t know how easy it will be but I think Changing business info like what is happening in your country doesn’t really happen often in the business world, and will be time wasting to try to build it into it.

Even if a company is sold and the details changes, you will have to make a backup of old records, change the details and move on from there.

My advice, make a backup of old records so that you can easily upload and print them for whatever purpose with your old details on it

3 Likes

That is simple…

I have customized a template for Indian users. It is limited to the known html variables and my knowledge. So those who find it useful may use the following template.

<table style="padding: 20px 20px">
<thead>
    <tr>
        <td colspan="99">
            <table style="margin-bottom: 10px"><tr>
                <td style="font-weight: bold; font-size: 32px">{% if title != 'Invoice' %}{{ title }}{% endif %}{% if title == 'Invoice' %}{{ title | replace: "Invoice", "Tax Invoice" }}{% endif %}</td>
                {% if business.logo != null %}<td style="text-align: right"><img src="{{ business.logo }}" style="max-height: 100px; max-width: 300px"></td>{% endif %}
            </tr></table>
            
            <table style="margin-bottom: 20px"><tr>
                <td style="width: 200px; border-left-width: 5px; padding-left: 10px; text-align: left">
                    {% for field in fields %}
                    <div style="font-weight: bold; font-size: 12px">{{ field.label }}</div>
                    <div style="margin-bottom: 10px; font-weight: bold; font-size: 16px">{{ field.text }}</div>
                    {% endfor %}
                </td>
                {% if title == 'Invoice' %}
                <td style="width: 260px; padding-left: 20px; border-color: #000000; border-left-width: 1px">
                {% for field in custom_fields %}
                {% if field.label == "Shipped To:" %}{% continue %}{% endif %}
                {% if field.label == "Notes" %}{% continue %}{% endif %}
                <div style="font-size: 12px; padding-bottom: 10px"><b>{{ field.label }}</b> {{ field.text | newline_to_br }}</div>
                {% endfor %}</td>{% endif %}
                <td style="width: 300px; padding-left: 10px; padding-right: 5px; text-align: left; vertical-align: top; border-top-width: 3px; border-bottom-width: 5px">
                    <div style="text-align:LEFT;font-weight: bold;font-size: 18px">{{ business.name }}</div>
                    <div style="text-align:LEFT;font-size: 12px">{{ business.address | newline_to_br }}</div>
                    <div style="text-align:LEFT;font-weight: bold;font-size: 14px">{{ business.identifier }}</div>
                </td>
            </tr></table>
            <table style="margin-bottom: 20px">
            <td style="width: 380px; text-align: left; border-color: #000000; border-bottom-width: 2px; border-top-width: 2px; border-left-width: 2px; border-right-width: 2px">
                {% if title == 'Invoice' %}<div style="padding-left: 5px; border-bottom-width: 2px; text-align:LEFT;font-weight: bold">Billed To:</div>{% endif %}
                <div style="padding-left: 20px">
                <div><b>{{ recipient.name }}</b> {{ recipient.code }}</div>
                <div>{{ recipient.address | newline_to_br }}</div>
                <div><b>{{ recipient.identifier }}</b></div></div>
            </td>
            {% if title == 'Invoice' %}{% for field in custom_fields %}{% if field.label == 'Shipped To:' %}
                <td style="width: 375px; padding-left: 5px; text-align: left; border-color: #000000; border-bottom-width: 2px; border-top-width: 2px; border-left-width: 0px; border-right-width: 2px">
                    <div style="padding-left: 5px; border-bottom-width: 2px; text-align:LEFT;font-weight: bold">{{ field.label }}</div>
                    <div style="padding-left: 20px">{{ field.text | newline_to_br }}</div>
                </td>{% endif %}{% endfor %}{% endif %}
            </table>

            <div style="font-size: 14px; font-weight: bold; margin-bottom: 20px">{{ description }}</div>
        </td>
    </tr>
    
    <tr>
        <td style="width: 25px; font-weight: bold; padding: 5px 5px; border-bottom-width: 1px; border-left-width: 1px; border-top-width: 1px; text-align:CENTER">#</td>
        {% for column in table.columns %}            
        <td style="font-weight: bold; padding: 5px 10px; text-align: {{ column.align }}; border-left-width: 1px; border-bottom-width: 1px; border-top-width: 1px{% if forloop.last == true %}; border-right-width: 1px{% endif %}{% if column.nowrap %}; white-space: nowrap; width: 80px{% endif %}">{{ column.label }}</td>
        {% endfor %}
    </tr>
</thead>
<tbody>
    {% assign i = 0 %}
    {% for row in table.rows %}
    {% assign i = i | plus: 1 %}
    <tr>
        <td style="width: 25px; padding: 5px 5px; border-left-width: 1px; text-align:CENTER">{{ i }}</td>
        {% for cell in row.cells %}
        <td style="padding: 5px 10px; text-align: {{ table.columns[forloop.index0].align }}; border-left-width: 1px{% if forloop.last == true %}; border-right-width: 1px{% endif %}{% if table.columns[forloop.index0].nowrap %}; white-space: nowrap; width: 80px{% endif %}">{{ cell.text | newline_to_br }}</td>
        {% endfor %}
    </tr>
    {% endfor %}
    <tr>
    {% for column in table.columns %}            
        <td style="border-bottom-width: 1px; border-left-width: 1px{% if forloop.last == true %}; border-right-width: 1px{% endif %}"></td>
    {% endfor %}
    </tr>
    {% for total in table.totals %}
    <tr>
        <td colspan="{{ table.columns | size }}" style="padding: 5px 10px; text-align: right{% if total.emphasis == true %}; font-weight: bold{% endif %}">{{ total.label }}</td>
        <td style="border-left-width: 1px; white-space: nowrap; border-right-width: 1px; border-bottom-width: 1px; padding: 5px 10px; text-align: right{% if forloop.first == true %}; border-top-width: 1px{% endif %}{% if total.emphasis == true %}; font-weight: bold{% endif %}">{{ total.text }}</td>
    </tr>
    {% endfor %}
    <tr><td colspan="{{ table.columns | size | plus:1 }}" style="border-right-width: 1px; border-top-width: 1px; border-bottom-width: 1px; border-left-width: 1px"><div style="font-size: 12px; padding-left: 10px; padding-right: 10px">{% for total in table.totals %}{% if total.label == 'Total' %}<b>INR {{ total.number | spell_out_rupees | capitalize }} Only</b></div>{% endif %}{% endfor %}</td></tr>
    {% for field in custom_fields %}
    {% if title == 'Invoice' %}
    {% if field.label != "Notes" %}{% continue %}{% endif %}
    {% endif %}
    <tr>
        <td colspan="99">
            <div style="font-weight: bold; padding-top: 20px">{{ field.label }}</div>
            <div>{{ field.text | newline_to_br }}</div>
        </td>
    </tr>
    {% endfor %}
</tbody>
<tfoot>
<tr>
    {% if title == 'Invoice' %}
    <td colspan="99">
        <div style="text-align: right; font-weight: bold">We declare that this invoice shows the actual price of the goods or<br>service described and that all particulars are true and correct.<br><br>For {{ business.name }}<br><br><br><br>Authorised Signatory</div></td>
    {% endif %}
</tr>
</tfoot>

The invoice sample looks as below.

The template is coded as per the following.

  1. “Billed To:” is the customer name and details updated in the Customers module.
  2. “Shipped To:” is a custom field created for Sales Invoice which should match the label exactly as “Shipped To:”
  3. The rest of the custom fields have been moved to the top beside invoice details.
  4. HSN code has to be created as a custom field under the Inventory items.
  5. The “Terms & Conditions” can be set as a default in the Notes field when making a Sales Invoice.

Create the Tax codes as a custom tax code under Settings. For example see below image.

9 Likes

@sharpdrivetek thanks for the template ,
But i think we have to show tax charged per line item in the invoice .

But sadly we don’t have any variable to show that ,
Also how you manage invoice numbering for invoices ,
As in our case we have to issue two types of invoices viz. Sale and tax
And both have different series of numbers
For ex in our case :
For tax invoice i use : 17/N1/01
And N1 is changed to N2 after 50 viz when invoice arrived to 51 numbering changes like 17/N2/51
17/N3/101
17/N4/151 and so on
.
And for sale invoice 17/SN1/01
17/SN2/51 and so on

How you tackle with this kind of problem .

I think @lubos you should give a custom feature like this to handle with these situations .

As of now only the tax rate can be shown when there are multiple tax rates in a single invoice. Not when there is only one tax rate. Also no tax value per line item. Need help from the developer regarding these.

I did not understand what you meant by that. As per the new GST rule there are only two types of invoice: Tax Invoice and Bill of Supply. So you should be making either of the two for any sale.

I think you are categorizing a set of invoice as books. 1 to 50 will go in Book 1, 51 to 100 will go in Book 2 and so on.

For this you can simply create a custom field with drop down list Book 1, Book 2, Book 3,etc which is set to show as a column but not printed. Then just number the invoice as 1700001 for the first invoice and the series will automatically continue. When making the invoice you can select the Book number from the custom field you created and using this you can easily sort the invoice list later.

2 Likes

Great work @sharpdrivetek , you are really helping people here

1 Like

just doing whatever i can @Abeiku

2 Likes

@lubos can you please provide me the code to implement the template as below.

Also, is there any update regarding the value in words?

1 Like

Ok i think mathematical operations are disabled in templates. The addition operation only appends the value side by side. There is nothing more i can do from my side regarding this.

You are simply great!!! I did copy this template, adjusted the alignment a bit, and it’s perfect for us Indians!
All the required details are there in the invoice, with custom codes… no one to beat us here!
@lubos Just a small help! As I mentioned in my earlier post, is there a way you can show the details of multiple tax codes in the Tax Transaction Report, if a Tax Code which has multiple rates called in? This will be of great help for Tax Filing…

2 Likes

Super bro. Thank you for sharing the code. It is very helpful.

3 Likes

how to add hsn code column in sales and invoice ?