# # Guide

Manage your Invoices / Bills at One Place.

## # Technologies Used

This system uses multiple technologies to give the best possible experience.

- PHP with Laravel Framework
- MySQL 5.6+
- PHP 8.1
- jQuery
- Ajax

## # Installation Guide

We tried our best to make the installation of the system as easy as possible. System Requirements It is assumed that you have primary knowledge Laravel installation knowledge since this application is built on Laravel.

### # System Requirement

It is assumed that you have primary knowledge Laravel and JS application installation knowledge since this application is built on Laravel with JS.

You can read about laravel Requirements here
(opens new window)

(Optional) You need update below variables in php.ini file if you want to send bigger files.

upload_max_filesize = 50M

max_file_uploads = 50

post_max_size = 100M

## # Setup InfyInvoices into Local Environment

You can setup InfyInvoices into your local by using both zip files, but we recommend to use dist file, so you have to perform minimal steps.

Here are some steps to setup InfyInvoices into your local environment :

### # 1. Install xampp/wamp (if you don't have it).

### # 2. Create folder `InfyInvoices`

- if you are using wamp then create InfyInvoices folder under you_path_to_wamp/www/
- if you are using xamp then create InfyInvoices folder under you_path_to_xamp/htdocs/

### # 3. Unzip dist zip to InfyInvoices folder

### # 4. Point the domain to the uploaded folder

You need to create virtual host first to setup InfyInvoices. You can find steps here to create virtual host.

- You can find steps here
  (opens new window) to create virtual host on `XAMPP`.
- You can find steps here
  (opens new window) to create virtual host on `WAMP`.

Point your domain or subdomain to the InfyInvoices folder.

Please note that, InfyInvoices must be installed on a primary domain or subdomain. Installing on a sub-folder will not work, for example:

        example.com/InfyInvoices (Invalid)
        localhost/InfyInvoices (Invalid) if you are putting it in sub folder or root website)
        example.com (Valid)
        local.InfyInvoices.com (Valid)
        InfyInvoices.test (Valid)

### # 5. Setup the project's details

Please Click Here to follow the next steps for project setup.

### # Setup InfyInvoices System

If you have purchased the InfyInvoices system then you will be able to find the zip named `dist.zip`.

If you want to setup `InfyInvoices` into your local environment then you can take help from here here.

Now if you want to setup InfyInvoices on your server then you can directly copy the `dist.zip` folder to your web root directory on a server and the following steps:

### # 1. Copy files to web server

Upload `dist.zip` to your web server's root (public_html) and extract it there.

### # 2. Setup Default DB

1. Open PHPMyAdmin on your server and do a login.

2. Click on the Databases tab.

3. Create a new database and specify a Database name of your choice and Click Create button.

4. Now on the left, select the database (infy_invoices) OR the one that you have created.

5. Click Import in the top menu

6. Under Import, choose the default sql file from `dist/database/infy_invoices.sql` and click button Go.

### # 3. Setup environment .env file

1. Open .env file from your server's root folder.

2. Update your .env file

You need to change the following information into your environment (.env) file.

    - APP_NAME - Name of your Application
    - APP_URL - Change this URL with your server URL (including trailing path if you are putting it in sub folder or root website)
    - DB_HOST - Put your database hostname here
    - DB_PORT - Put your database port here if it does not default to 3306
    - DB_DATABASE - Change it to your database name
    - DB_USERNAME - Name of your database user
    - DB_PASSWORD - Password of your database user

You will also need to set up mail configuration, you can read more about here for that setup based on mail service that you use.

    - MAIL_MAILER
    - MAIL_HOST
    - MAIL_PORT
    - MAIL_USERNAME
    - MAIL_PASSWORD
    - MAIL_ENCRYPTION
    - ADMIN_EMAIL
    - MAIL_FROM_ADDRESS=${ADMIN_EMAIL}
    - MAIL_FROM_NAME="${APP_NAME}"

If you want to store your files to direct your `s3` bucket then you have to use following `.env` variables. You need to change `FILESYSTEM_DRIVER` and `MEDIA_DISK` value to `s3` when you are using AWS file storage.

    - AWS_ACCESS_KEY_ID=
    - AWS_SECRET_ACCESS_KEY=
    - AWS_DEFAULT_REGION=us-east-1
    - AWS_BUCKET=
    - AWS_ENDPOINT=
    - AWS_URL=

Or you can use your choice of storage driver to store your media assets if you want. All of your attachments will be placed into that.

Set Stripe configuration it is using while Invoice Bill payments. Here are some links by using it you will get an idea about how to generate stripe API keys.

Link 1
(opens new window) Link 2
(opens new window)

    - STRIPE_KEY=
    - STRIPE_SECRET_KEY=
    - STRIPE_WEBHOOK_SECRET_KEY=

Set up the Razorpay Credentials into env:

You have to create account from Here and then you can find steps here to generate keys Here

    - RAZORPAY_KEY=
    - RAZORPAY_SECRET=

Then we have added another payment gateway called PayPal. Therefore, update the `.env` file with below keys and find the step to Setup PayPal credentials

### # Setup PayPal Credentials

You just need PayPal Client Id, PayPal Secret.

You can find steps here
(opens new window)

Once you get the PayPal Client Id and PayPal Secret add the below keys to your `env` file.

        PAYPAL_CLIENT_ID=
        PAYPAL_SECRET=

### # Cron jobs Setup

Enable recurring invoices in cPanel. Here is the link by using it you will get an idea about how to set the cron for the recurring invoices.

Link 1
(opens new window)

### # 4. Admin login

You can do admin login by accessing given URL.

`YOUR_APP_URL/login`

email: `admin@infy-invoices.com`

password: `123456`

## # Key Features and Concepts

Here are some Key Features and Concepts that InfyInvoices provides.

## # Multi languages Support

We are supporting 9 languages in each panel (Admin | Client)

- English
- Spanish
- French
- German
- Russian
- Portuguese
- Arabic
- Chinese
- Turkish

## # Admin Panel

### # Dashboard

Powerful admin dashboard where admin can see the overview of the application, what's going on, what are the revenue, etc.

### # Clients

You can create a client from the admin panel, and yes of course clients will get their separate panel, where they can see his assigned/sent invoices and perform related actions.

### # Products

You can create your products from where, which will be later used in invoice creation. You can define the price, set image and related information.

### # Product Categories

You can create different kinds of product categories which will be used in product creation, you can choose categories while creating products.

### # Taxes

You can create different kinds of taxes from here, e.g GST / IGST / etc with related percentages. Taxes will be used while creation of the invoice.

### # Transactions

All the invoices transactions will be listed here, either it will be manually or via stripe. you can see the detailed information here.

### # Payment

Admin can do payment of Invoice through cash mode.

### # Settings

You can manage to generate settings from here, like the app logo, favicon the currency, and company address.

Also, you can manage the number format and decimal separator settings from here.

### # Invoice Template

We are supporting the beautiful invoice template, which is used when you print the invoice template. You can manage the downloaded invoice format by using this interface.

### # Multi Currency

You can add your currency here, whatever you want to show before the price everywhere. The selected currency will be reflected everywhere in the project.

## # Multi Lingual

Its comes up with 9 different languages and multi currency options.

## # Client Panel

### # Dashboard

Attractive and Powerful dashboard from where client can see the overview of his invoices, how many invoices are still pending or paid, etc.

### # Invoices

Client can see only assigned invoices, he can print invoices and check details of it. Also clients can pay the invoice by manually or via the stripe payment gateway.

### # Pay Invoice

Clients can pay invoices by multiple ways. We are supporting the partial payment option, so let's say there is a $1000 invoice and the client wants to pay just $500 then he can choose Partial payment while paying the invoice.

Later when the client does the next payment he will just see $500 remains as he already paid $500.

### # Print Invoices

Clients can print the invoices from the details screen, we are supporting the attractive invoices templates.

### # Transactions

Here the client can see his invoices payment history and reports, whatever transaction he made will be recorded here.

## # Payment Gateways

We are supporting the stripe and paypal payment gateway to pay invoice from customer side.