diff --git a/source/assets/images/creating-custom-design/create_edit_design_settings_page.png b/source/assets/images/creating-custom-design/create_edit_design_settings_page.png new file mode 100644 index 00000000..15c33301 Binary files /dev/null and b/source/assets/images/creating-custom-design/create_edit_design_settings_page.png differ diff --git a/source/assets/images/creating-custom-design/custom_designs_list.png b/source/assets/images/creating-custom-design/custom_designs_list.png new file mode 100644 index 00000000..eb2c82fb Binary files /dev/null and b/source/assets/images/creating-custom-design/custom_designs_list.png differ diff --git a/source/assets/images/creating-custom-design/design_import_popup.png b/source/assets/images/creating-custom-design/design_import_popup.png new file mode 100644 index 00000000..e98ab4cb Binary files /dev/null and b/source/assets/images/creating-custom-design/design_import_popup.png differ diff --git a/source/assets/images/creating-custom-design/design_selecting_invoice_entity_example.png b/source/assets/images/creating-custom-design/design_selecting_invoice_entity_example.png new file mode 100644 index 00000000..62698be5 Binary files /dev/null and b/source/assets/images/creating-custom-design/design_selecting_invoice_entity_example.png differ diff --git a/source/assets/images/creating-custom-design/new_tutorial_design.png b/source/assets/images/creating-custom-design/new_tutorial_design.png new file mode 100644 index 00000000..6d27ded9 Binary files /dev/null and b/source/assets/images/creating-custom-design/new_tutorial_design.png differ diff --git a/source/assets/images/pdf_customization/custom_design_html_mode.png b/source/assets/images/pdf_customization/custom_design_html_mode.png new file mode 100644 index 00000000..0b218fc6 Binary files /dev/null and b/source/assets/images/pdf_customization/custom_design_html_mode.png differ diff --git a/source/assets/images/subscriptions/payment_link_overview.png b/source/assets/images/subscriptions/payment_link_overview.png new file mode 100644 index 00000000..5fe997b6 Binary files /dev/null and b/source/assets/images/subscriptions/payment_link_overview.png differ diff --git a/source/assets/images/subscriptions/payment_link_products_dropdown.png b/source/assets/images/subscriptions/payment_link_products_dropdown.png new file mode 100644 index 00000000..d61d8723 Binary files /dev/null and b/source/assets/images/subscriptions/payment_link_products_dropdown.png differ diff --git a/source/assets/images/subscriptions/payment_link_settings.png b/source/assets/images/subscriptions/payment_link_settings.png new file mode 100644 index 00000000..27360fd1 Binary files /dev/null and b/source/assets/images/subscriptions/payment_link_settings.png differ diff --git a/source/assets/images/subscriptions/payment_link_steps.png b/source/assets/images/subscriptions/payment_link_steps.png new file mode 100644 index 00000000..37b84e5a Binary files /dev/null and b/source/assets/images/subscriptions/payment_link_steps.png differ diff --git a/source/assets/images/subscriptions/payment_link_webhook.png b/source/assets/images/subscriptions/payment_link_webhook.png new file mode 100644 index 00000000..5587279b Binary files /dev/null and b/source/assets/images/subscriptions/payment_link_webhook.png differ diff --git a/source/assets/images/subscriptions/payment_links_list.png b/source/assets/images/subscriptions/payment_links_list.png new file mode 100644 index 00000000..ec6d69b4 Binary files /dev/null and b/source/assets/images/subscriptions/payment_links_list.png differ diff --git a/source/en/clients.md b/source/en/clients.md index 08022d13..68060101 100644 --- a/source/en/clients.md +++ b/source/en/clients.md @@ -101,6 +101,10 @@ Most of the information in a client entry or edit form is entirely optional, and - **VAT Number** - The VAT number field is a Value Added Tax ID number which applies mostly to countries from the European Union who need to track this sometimes for tax purposes. - **Website** - Your client's website, optional, and for reference. - **Phone** - Primary phone contact number for the client, organization, or business, separate from any individual contact's phone number within the client entry. +- **Routing ID** - Used for storing the eInvoice routing number which is assigned as an address to locate this client when delivering eInvoices. +- **Valid VAT Number** - Check this if a valid VAT number is supplied because in some jurisdictions, this may change the way tax is applied to the client (only works when "Calculate Taxes" is turned on under _Settings>Tax Settings_.) +- **Tax Exempt** - This only works when "Calculate Taxes" is turned on under _Settings>Tax Settings_. It will result in no taxes being applied by default for invoices created for this client. +- **Classification** - This is for optionally storing the type of customer this is for your own purposes. Options in the dropdown list are: Individual, Business, Partnership, Trust, Charity, Government, Other. ### Contacts diff --git a/source/en/custom-fields.md b/source/en/custom-fields.md index ca3d4d58..55453037 100644 --- a/source/en/custom-fields.md +++ b/source/en/custom-fields.md @@ -18,12 +18,11 @@ documentation. ### Getting all available selectors on the design -To make sure we can target all elements easily & make changes available faster to you, we introduced the "Draft" mode. -To turn on "Draft" mode, make sure you toggle: +To make sure we can target all elements easily & make changes available faster to you, turn on "HTML Mode": -Settings (Advanced settings) > Invoice Design > Customize & preview > Draft mode: +Settings (Advanced settings) > Invoice Design > Custom Designs (edit) > HTML Mode: -![alt text](/assets/images/pdf_customization/draft-mode.png "Toggling draft mode") +![alt text](/assets/images/pdf_customization/custom_design_html_mode.png "Toggling HTML mode") Let's select the item column: @@ -67,45 +66,89 @@ or just curious about understanding how templates work. ### Creating a design entry -Let's start by cloning the existing design. -To do so, open the admin panel and navigate to **Settings > Invoice Design > Customize & Preview**. +Let's start by cloning an existing design. To do so, open the admin panel and navigate to **Settings > Invoice Design > Custom Designs > New Design**. -The base design isn't important if you have a completely new design in mind. Name your design and click **Save**. +From this list you can create, edit, archive and delete custom designs. + +![alt text](/assets/images/creating-custom-design/custom_designs_list.png) + +Creating a new design: -![alt text](/assets/images/creating-custom-design/01-creating-design-entry.png "Creating a design entry") +![alt text](/assets/images/creating-custom-design/new_tutorial_design.png "Creating a design entry") -We will name ours **Tutorial** and turn on **HTML Mode** to see changes more quickly. +We will name ours **Tutorial** and base it off of the "Clean" existing design. + +The base design isn't important if you have a completely new design in mind. Name your design and click **Save**. ### Design structure -On the top of the page we should see tabs such as, **Body**, **Header**, **Footer**, **Products**, **Includes**. +On the top of the page we should see tabs such as, **Settings**, **Body**, **Header**, **Footer**, **Includes**, **Variables**. This is how design is structured and for the most part, you can leave at is. We will spend most of our time in **Includes** and **Body** sections. +#### Settings + +![alt text](/assets/images/creating-custom-design/create_edit_design_settings_page.png "Design Edit or Create - Settings Page") + +On the settings page, you can control how your design behaves while developing. + +- Name: This is the name of your design +- Design: This is a dropdown list of existing designs; selecting an option will override your current design with the selected one. +- Entity: Select the type of item the design is for; Invoice, Quote, Credit, or Purchase Order. +- Invoice: In this example, the dropdown below the Entity dropdown is titled "Invoice" because we have selected the entity as Invoice. This will provide a list of recent items that are the type of entity you selected, so you can preview how your design would look based on the selected item. + - Ex. We could select invoice #0027 to see that invoice's data (client, items, etc.) populated on the preview in real time as we are changing the design. Note: Changing the design doesn't modify the invoice itself; this only serves as a preview tool to see how it would apply to the selected invoice. + - ![alt text](/assets/images/creating-custom-design/design_selecting_invoice_entity_example.png "Selecting invoice entity example") +- View Docs: This is a link which opens the current page you are reading (documentation on custom designs). +- Import: This allows you to paste the code of a design you wish to import. The code to paste is obtained from selecting "Export" in the source design you're copying. + - ![alt text](/assets/images/creating-custom-design/design_import_popup.png) +- Export: This button will copy the code of the design to your clipboard. You can use this to import to another design. + #### Body -As the name suggests this is the heart of the design. This is where we will organize -our elements. +As the name suggests this is the heart of the design. This is where we will organize our elements. The HTML code of the body is all here. #### Header -If you want to be fully semantic & fully follow HTML standards, this is where -you should place your header content. +If you want to be fully semantic & fully follow HTML standards, this is where you should place your header content. #### Footer Just like the header, this is a more semantic section for footer content. -#### Products - -At the moment of the writing, this is **unsupported** feature. In the future, -it will allow you to dynamically allocate table columns. - #### Includes This is where your styles go. +#### Variables + +This is a list of some of the variables which are available to the current design. Clicking on a variable will copy it to the clipboard, so it can be pasted in the design. + +### Other Tabs + +You will see several additional tabs under Settings>Invoice Design. + +- General Settings + - This is where you can customize general settings for the _selected_ design. Toggling "Update all records" will apply your changes to all past records that were created with that design. + - Ex. Page Layout, Page Size, Font Size, Logo Size, Fonts, Colors, Page Numbering... + - Note that changing a design does not change invoices/records that were previously created using that design; to apply changes to all existing records, select "Update all records" after making a change. +- Custom Designs + - This is where you can create & edit custom designs. + +The remaining tabs listed below control which fields/variables/columns display on **all designs** that contain the data. For example, to include the client's VAT Number, you would add that field under the Client tab, and it would show on all invoices. + +- Client +- Company +- Company Address +- Invoice +- Quote +- Credit +- Vendor +- Purchase Order +- Product Columns +- Task Columns +- Total Fields + ### Requirements Before we start customizing/coding our own design, keep in mind that Invoice Ninja has some requirements. @@ -125,11 +168,7 @@ They are specific IDs for contents. To get specific selectors, please refer to [Getting all available selectors on the design](#getting-all-available-selectors-on-the-design). -If it's easier for you to develop a static template first, you can always copy the source code provided -under Settings tab and develop locally, copying changes into Invoice Ninja once you're happy -with the design. - -![alt text](/assets/images/creating-custom-design/02-showing-the-source-code.png "Grabbing the source PDFs' source code") +If it's easier for you to develop a static template first, you can always copy the source code provided under Settings tab and develop locally, copying changes into Invoice Ninja once you're happy with the design. ### Selectors diff --git a/source/en/einvoicing.md b/source/en/einvoicing.md index 5599c5e6..723c6cf7 100644 --- a/source/en/einvoicing.md +++ b/source/en/einvoicing.md @@ -3,25 +3,27 @@ extends: _layouts.user_guide section: content locale: en --- - -# e-invoices ***ALPHA RELEASE - NOT FOR PRODUCTION USE*** +# E Invoicing ## Introduction e-invoicing is rapidly being adopted in many jurisdictions. Invoice Ninja has supported UBL format invoices for some time and now we also support a range of e-invoice formats including direct delivery of e-invoices over the PEPPOL network. +All of the supported e-invoice standards can be downloaded directly after creating a standard invoice in Invoice Ninja. In some jurisdictions you are able to forward the e-invoice directly to your customer, however in some regions (ie, Italy) the invoice is sent through the government and then forwarded onto the customer. This introduces a number of complexities including both parties being registered with the government body (SDI for Italy). If you are in one of these jurisdictions, you will need to start the process (if you have not already) in acquiring a government routing ID. + ## e-invoice standards The list of supported e-invoice formats include: -- Facturae (Spain) -- FatturaPA (Italy) -- FACT1 (Romania) -- Zugferd - XRechung (Germany) -- EN16931 (Generic) -- PEPPOL (Universal - Cross industry / border) +- [PEPPOL (Universal - Cross industry / border)](#peppol) +- [ZUGFeRD - XRechung (Germany)](#zugferd) +- [Facturae (Spain)](#facturae) +- [FatturaPA (Italy)](#fatturapa) +- [FACT1 (Romania)](#fact1) +- [EN16931 (Generic)](#en16931) -## How does it work? -All of the supported e-invoice standards can be downloaded directly after creating a standard invoice in Invoice Ninja. In some jurisdictions you are able to forward the e-invoice directly to your customer, however in some regions (ie, Italy) the invoice is sent through the government and then forwarded onto the customer. This introduces a number of complexities including both parties being registered with the government body (SDI for Italy). If you are in one of these jurisdictions, you will need to start the process (if you have not already) in acquiring a government routing ID. +## PEPPOL +***ALPHA RELEASE - NOT FOR PRODUCTION USE*** +## How does it work? Invoice Ninja will be rolling out a PEPPOL access point which will be available for both self hosted and hosted users to route their e-invoices through the PEPPOL network. ## How do I get started? @@ -255,4 +257,30 @@ The city field for county RO-B must be SECTOR1 - SECTOR6. ### SE - Sweden Receiver needs to be registered with Svefaktura to receive the e-invoice +## ZUGFeRD + +CBA PowerBoard + +Enabling ZUGFeRD is as simple as enabling e-invoicing in Settings > E-Invoice, selecting the appropriate X format you wish to generate and save! As the ZUGFeRD is very comprehensive, you can also embed the einvoice within the PDF document itself, simply toggle on the Merge E-Invoice and PDF switch and then save. + +** NOTE ** + +The ZUGFeRD standard does not accept negative valued invoices. Historically some users may have used a negative invoice to indicate a Credit Note, this is no longer possible. Instead a dedicated Credit Note should be generated with matching POSTIVE values which reflect the credit you wish to assign. + +## Facturae + +Spanish e-invoice documents are supported and generate valid documents. these can be uploaded into the FACe system. + +## FatturaPA + +Italian e-invoices can be generated, however as there is no connection in the SDI as yet. This format is not currently production ready. + +## FACT1 + +Romanian e-invoices can be generated, however as there is no delivery connection as yet. This format is not currently production ready. + +## EN16931 + +Standard EN16931 documents can be generated and downloaded as needed. + Invoices diff --git a/source/en/email-customization.md b/source/en/email-customization.md index daf60214..23c08c5d 100644 --- a/source/en/email-customization.md +++ b/source/en/email-customization.md @@ -10,17 +10,20 @@ locale: en Customizing the content of you emails should be simple and painfree! By default we include a range of default - translated - templates which should suit most use cases! If you prefer to extend and customize the emails your clients please read on! -## WYSIWYG Edior +## WYSIWYG Editor + +(What You See Is What You Get) ![alt text](/assets/images/reminders_templates/template_editor.png "Email content editor") To start editing and customizing your emails navigate to: ```bash -Settings > Templates & Reminmders +Settings > Templates & Reminders ``` -From here you'll see the first panel with a dropdown selector where you can select each of your email templates. In Invoice Ninja there are templates for Invoices, Quotes, Credits, Statements, Reminders, Purchase Orders and also up to 3 custom templates where you can curate your own templates. +From here you'll see the first panel with a dropdown selector where you can select each of your email templates. In Invoice Ninja there are templates for Invoices, Quotes, Payments, Credits, Statements, Reminders, Purchase Orders and also up to 3 custom templates where you can curate your own templates. + Selecting a template will replace the content in the panel beneath it where it can be updated and saved. ## Invoice Email Customization @@ -29,7 +32,7 @@ The custom fields available for Invoices / Quotes and Credits are the same ones ## Payment Email Customization -The following are a basic list of support $variables that are supported in a payment email: +The following are a basic list of $variables that are supported in a payment email: ```bash $view_link - A plain html link to view the payment ie https://invoice.ninja/client/payment/123 diff --git a/source/en/subscriptions.md b/source/en/subscriptions.md index e3af24ea..bc39fdd1 100644 --- a/source/en/subscriptions.md +++ b/source/en/subscriptions.md @@ -4,37 +4,37 @@ section: content locale: en --- -# Subscriptions +# Payment Links ## Introduction -Subscriptions are a supercharged version of our Buy Now links from version 4. +Payment Links (previously known as Subscriptions) are a supercharged version of our Buy Now links from version 4. -In version 5 subscriptions allow you to build an instant shop front where you can bundle your existing products into direct link purchases. +In version 5, payment links allow you to build an instant shop front where you can bundle your existing products into direct link purchases. -![alt text](/assets/images/subscriptions/subscription_list.png "Subscription list") +![alt text](/assets/images/subscriptions/payment_links_list.png "Payment Links list") -![alt text](/assets/images/subscriptions/subscription_overview.png "Subscription overview") +![alt text](/assets/images/subscriptions/payment_link_overview.png "Payment Link overview") -When you create a subscription a direct link is generated which is available to use to directly purchase the given subscription. It is important to note that even thou we have termed this functionality subscriptions, you can still generate direct links to one time purchases. This could be suitable for digital sales that are one time rather than recurring. +When you create a payment link, a direct link is generated which is available to use to directly purchase the given product(s). This could be suitable for digital sales that are one time, or recurring, or even both at once. -![alt text](/assets/images/subscriptions/subscription_products.png "Subscription products") +![alt text](/assets/images/subscriptions/payment_link_products_dropdown.png "Subscription products") -When you create the subscription you are able to combine one time and recurring products into a single subscriptions. For example, lets say you run a hosting business and want to create a subscription which has a single Setup charge as well as a monthly recurring charge for the server. +When you create the payment link you are able to combine one time and recurring products into a single payment link. For example, lets say you run a hosting business and want to create a payment link which has a single Setup charge as well as a monthly recurring charge for the server. -When your client purchases this, the Setup charge will only be applied to the first invoice, and then a recurring invoice is generated for any recurring products in the subscription. +When your client purchases this, the Setup charge will only be applied to the first invoice, and then a recurring invoice is generated for any recurring products in the payment link. -If you want to allow your clients to move between subscriptions then this is possible by creating a Group and adding each subscription to the group. This bundles all of the subscriptions tagged with the same group together! +If you want to allow your clients to move between subscriptions then this is possible by creating a Group and adding each payment link to the group. This bundles all of the payment links tagged with the same group together! -![alt text](/assets/images/subscriptions/subscription_settings.png "Subscription settings") +![alt text](/assets/images/subscriptions/payment_link_settings.png "Subscription settings") The settings pane allows you to define the frequency / auto billing and also promo codes/discounts. We also have integrated the ability for end user self service to change between subscriptions or even cancel these subscriptions. We also handle the accounting for you for refunds if they are defined. -![alt text](/assets/images/subscriptions/subscription_webhooks.png "Subscription webhooks") +## Webhook configuration -The final piece of the subscriptions puzzle is integrating with third party services. When a subscription is purchased / cancelled / upgraded we can notify a third party end point! +The final piece of the payment links puzzle is integrating with third party services. When a subscription is purchased / cancelled / upgraded we can notify a third party endpoint! -## Webhook configuration +![alt text](/assets/images/subscriptions/payment_link_webhook.png "Subscription webhooks") If you need to control events that occur outside of Invoice Ninja, you can configure the webhook endpoints to receive information as the user is stepping through the checkout process. All endpoints must be supported if you activate this feature of the application as the app will fail to proceed without a successful response from each of the following: @@ -60,7 +60,7 @@ This request queries the endpoint whether the client/contact is eligible to cont #### Parameters **context**: (string) The context identifier, `is_eligible` -**subscription**: The id of the subscription +**subscription**: The id of the subscription (payment link) **contact**: The id of the contact **contact_email**: The contact email **client**: The id of the client @@ -88,7 +88,7 @@ A failed request would return the an array like this: ### Start Trial -If you have configured your subscription to be a trial based subscription. Then after the eligibility check, the system will attempt to start the trial, your endpoint will receive a payload like this: +If you have configured your payment link to be a trial based subscription. Then after the eligibility check, the system will attempt to start the trial, your endpoint will receive a payload like this: ``` { @@ -103,7 +103,7 @@ If you have configured your subscription to be a trial based subscription. Then #### Parameters **context**: (string) The context identifier, `trial` -**recurring_invoice**: The id of the recurring invoice that was generated based on the subscription +**recurring_invoice**: The id of the recurring invoice that was generated based on the payment link **client**: The id of the client **subscription**: The subscription id **account_key**: A client reference (client.custom_value2) @@ -147,8 +147,8 @@ When a recurring subscription is created for the first time, a payload is sent t #### Parameters **context**: (string) The context identifier, `recurring_purchase` -**recurring_invoice**: The id of the recurring invoice that was generated based on the subscription -**invoice**: The id of the invoice that was generated based on the subscription +**recurring_invoice**: The id of the recurring invoice that was generated based on the payment link +**invoice**: The id of the invoice that was generated based on the payment link **client**: The id of the client **contact**: The id of the contact **subscription**: The subscription id @@ -176,7 +176,7 @@ A failed request would return the an array like this: ### Single Purchase -Where your subscription is only for a standard product, and _not_ a recurring product, then your endpoint will receive a single purchase webhook with the following configuration: +Where your payment link is only for a standard product, and _not_ a recurring product, then your endpoint will receive a single purchase webhook with the following configuration: ``` { @@ -191,7 +191,7 @@ Where your subscription is only for a standard product, and _not_ a recurring pr #### Parameters **context**: (string) The context identifier, `single_purchase` -**invoice**: The id of the invoice that was generated based on the subscription +**invoice**: The id of the invoice that was generated based on the payment link **client**: The id of the client **subscription**: The subscription id **account_key**: A client reference (client.custom_value2) @@ -249,8 +249,8 @@ When a client changes plans, there may be either a credit due, or a payment depe #### Parameters **context**: (string) The context identifier, `change_plan` -**invoice**: The id of the invoice that was generated based on the subscription -**credit**: The id of the credit that was generated based on the subscription **note** this field, _may_ be blank if no credit was generated +**invoice**: The id of the invoice that was generated based on the payment link +**credit**: The id of the credit that was generated based on the payment link **note** this field, _may_ be blank if no credit was generated **client**: The id of the client **contact**: The id of the contact **subscription**: The subscription id @@ -295,7 +295,7 @@ If you allow subscription cancellations, then the following payload is forwarded **context**: (string) The context identifier, `cancellation` **subscription**: The subscription id -**recurring_invoice**: The id of the recurring invoice that was generated based on the subscription +**recurring_invoice**: The id of the recurring invoice that was generated based on the payment link **client**: The id of the client **contact**: The id of the contact **account_key**: A client reference (client.custom_value2) @@ -337,7 +337,7 @@ A daily check is performed to check if any subscriptions have gone past their du **context**: (string) The context identifier, `plan_expired` **subscription**: The subscription id -**invoice**: The id of the invoice that was generated based on the subscription +**invoice**: The id of the invoice that was generated based on the payment link **client**: The id of the client #### Response @@ -380,8 +380,8 @@ When a payment for a subscription is made (ie for a renewal), a Plan Paid webhoo **context**: (string) The context identifier, `plan_expired` **subscription**: The subscription id -**recurring_invoice**: The id of the recurring invoice that was generated based on the subscription -**invoice**: The id of the invoice that was generated based on the subscription +**recurring_invoice**: The id of the recurring invoice that was generated based on the payment link +**invoice**: The id of the invoice that was generated based on the payment link **client**: The id of the client **contact**: The id of the contact **account_key**: A client reference (client.custom_value2)