Invoices, Expenses and Tasks built with Laravel and Flutter

Overview

Sublime's custom image

Invoice Ninja

Build Status Docs

Hosted | Self-Hosted

We're on Slack, join us at slack.invoiceninja.com or if you like StackOverflow

Just make sure to add the invoice-ninja tag to your question.

Note: v5 is now tagged Stable! To upgrade from v4 you need to install v5 as a separate app and then use the migration tool in the latest version of v4 on Settings > Account Management.

All Pro and Enterprise features from the hosted app are included in the open-code. We offer a $30 per year white-label license to remove the Invoice Ninja branding from client facing parts of the app.

The self-host zip includes all third party libraries whereas downloading the code from GitHub requires using Composer to install the dependencies.

Referral Program

  • Earn 50% of Pro & Enterprise Plans up to 4 years - Learn more

Mobile App

Installation Options

Recommended Providers

Development

Third Party Modules

Feel free to email us for help if you're working on a module, we're happy to provide developer support.

Third Party Tools

Third Party Developers

Contributing

All contributors are welcome!
For information on how contribute to Invoice Ninja, please see our contributing guide.

Credits

Special thanks to:

License

Invoice Ninja is released under the Elastic License 2.0 See LICENSE for details.

Comments
  • PHP 7.2 issues: count(): Parameter must be an array or an object that implements Countable

    PHP 7.2 issues: count(): Parameter must be an array or an object that implements Countable

    ErrorException in Builder.php line 1231:
    count(): Parameter must be an array or an object that implements Countable
    in Builder.php line 1231
    at HandleExceptions->handleError('2', 'count(): Parameter must be an array or an object that implements Countable', '/var/www/app/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php', '1231', array('scope' => object(Closure), 'parameters' => array(object(Builder)), 'query' => object(Builder)))
    at count(null) in Builder.php line 1231
    at Builder->callScope(object(Closure)) in Builder.php line 1262
    at Builder->applyScopes() in Builder.php line 325
    at Builder->get() in /var/www/app/app/Http/Middleware/StartupCheck.php line 208
    
            // Check data has been cached
            $cachedTables = unserialize(CACHED_TABLES);
            if (Input::has('clear_cache')) {
                Session::flash('message', 'Cache cleared');
            }
            foreach ($cachedTables as $name => $class) {
                if (Input::has('clear_cache') || ! Cache::has($name)) {
                    // check that the table exists in case the migration is pending
                    if (! Schema::hasTable((new $class())->getTable())) {
                        continue;
                    }
                    if ($name == 'paymentTerms') {
                        $orderBy = 'num_days';
                    } elseif ($name == 'fonts') {
                        $orderBy = 'sort_order';
                    } elseif (in_array($name, ['currencies', 'industries', 'languages', 'countries', 'banks'])) {
                        $orderBy = 'name';
                    } else {
                        $orderBy = 'id';
                    }
                    $tableData = $class::orderBy($orderBy)->get(); // This line right here is the error
                    if (count($tableData)) {
                        Cache::forever($name, $tableData);
                    }
                }
            }
    

    Clean install this happens immediately after setup is finished. Database tables exist. Clear compiled does not fix. Latest download as of 8pm Eastern on 12/05/2017

    compatibility fixed 
    opened by necrogami 47
  • Update from v5.4.9 to v5.5.6 not possible - Remote file not found

    Update from v5.4.9 to v5.5.6 not possible - Remote file not found

    Could not update. I think it's happen by the error, that the remote file not found on your servers. I've got an "Server Error" on update-frame in the web ui.

    PHP Version

    PHP 8.1.7 (cli) (built: Jun 14 2022 10:02:46) (NTS)
    Copyright (c) The PHP Group
    Zend Engine v4.1.7, Copyright (c) Zend Technologies
        with Zend OPcache v8.1.7, Copyright (c), by Zend Technologies
    
    curl https://github.com/invoiceninja/invoiceninja/releases/download/v5.5.7/invoiceninja.zip
    Not Found
    

    image

    laravel.log

    [2022-08-05 18:59:52] production.ERROR: copy(https://github.com/invoiceninja/invoiceninja/releases/download/v5.5.7/invoiceninja.zip): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
     {"userId":1,"exception":"[object] (ErrorException(code: 0): copy(https://github.com/invoiceninja/invoiceninja/releases/download/v5.5.7/invoiceninja.zip): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
     at /home/users/foobar/www/office.foobar.com/app/Http/Controllers/SelfUpdateController.php:126)
    [stacktrace]
    #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError()
    #1 /home/users/foobar/www/office.foobar.com/app/Http/Controllers/SelfUpdateController.php(126): copy()
    #2 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\SelfUpdateController->update()
    #3 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction()
    #4 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch()
    #5 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
    #6 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(721): Illuminate\\Routing\\Route->run()
    #7 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
    #8 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(127): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #9 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(63): Illuminate\\Routing\\Middleware\\ThrottleRequests->handleRequest()
    #10 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\ThrottleRequests->handle()
    #11 /home/users/foobar/www/office.foobar.com/app/Http/Middleware/QueryLogging.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #12 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\QueryLogging->handle()
    #13 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #14 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
    #15 /home/users/foobar/www/office.foobar.com/app/Http/Middleware/Locale.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #16 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\Locale->handle()
    #17 /home/users/foobar/www/office.foobar.com/app/Http/Middleware/PasswordProtection.php(124): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #18 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\PasswordProtection->handle()
    #19 /home/users/foobar/www/office.foobar.com/app/Http/Middleware/TokenAuth.php(99): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #20 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\TokenAuth->handle()
    #21 /home/users/foobar/www/office.foobar.com/app/Http/Middleware/SetDb.php(41): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #22 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\SetDb->handle()
    #23 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #24 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(723): Illuminate\\Pipeline\\Pipeline->then()
    #25 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(698): Illuminate\\Routing\\Router->runRouteWithinStack()
    #26 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\\Routing\\Router->runRoute()
    #27 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Routing/Router.php(651): Illuminate\\Routing\\Router->dispatchToRoute()
    #28 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch()
    #29 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
    #30 /home/users/foobar/www/office.foobar.com/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestIpMiddleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #31 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Sentry\\Laravel\\Http\\SetRequestIpMiddleware->handle()
    #32 /home/users/foobar/www/office.foobar.com/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Http/SetRequestMiddleware.php(42): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #33 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Sentry\\Laravel\\Http\\SetRequestMiddleware->handle()
    #34 /home/users/foobar/www/office.foobar.com/vendor/livewire/livewire/src/DisableBrowserCache.php(19): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #35 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Livewire\\DisableBrowserCache->handle()
    #36 /home/users/foobar/www/office.foobar.com/app/Http/Middleware/Cors.php(25): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #37 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\Cors->handle()
    #38 /home/users/foobar/www/office.foobar.com/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #39 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fideloper\\Proxy\\TrustProxies->handle()
    #40 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #41 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
    #42 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
    #43 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #44 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
    #45 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
    #46 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #47 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
    #48 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #49 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
    #50 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
    #51 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then()
    #52 /home/users/foobar/www/office.foobar.com/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
    #53 /home/users/foobar/www/office.foobar.com/public/index.php(57): Illuminate\\Foundation\\Http\\Kernel->handle()
    #54 {main}
    "}  
    
    bug fixed 
    opened by pthoelken 46
  • The MAC is invalid

    The MAC is invalid

    Hi. After installing version 2.6.3 I get the following error messages when accessing the both pages. All other pages seems to be ok. Any idea how to solve this error?

    https://{host}/settings/online-payment

    DecryptException in BaseEncrypter.php line 48:
    The MAC is invalid.
    in BaseEncrypter.php line 48
    at BaseEncrypter->getJsonPayload('eyJpdiI6IjZrSDR2KzVoaDdZTVB5SlJxWGk5dEE9PSIsInZhbHVlIjoiNVlFZXFvcFNveTlCYXhvUzhBUTRseVN2ZlVUY1d0QnhWaTFrZ1A0SG9kZ2ttcGhXcWtxV3QyNGN2dndcL0ZvVEJxZENcL2l1WlUzc2NLK24wMEVkRGxwc1Q5SGRBU0N0SFMrZWxrV1B3R1hYUTdrUGRPOEgwdTY5SWpMOFVPTFlmTnE2ZTFBVWc1VEFtWWQ3UHMzaDJPQXc9PSIsIm1hYyI6ImQ0ZjQ4ZTNiNzZkMzU3ZGM2NmE0YWFhMjY2YzA5ODIzMTQ2NjU0MmI4NTg4NzkyYTAxM2VjNWRlNzhmOTFkYWMifQ==') in McryptEncrypter.php line 115
    at McryptEncrypter->decrypt('eyJpdiI6IjZrSDR2KzVoaDdZTVB5SlJxWGk5dEE9PSIsInZhbHVlIjoiNVlFZXFvcFNveTlCYXhvUzhBUTRseVN2ZlVUY1d0QnhWaTFrZ1A0SG9kZ2ttcGhXcWtxV3QyNGN2dndcL0ZvVEJxZENcL2l1WlUzc2NLK24wMEVkRGxwc1Q5SGRBU0N0SFMrZWxrV1B3R1hYUTdrUGRPOEgwdTY5SWpMOFVPTFlmTnE2ZTFBVWc1VEFtWWQ3UHMzaDJPQXc9PSIsIm1hYyI6ImQ0ZjQ4ZTNiNzZkMzU3ZGM2NmE0YWFhMjY2YzA5ODIzMTQ2NjU0MmI4NTg4NzkyYTAxM2VjNWRlNzhmOTFkYWMifQ==') in Facade.php line 217
    at Facade::__callStatic('decrypt', array('eyJpdiI6IjZrSDR2KzVoaDdZTVB5SlJxWGk5dEE9PSIsInZhbHVlIjoiNVlFZXFvcFNveTlCYXhvUzhBUTRseVN2ZlVUY1d0QnhWaTFrZ1A0SG9kZ2ttcGhXcWtxV3QyNGN2dndcL0ZvVEJxZENcL2l1WlUzc2NLK24wMEVkRGxwc1Q5SGRBU0N0SFMrZWxrV1B3R1hYUTdrUGRPOEgwdTY5SWpMOFVPTFlmTnE2ZTFBVWc1VEFtWWQ3UHMzaDJPQXc9PSIsIm1hYyI6ImQ0ZjQ4ZTNiNzZkMzU3ZGM2NmE0YWFhMjY2YzA5ODIzMTQ2NjU0MmI4NTg4NzkyYTAxM2VjNWRlNzhmOTFkYWMifQ==')) in AccountGateway.php line 108
    at Crypt::decrypt('eyJpdiI6IjZrSDR2KzVoaDdZTVB5SlJxWGk5dEE9PSIsInZhbHVlIjoiNVlFZXFvcFNveTlCYXhvUzhBUTRseVN2ZlVUY1d0QnhWaTFrZ1A0SG9kZ2ttcGhXcWtxV3QyNGN2dndcL0ZvVEJxZENcL2l1WlUzc2NLK24wMEVkRGxwc1Q5SGRBU0N0SFMrZWxrV1B3R1hYUTdrUGRPOEgwdTY5SWpMOFVPTFlmTnE2ZTFBVWc1VEFtWWQ3UHMzaDJPQXc9PSIsIm1hYyI6ImQ0ZjQ4ZTNiNzZkMzU3ZGM2NmE0YWFhMjY2YzA5ODIzMTQ2NjU0MmI4NTg4NzkyYTAxM2VjNWRlNzhmOTFkYWMifQ==') in AccountGateway.php line 108
    at AccountGateway->getConfig() in AccountGateway.php line 117
    at AccountGateway->getConfigField('publishableKey') in AccountGateway.php line 129
    at AccountGateway->getPublishableStripeKey() in AccountController.php line 496
    at AccountController->showOnlinePayments() in AccountController.php line 320
    at AccountController->showSection('online_payments')
    at call_user_func_array(array(object(AccountController), 'showSection'), array('section' => 'online_payments')) in Controller.php line 80
    at Controller->callAction('showSection', array('section' => 'online_payments')) in ControllerDispatcher.php line 146
    at ControllerDispatcher->call(object(AccountController), object(Route), 'showSection') in ControllerDispatcher.php line 94
    at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
    

    or https://{host}/settings/templates_and_reminders

    ErrorException in compiled.php line 13218:
    The MAC is invalid. (View: /srv/www/vhosts/b-nova.com/subdomains/test-ninja/resources/views/accounts/templates_and_reminders.blade.php)
    in compiled.php line 13218
    at CompilerEngine->handleViewException(object(DecryptException), '1') in compiled.php line 15270
    at PhpEngine->evaluatePath('/srv/www/vhosts/b-nova.com/subdomains/test-ninja/storage/framework/views/c0d29888eb503f01ee9f63e5cd0f7e0bc42d3cc6.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'account' => object(Account), 'templates' => array('invoice' => array('subject' => 'Ihre Rechnung von $account', 'template' => '<div>Hallo $contact</div><div><br></div><div>Wir möchten uns nochmals für Ihren Auftrag bedanken. Anbei senden wir Ihnen die Rechnung. </div><div>Sie können diese auch online einsehen. Klicken Sie dazu einfach auf den Button. </div><div><br></div><div>$viewButton</div><div><br></div><div>$footer</div>'), 'quote' => array('subject' => 'Neues Angebot von $account', 'template' => '<div>$client,</div><br><div>Klicken Sie auf den folgenden Link um das Angebot über $amount anzuschauen.</div><br><div>$viewLink</div><br>$footer'), 'payment' => array('subject' => 'Zahlungseingang', 'template' => '<div>Hallo $contact</div><div><br></div><div>Ihre Zahlung ist bei uns eingegangen. Wir bedanken uns nochmals für Ihren Auftrag. </div><div><br></div><div style="text-align: center;">$viewButton</div><div><br></div><div>$footer</div>'), 'reminder1' => array('subject' => 'Erinnerung: Rechnung von $account', 'template' => '<div>Hallo $contact</div><div><br></div><div>Sicherlich haben Sie nur übersehen den noch offenen Betrag von $amount zu bezahlen. Bitte überweisen Sie diesen innerhalb 7 Tagen auf das angegebene Konto. </div><div>Die Rechnung können Sie online unter dem folgenden Link einsehen.</div><div><br></div><div>$viewButton</div><div><br></div><div>$footer</div>'), 'reminder2' => array('subject' => '2. Erinnerung: Rechnung von $account', 'template' => '<div>Hallo $contact</div><div><br></div><div>Wir bitten Sie den noch offenen Betrag von $amount innerhalb der nächsten 7 Tage zu überweisen. Sollten Sie den Betrag in der Zwischenzeit bereits bezahlt haben, so betrachten Sie dieses Schreiben als gegenstandslos. </div><div>Ihre Rechnung können Sie über den folgenden Button einsehen. </div><div><br></div><div style="text-align: center;">$viewButton</div><div><br></div><div>$footer</div>'), 'reminder3' => array('subject' => 'Erinnerung: Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer')), 'defaultTemplates' => array('invoice' => array('subject' => 'Neue Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer'), 'quote' => array('subject' => 'Neues Angebot von $account', 'template' => '<div>$client,</div><br><div>Klicken Sie auf den folgenden Link um das Angebot über $amount anzuschauen.</div><br><div>$viewLink</div><br>$footer'), 'payment' => array('subject' => 'Zahlungseingang', 'template' => '<div>$client,</div><br><div>Vielen Dank für Ihre Zahlung von $amount.</div><br><div>$viewLink</div><br>$footer'), 'reminder1' => array('subject' => 'Erinnerung: Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer'), 'reminder2' => array('subject' => 'Erinnerung: Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer'), 'reminder3' => array('subject' => 'Erinnerung: Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer')), 'emailFooter' => '<p><div>Mit freundlichen Grüßen, <br>$account</div></p>', 'title' => 'E-Mail Vorlagen')) in compiled.php line 15305
    at CompilerEngine->get('/srv/www/vhosts/b-nova.com/subdomains/test-ninja/resources/views/accounts/templates_and_reminders.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'account' => object(Account), 'templates' => array('invoice' => array('subject' => 'Ihre Rechnung von $account', 'template' => '<div>Hallo $contact</div><div><br></div><div>Wir möchten uns nochmals für Ihren Auftrag bedanken. Anbei senden wir Ihnen die Rechnung. </div><div>Sie können diese auch online einsehen. Klicken Sie dazu einfach auf den Button. </div><div><br></div><div>$viewButton</div><div><br></div><div>$footer</div>'), 'quote' => array('subject' => 'Neues Angebot von $account', 'template' => '<div>$client,</div><br><div>Klicken Sie auf den folgenden Link um das Angebot über $amount anzuschauen.</div><br><div>$viewLink</div><br>$footer'), 'payment' => array('subject' => 'Zahlungseingang', 'template' => '<div>Hallo $contact</div><div><br></div><div>Ihre Zahlung ist bei uns eingegangen. Wir bedanken uns nochmals für Ihren Auftrag. </div><div><br></div><div style="text-align: center;">$viewButton</div><div><br></div><div>$footer</div>'), 'reminder1' => array('subject' => 'Erinnerung: Rechnung von $account', 'template' => '<div>Hallo $contact</div><div><br></div><div>Sicherlich haben Sie nur übersehen den noch offenen Betrag von $amount zu bezahlen. Bitte überweisen Sie diesen innerhalb 7 Tagen auf das angegebene Konto. </div><div>Die Rechnung können Sie online unter dem folgenden Link einsehen.</div><div><br></div><div>$viewButton</div><div><br></div><div>$footer</div>'), 'reminder2' => array('subject' => '2. Erinnerung: Rechnung von $account', 'template' => '<div>Hallo $contact</div><div><br></div><div>Wir bitten Sie den noch offenen Betrag von $amount innerhalb der nächsten 7 Tage zu überweisen. Sollten Sie den Betrag in der Zwischenzeit bereits bezahlt haben, so betrachten Sie dieses Schreiben als gegenstandslos. </div><div>Ihre Rechnung können Sie über den folgenden Button einsehen. </div><div><br></div><div style="text-align: center;">$viewButton</div><div><br></div><div>$footer</div>'), 'reminder3' => array('subject' => 'Erinnerung: Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer')), 'defaultTemplates' => array('invoice' => array('subject' => 'Neue Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer'), 'quote' => array('subject' => 'Neues Angebot von $account', 'template' => '<div>$client,</div><br><div>Klicken Sie auf den folgenden Link um das Angebot über $amount anzuschauen.</div><br><div>$viewLink</div><br>$footer'), 'payment' => array('subject' => 'Zahlungseingang', 'template' => '<div>$client,</div><br><div>Vielen Dank für Ihre Zahlung von $amount.</div><br><div>$viewLink</div><br>$footer'), 'reminder1' => array('subject' => 'Erinnerung: Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer'), 'reminder2' => array('subject' => 'Erinnerung: Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer'), 'reminder3' => array('subject' => 'Erinnerung: Rechnung $invoice von $account', 'template' => '<div>$client,</div><br><div>Um Ihre Rechnung über $amount einzusehen, klicken Sie bitte auf den folgenden Link:</div><br><div>$viewLink</div><br>$footer')), 'emailFooter' => '<p><div>Mit freundlichen Grüßen, <br>$account</div></p>', 'title' => 'E-Mail Vorlagen')) in compiled.php line 15137
    at View->getContents() in compiled.php line 15125
    at View->renderContents() in compiled.php line 15109
    at View->render() in compiled.php line 16347
    at Response->setContent(object(View)) in compiled.php line 15848
    at Response->__construct(object(View)) in compiled.php line 8420
    at Router->prepareResponse(object(Request), object(View)) in compiled.php line 9515
    at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
    at Pipeline->Illuminate\Routing\{closure}(object(Request))
    at call_user_func(object(Closure), object(Request)) in compiled.php line 9992
    at Pipeline->then(object(Closure)) in compiled.php line 9516
    at ControllerDispatcher->callWithinStack(object(AccountController), object(Route), object(Request), 'showSection') in compiled.php line 9503
    at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\AccountController', 'showSection') in compiled.php line 8571
    
    opened by bnova-stefan 45
  • Enable setting all client fields when creating with invoice in API

    Enable setting all client fields when creating with invoice in API

    I am a complete newbie on here - although I would consider myself quite savvy so I'm either being daft or there are some issues with Zapier. Basically I am trying to automate the invoicing of our company by using zapper to connect our youcanbook.me booking system to invoiceninja.

    1. I created some test bookings/invoices - which works ok but when I delete the invoices they seem to re-appear?
    2. When selecting 'yes' to send invoice to client inside zapier it does not attach the pdf (just a link) but when sending email via invoice ninja itself - it does attach the pdf?
    3. I am not able to add a 'invoice due date' inside Zapier which renders the whole thing useless as it will not send out overdue reminders so we have to do this manually.

    Any help would be greatly appreciated

    Cheers

    opened by jb83 45
  • Unable to login

    Unable to login

    Hey there, yesterday I wanted to try out the new version, but after setup the following error persists:

    500: Error: {
        "message": "Call to a member function each() on null",
        "exception": "Error",
        "file": "/home/steuerb2/domains/lars-kusch.de/test/app/Utils/Statics.php",
        "line": 78,
        "trace": [
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/app/Http/Controllers/BaseController.php",
                "line": 343,
                "function": "company",
                "class": "App\\Utils\\Statics",
                "type": "::"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/app/Http/Controllers/BaseController.php",
                "line": 300,
                "function": "response",
                "class": "App\\Http\\Controllers\\BaseController",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/app/Http/Controllers/Auth/LoginController.php",
                "line": 172,
                "function": "listResponse",
                "class": "App\\Http\\Controllers\\BaseController",
                "type": "->"
            },
            {
                "function": "apiLogin",
                "class": "App\\Http\\Controllers\\Auth\\LoginController",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Controller.php",
                "line": 54,
                "function": "call_user_func_array"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php",
                "line": 45,
                "function": "callAction",
                "class": "Illuminate\\Routing\\Controller",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
                "line": 255,
                "function": "dispatch",
                "class": "Illuminate\\Routing\\ControllerDispatcher",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Route.php",
                "line": 197,
                "function": "runController",
                "class": "Illuminate\\Routing\\Route",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                "line": 691,
                "function": "run",
                "class": "Illuminate\\Routing\\Route",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 128,
                "function": "Illuminate\\Routing\\{closure}",
                "class": "Illuminate\\Routing\\Router",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/app/Http/Middleware/Cors.php",
                "line": 34,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "App\\Http\\Middleware\\Cors",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/app/Http/Middleware/QueryLogging.php",
                "line": 42,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "App\\Http\\Middleware\\QueryLogging",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php",
                "line": 41,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Routing\\Middleware\\SubstituteBindings",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
                "line": 127,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php",
                "line": 63,
                "function": "handleRequest",
                "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Routing\\Middleware\\ThrottleRequests",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 103,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                "line": 693,
                "function": "then",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                "line": 668,
                "function": "runRouteWithinStack",
                "class": "Illuminate\\Routing\\Router",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                "line": 634,
                "function": "runRoute",
                "class": "Illuminate\\Routing\\Router",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Routing/Router.php",
                "line": 623,
                "function": "dispatchToRoute",
                "class": "Illuminate\\Routing\\Router",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                "line": 166,
                "function": "dispatch",
                "class": "Illuminate\\Routing\\Router",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 128,
                "function": "Illuminate\\Foundation\\Http\\{closure}",
                "class": "Illuminate\\Foundation\\Http\\Kernel",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/app/Http/Middleware/Cors.php",
                "line": 34,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "App\\Http\\Middleware\\Cors",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/fideloper/proxy/src/TrustProxies.php",
                "line": 57,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Fideloper\\Proxy\\TrustProxies",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
                "line": 21,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php",
                "line": 21,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php",
                "line": 27,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php",
                "line": 87,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/sentry/sentry-laravel/src/Sentry/Laravel/Tracing/Middleware.php",
                "line": 43,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 167,
                "function": "handle",
                "class": "Sentry\\Laravel\\Tracing\\Middleware",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
                "line": 103,
                "function": "Illuminate\\Pipeline\\{closure}",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                "line": 141,
                "function": "then",
                "class": "Illuminate\\Pipeline\\Pipeline",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
                "line": 110,
                "function": "sendRequestThroughRouter",
                "class": "Illuminate\\Foundation\\Http\\Kernel",
                "type": "->"
            },
            {
                "file": "/home/steuerb2/domains/lars-kusch.de/test/public/index.php",
                "line": 57,
                "function": "handle",
                "class": "Illuminate\\Foundation\\Http\\Kernel",
                "type": "->"
            }
        ]
    }
    

    Thank you very much for your incredible cool software, Lars

    question 
    opened by LarsK1 44
  • License is too restrictive

    License is too restrictive

    Hi there,

    This software looks really great. I'm looking at self-hosted invoice systems and this one is fantastic. That said, I am afraid the license is too restrictive. I have no desire to rip off invoiceninja's business, and I appreciate the many hours that have been put into it programming it. But one of the virtues of open-source is the ability for people to fork software and take it into a different direction without needing to ask for permission.

    Currently the license says this:

    Redistributions of source code, in whole or part and with or without
    modification requires the express permission of the author
    

    Consider these scenarios:

    • You disappear. It could be an unexpected death, or a spontaneous and everlasting trip to the Caribbean. We are now stuck using a system that no one is allowed to advance forward because they cannot ask your permission.
    • Someone wants to take this project in a radically different direction that would benefit a lot of people, but you disagree with them. This prevents us from having a system that may be able to help a lot more people.
    • You decide to stop developing the project for whatever reason. We have to rely on you to update the license or transfer ownership of the project. Humans can be unpredictable though, so that is a risk.

    Under the present license, invoiceninja is "open-source software" by the loosest meaning of the term. Since the author has total control of how the code may be used, it cannot be consider free (libre) software, which I think is preferable

    It seems like this was your intention, but I wanted to bring this up in case it was something you would like to consider. I tend to prefer copyleft licenses like GPL since it has a layer of protection against corporate greed while still allowing people to fork the code freely.

    Thanks for your time

    opened by alexgleason 44
  • Incomplete Chunked Encoding

    Incomplete Chunked Encoding

    Since the update to 2.6.5, we are experiencing problem on our install with showing pages. It is giving error about ERR_INCOMPLETE_CHUNKED_ENCODING error

    capture d ecran 2016-07-21 a 10 36 06

    fixed 
    opened by gabthefencer 44
  • [Question] Concatenating text in settings/customize_design#content | pdfmake questions

    [Question] Concatenating text in settings/customize_design#content | pdfmake questions

    Hi again 😄. So I'm working on a customized invoice design and I'd like to use this block:

    {
        "text": "$account.work_phone",
        "margin": [
          5,
          30,
          10,
          5
        ],
        "style": "socialTEL",
        "absolutePosition": {
          "x": 100,
          "y": 100
        }
      },
    

    but instead of only the phone number I want the string "TEL | " to be concatenated before it. So it would spell "TEL | " + $account.work_phone.

    It seems like I can't provide JavaScript functions there and I'm a total noob concerning pdfmake.

    Is there a simple way to concatenate a string and a variable here?

    question 
    opened by Braintelligence 39
  • Converted invoice uses quote template intead of invoice template

    Converted invoice uses quote template intead of invoice template

    What version of Invoice Ninja are you running? ie v4.5.25 / v5.0.30 5.1.42

    What environment are you running? Docker

    Have you checked log files (storage/logs/) Please provide redacted output not applicable

    Have you searched existing issues? yes

    Have you reported this to Slack/forum before posting? no

    Describe the bug When converting quote to invoice, it uses quote's pdf template instead of invoice's pdf template

    Steps To Reproduce setup

    • settings > invoice design
    • ensure quote and invoice use different templates (I have a custom template for quotes, and a custom template for invoices)

    bug:

    • create quote
    • view pdf: it uses quote template as expected ...ok!
    • clone to invoice
    • view invoice pdf: it uses quote template ...bug!

    Expected behavior Quote and invoice should use their own templates, even in these cases:

    • convert quote to invoice
    • clone from/to quote/invoice
    • ...possibly other workflows I've forgotten?

    Screenshots no

    Additional context no

    (v5) Can you replicate the issue on our demo site? https://demo.invoiceninja.com can't customize on the demo site

    bug 
    opened by lonix1 38
  • Invoice not attached to emails

    Invoice not attached to emails

    Unfortunately, the invoice is not attached to an invoice sent to a customer.

    In email settings, the checkbox "attach invoices" is active. I use the button "send invoices" in the invoice view to send invoices.

    I run version 3.3.1 in a Docker environment.

    question 
    opened by MathiasRenner 36
  • We can't find a user with that e-mail address.

    We can't find a user with that e-mail address.

    Hi,

    I have a client trying to reset a password but he gets the message 'We can't find a user with that e-mail address.' I have checked the database and the email address exists. Are you using md5 for password encryption as I was going to try resetting in the database.

    This function was working before I upgraded to the latest version as I have a password reset in the database table.

    Thanks

    Mark

    opened by donttrustem 33
  • Enhancing address field

    Enhancing address field

    Hi there,

    I'm from Germany and the address fields are not as we are used to. Example of the "right" version:

    Max Mustermann
    Musterstr. 1
    80638 München
    

    If I leave the State in client details empty, I get it like this. But if I add something to State in client details, the adress gets mixed up with it:

    Max Mustermann
    Musterstr. 1
    80638 München, Bayern
    

    It's not a showstopper, but it doesn't look like we are used to. And having the customer details as complete as possible enhances the usage of invoiceninja in other places. This pull request simply enhances the code to add it. A cleaner way would be to reame and enhance the function like

    public function cityZipState($city, $postalCode, $state = null, $swap = false)
        {
            $str = $city;
    
            if ($state) {
                if ($str) {
                    $str .= ', ';
                }
                $str .= $state;
            }
    
            if ($swap) {
                return $postalCode.' '.$str;
            } else {
                return $str.' '.$postalCode;
            }
        }
    

    If this pull request is not the way to go, you can close it. But I think it should be integrated in this or another way...

    opened by Hobby-Student 0
  • Live preview pdf on quote, recurring, and invoice not working.

    Live preview pdf on quote, recurring, and invoice not working.

    Live preview pdf on quote, recurring, and invoice not working. Also the view pdf and download pdf not reflect lates updates on the quote, invoice and recurring.

    Using the latest docker images on cloudron updated few hours ago.

    opened by andrhmt 1
  • More options for 2FA

    More options for 2FA

    Hey Team,

    i would love to see the addition of additional 2fa options, especially with the amount of spoofing that is going on at the moment, Can you please add Fido2 or yubikey

    feature request 
    opened by MGenerowicz 0
  • Creat auto bill slider in client specific settings

    Creat auto bill slider in client specific settings

    This request is for NON-Recurring invoices. Currently individual invoices allow for auto bill to be applied on due dayte with a slider under the INDIVIDUAL invoice settings. There is no way to apply the setting for every invoice at the client level. If using automation, this creates a problem as there is no easy solution for clients requesting auto payment. I would have to manually log in every time an invoice is created for the client and enable the auto bill on each invoice.

    question 
    opened by ajkjajkj 3
  • E-Mail notification after canceling an invoice

    E-Mail notification after canceling an invoice

    Hi! We're using the current version v5.5.48 of InvoiceNinja and wanted to ask if it is possible to automatically notify a client when an invoice is canceled. Not refunding an already paid invoice, but just canceling an unpaid invoice (because a mistake was made or something changed or whatever). I found that no mail was sent when I cancel an invoice. We could issue a new credit for the client but this then doesn't have any reference to the original invoice we wanted to cancel.

    What's the recommended way of handling such situations? Any idea how to achieve this? (Maybe I'm just not aware of some InvoiceNinja functionality here?)

    Thank you for your help and have a nice day :) Matthias

    feature request 
    opened by Plaschke-Culturall 3
Releases(v5.5.50)
  • v5.5.50(Jan 2, 2023)

    What's Changed

    • Flip sort order for payments in client portal by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8085
    • Minor fixes for tax currencies - vendor vs client by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8089
    • Fixes for Matomo by @LarsK1 in https://github.com/invoiceninja/invoiceninja/pull/8083
    • Fix eWay failures related to 32-bit integer limit by @joshuadwire in https://github.com/invoiceninja/invoiceninja/pull/8095

    Full Changelog: https://github.com/invoiceninja/invoiceninja/compare/v5.5.49...v5.5.50


    Flip sort order for payments in client portal Filter by private notes Update precision of ZMB Fixes for Matomo @LarsK1 Minor fixes for tax currencies - vendor vs client Fixes for change plan with subscriptions Fixes for alignment of text issues in subscription order overview Trim subscriptions Add vendors and clients as available includes for recurring expenses Harvest only the error message from the webhook endpoint Refactor for unique jobs Use id_token for apple when deleting companies Assign the expense to a converted PO Purchase Order Notifications Fixes for edge case with inappropriate use of group counters Fixes for category IDs for recurring expenses Fixes for Checkout authorization failure exception handling Logging for checkout 3ds error handling Enforce registration for subscriptions if configured Refactor subscription invoices to use standard allow temporary invoice numbers to prevent stale invoices Ensure Unique Emails Move stale invoice cleanup to scheduler Clean up for register form Fix eWay failures related to 32-bit integer limit @joshuadwire Add finer grained resolution to created_at query Refactor for bank status filters Refactor quote filters remove iconv() from Pdf numbering Refactor for subscriptions and changing between subscriptions Reduce object sizes in Livewire Refactor Livewire passing references Minor fixes for expense validation Fixes for checkout reference lengths

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(128.46 MB)
  • v5.5.49(Dec 16, 2022)

    What's Changed

    • OTP for subscriptions by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8069
    • Quote filters for expired and upcoming by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8071
    • Change Klarna intregration to comply with Klarna's rules by @LarsK1 in https://github.com/invoiceninja/invoiceninja/pull/8059
    • Force a currency for vendors by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8074
    • Subscriptions v2 by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8076
    • Attach invoice documents to payment emails by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8077
    • Disable auto fill for credit cards by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8078
    • minor fixes for subscriptions by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8080
    • v5.5.49 by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8081

    Full Changelog: https://github.com/invoiceninja/invoiceninja/compare/v5.5.48...v5.5.49


    Change klarna integration according to Klarna's rules @LarsK1 Disallow payment with Klarna for business out of US Minor cleanup for gateway model OTP for subscriptions Subscriptions v2 Refactor for starting jobs with middleware Remove all instances of dispatchSync() Fixes for update payment methods - Stripe Watch webhooks on hosted Force a currency for vendors Add doc block definitions Refactor to use vendor currencies for purchase orders Drop use_vendor_currency column from companies Refactor for how we deal with delete payments and client paid to dates Fixes for profit/loss request Fixes for Apple OAuth Ensure we set the client localized send dates for recurring invoices Clean up around payment emails Move attachments into data Quote attachments as data Move logic in alpine for transitions Attach invoice documents to payment emails Disable auto fill for credit cards Do not autobilling recurring invoices in draft state Prevent relinking of payments with transactions Prevent relinking of payments with transactions Update translations Subscriptions v2 - handle trial


    Some important fixes in this release.

    We have fixed an issue with CardJS where autofilling of credit cards from browsers such as Chrome would fail to correctly pass through the expiry date. Purchase orders will now default to using the vendor currency that has been set. If no vendor currency is set, we will force the company currency to populate the vendor currency. In this release payment emails will also attach invoice documents if documents are configured to be sent in emails

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(128.45 MB)
  • v5.5.48(Dec 9, 2022)

    What's Changed

    • Add support for Matomo by @LarsK1 in https://github.com/invoiceninja/invoiceninja/pull/8039
    • Fixes for Matomo URL/ID by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8049
    • Stripe: add support for Klarna payment by @LarsK1 in https://github.com/invoiceninja/invoiceninja/pull/8036

    Full Changelog: https://github.com/invoiceninja/invoiceninja/compare/v5.5.47...v5.5.48


    Add support for Matomo Add Matomo to database table Fixes for Matomo URL/ID Add idempotency key for mollie Fixes for Klarna Add missing translations Fixes for phone validation Add checks prior to attempting to add in payment types Add transaction filters for payments and expenses Minor clean up of layout files Use redirect away for mollie Disable auto billing on recurring invoices and generated invoices Fixes for type hints Catch mollie payments if redirect URL is null Add proper description to mollie credit card transactions Minor fixes for stripe translations Subscriptions v2 (WIP)

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(128.40 MB)
  • v5.5.47(Dec 7, 2022)

    Add payment id to bank transaction matching Expand document name in client portal from 20 -> 40 chars Ensure we retrieve archived invoices in Stripe payment webhook Check for properties before accessing Improve bank transaction filters Ensure client is tagged on view quote activity Add convert currency properties to company table Subscriptions v2

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(128.38 MB)
  • v5.5.46(Dec 5, 2022)

    What's Changed

    • Provide translations by @beganovich in https://github.com/invoiceninja/invoiceninja/pull/7972
    • Fixes for custom labels/values for credits by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8030
    • Add status to client export by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8032
    • Reserved keywords are aware of date in recurring invoice PDF preview by @talkstraightuk in https://github.com/invoiceninja/invoiceninja/pull/7979
    • Update Sentry Laravel SDK to v3 by @cleptric in https://github.com/invoiceninja/invoiceninja/pull/8026
    • Tests for linking payments with expenses by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8033
    • Add delete webhook for projects by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8034

    New Contributors

    • @cleptric made their first contribution in https://github.com/invoiceninja/invoiceninja/pull/8026

    Full Changelog: https://github.com/invoiceninja/invoiceninja/compare/v5.5.45...v5.5.46


    Reserved keywords are aware of date in recurring invoice PDF preview @talkstraightuk Fixes for custom labels/values for credits Do not send reminders to trashed contacts Fixes for latency when sending emails Update Sentry Laravel SDK Fixes for the way we attach documents/pdfs to puchase orders Fixes for Checkout Add status to client export Tests for linking payments with expenses Update lock file for Sentry 3 Add delete webhook for projects Allow overriding the default locale in .env file Add Off Session to Stripe Auto Billing request Improve off session token billing with stripe Additional check to ensure recurring invoices have invitations Clean up for old email attachments Fixes for bank matching serivce Fixes for linking payments/expenses Refactor language translations Update Stripe to latest API with idempotency keys

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(128.37 MB)
  • v5.5.45(Dec 2, 2022)

    What's Changed

    • Fixes for Stripe payment translations by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8019
    • Count Bank Account Created on Hosted by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8020
    • v5.5.45 by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8021

    Full Changelog: https://github.com/invoiceninja/invoiceninja/compare/v5.5.44...v5.5.45 Add Payment id to bank transactions table Tests for linking expenses and payments Add css class to enable resizing of payment QR Codes Increase chunk size for autobill Fixes for payment tests Fixes for Zoho Import Fixes for single account creation Add form request for enable two factor authentication Updates for translations for Stripe Additional checks for reminder scheduling for endless reminders Updates for cookie consent - translate to locale if available Ensure due_date_days is populated Fixes for edge cases with recurring invoice due date days = 0 Count Bank Account Created on Hosted

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.89 MB)
  • v5.5.44(Nov 30, 2022)

    What's Changed

    • Translate Stripe payment texts by @LarsK1 in https://github.com/invoiceninja/invoiceninja/pull/7999
    • Bug Fix - Client balance corrupted when transaction is deleted. by @turbo124 in https://github.com/invoiceninja/invoiceninja/pull/8010
    • #8008 csv import auto detect delimiter by @checkitsedo in https://github.com/invoiceninja/invoiceninja/pull/8009

    Refactor PDF attachments as data instead of file paths Inject slight delay into emails Translate Stripe payment texts thanks @LarsK1 LarsK1 committed 22 hours ago Implement checkout object for phone Minor fixes for Stripe Payment Intent query Fixes for store bank transaction Add frequency to recurring invoice export Fixes for storing bank transactions Add CSV delimiter Autodetection thanks @checkitsedo Fixes for CSV imports, replace work_phone with phone Fixes for applying payment from a transaction, and then unwinding the… Fixes for multiple deletes on a single invoice Do not allow restoration of a invoice with a deleted payment Fixes for expense category validation Fixes for Stripe payment translations

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.89 MB)
  • v5.5.43(Nov 29, 2022)

    Spread out cron jobs to even system load Updates for SMS confirmations Update twilio sms authorize() method Improve cron definitions to prevent race conditions Improve validation layer for reports Minor refactor for reminder jobs Refactor the way we execute scheduled commands Use translation for request cancellation Clean up subscription service Fix for subscription cancellation where there are no outstanding invoices Fixes for displaying correct quote status in client portal Minor fixes for bank transaction imports Fixes for creating backup directory if it does not exist Minor fixes for type checks Minor fixes for failed notifications Don't return value from void function Refactor reminder crons Fixes for client number race conditions when importing stripe clients Fixes for stripe importing customers Wind back Middleware for Bank Service Matching Fixes for updated_at in bank_transaction_rules Change private to protected property for middleware key Inject small delay into email dispatch Implement chunking of auto bill data Handle nothing being passed into sort() filter Fixes for missing properties in store bank integration request Minor fix for client balance adjustment Add more entropy when updating company ledger Fixes for demo mode Refactor for Stripe payment intents + charges + new api

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.89 MB)
  • v5.5.42(Nov 25, 2022)

    [Feature] Bank Transaction Rules [Feature] API Doc Blocks for Bank Transaction Rules [Bug fix] Fixes for failed email mailer, edge case where balances may not adjust [Bug fix] Adjust when we send certain events after an email failure [Feature] Match Bank Transactions Tests for matching expenses Transaction rules tests [Bug fix] Remove delay from events [Bug fix] Escape variables in custom designs Minor fixes for create company routes [Bug fix]Catch EPC QR failures [Feature] Add reserved keywords for year/month before and after [Bug fix] Set encoding to UTF-8 for EPC QR Codes [Bug fix] Improve account resolution from Yodlee API [Bug fix] Fixes for Paypal Token payments [Bug fix]Fixes for blank client address in Swiss QR Codes Adjust rate limits to prevent abuse [Bug fix] Fixes for importing stripe customers where no customers exist in stripe [Bug fix] Fixes for bank transaction csv imports [Bug fix] Catch payment intents without charges key [Feature] Invoice task locking [Bug fix] Enforce password protection across entire client portal if invoice pa… [Feature] Allow bulk email with selecting a template [Bug fix] Purge company transactions/integrations [Bug fix] Fixes for custom client portal subdomains Add filters for tasks by project Update validation rules for subscriptions [Bug fix] Fixes for SendReminders firing twice [Bug fix] Adjustments for handling invoice deletion [Bug fix] Add checks to prevent duplicate reminders from being sent [Feature] Bulk match transactions [Bug fix] Refactor Stripe API Webhooks to work across all API Versions

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.89 MB)
  • v5.5.41(Nov 19, 2022)

    Add a new design - Calm Fix migrations for new invoice design Fixes for gocardless events Prevent deleted/archived/completed transactions from being re-converted Fixes for bank transaction tests Fixes for playful design Stubs for search authorize.net Fixes for gocardless delayed instant bank payment notification: Add a Paid CSS Overlay to invoice designs using the variable $status_logo Late fee tests Tests for recurring invoice variables Minor fixes for date range calculation for :WEEK Fixes for Fortre payment driver and where no service fees are applicable Clean input for custom css Implement additional filters for list views

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.75 MB)
  • v5.5.40(Nov 16, 2022)

    Process Invoice Numbers which includes letters Flip the request requirements Save default terms/footers Allow different mail from / mail name for multi company mailers Patch for 2FA Verification Triggered actions for Credits / Quotes Expired quote notifications Fixes for uses_inclusive_taxes with recurring invoices Fixes for bank transaction imports Reset event delay New Design Update Readme

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.74 MB)
  • v5.5.39(Nov 13, 2022)

    EPC QR Codes Additional logging for Checkout transactions Improvements for using react with self host Minor fixes for updating a recurring invoice Minor fixes for negative invoices Change UX for downloading documents from the client portal Ensure we post event notifications when the invoice is marked as sent Change logo Ensure bank integration id is always present Fixes for leaking bank transactions

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.74 MB)
  • v5.5.38(Nov 10, 2022)

    Allow individual SMTP per company Add verified phone number flag Check users number for validity for SMS verifications User Twilio API to verify phone numbers User Twilio API to verify phone numbers Update phpunit spec for github actions Update translations Fixes for imports Datamapper classes Return early in some hosted jobs Override phone number with international format Fixes for bank transaction imports Minor fixes for validation Minor fixes for Bank Transactions / Integratiosn Improve error handling with Checkout Payment Gateway Improve handling of saving a client that has been created from an invoice import Show credit balance as amount for draft credits Migrate password hashes Add trashed records to exports Obfuscate account numbers Yodlee Webhooks Update validation rules Fixes for imports Add client and status by default to invoice item exports Fixes for how we deal with over/under payments with transactions Remove html_backup column from backups tables Only store html backups for plan users on hosted service Fixes for dropping columns if they do not exist yet Improvements for instant bank payments with gocardless Remove html_back as key from restore Working on gocardless instant bank payment notifications GoCardless offline instant bank payments Additional logging for Microsoft acccounts Fixes for inventory management Fixes for bank transactions Fixes for 2FA Fixes for SEPA auto-billing Add missing translations Rate limit bank syncing internally, not at edge of application Minor fixes for Paypal Fixes for the Forte payment driver Fixes for csv ingest Improve quality of payment emails Line item tax amounts

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.73 MB)
  • v5.5.37(Nov 2, 2022)

    Merge PDFs Fixes for failed payments when the paypal credentials are incorrect Fixes for stripe autobilling Don't link entities when we are in a transaction Fixes for payment email preview QR codes for invoices as a variable Return reminders to dispatch QR Code Fixes Minor fixes for QR Codes Update merge actions to bulk_print Improve error handling of illegal relation loading Minor fixes for refunds Fixes for non existent systemhealth setting Improve memory handling in jobs Fixes for imports - date formating Fixes for WePay

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.21 MB)
  • v5.5.36(Oct 29, 2022)

  • v5.5.35(Oct 28, 2022)

  • v5.5.34(Oct 28, 2022)

    Remove sentry from self host Fixes for purchase order viewed activity Additional checks for exchange rates Fixes for Yodlee Test Fixes for bank transaction tests Set company defaults for expenses when matching bank transactions Wipe OAuth data when changing email addresses Fixes for tests Improve check data Minor fixes when calculating invoice cancellations 2FA reset Fixes for Payment Previews Order designs in ascending order Restore paymentable reliably when restoring invoice with attached pay… Pass references instead of full models into auto bill jobs Restrict size and amount of jobs Fixes for breaking change in CreateInvoicePdf Updates for bug with Sentinel / Redis

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(123.20 MB)
  • v5.5.33(Oct 26, 2022)

    MatchBankTransactions Working on matching transactions Expense categories Transaction expense resolution Resolve categories Add provisional match Auto pull transactions when linking accounts Fill from_date to be one year in the past Add transaction id to expenses and payments Fixes for bank integration routes Allow Bank Accounts to be created manually Save Bank Transaction manually Bank Transactions matching default category ID Always force a baseType Return list of bank transactions Minor fixes for braintree 3DS Disable auto billing when an invoice has been refunded. Adjust status if invoice is modified after payment Attempt to import documents into new company

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(119.25 MB)
  • v5.5.32(Oct 14, 2022)

    Fixes for purge client Add Preloader Fixes for document indexing Fixes for indexes Add to fillable Fixes for storage paths in self host Clean up for preload Minor fixes for recurring invoices Handle invoices going from zero balance to positive balance Fixes for refund activity notes Minor fixes for filters Minor changes for setup intents Minor fixes for check data

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(119.16 MB)
  • v5.5.31(Oct 9, 2022)

  • v5.5.30(Oct 9, 2022)

  • v5.5.29(Oct 8, 2022)

  • v5.5.28(Oct 6, 2022)

  • v5.5.27(Oct 6, 2022)

  • v5.5.26(Oct 5, 2022)

    Remove authorize for SEPA Minor fixes Fixes for generating counters Strip tags from client and user nameS Remove redundant code in save company request fix: SwissQr postal code appears twice thanks @filo87 Return early to improve PDF generation performance Fixes for WePay Database indexing Updated schema dump

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(119.09 MB)
  • v5.5.25(Oct 1, 2022)

    Minor fixes for stripe imports Do not serialize company after migration Put in checks for client filters Show labels of custom fields in registration form Remove direct google URLs Minor fixes for QR Code generation for live previews Improve livewire performance with Defer Fixes for sms verification list Minor fixes for Stripe ACH Verifications Fixes for wepay

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(119.08 MB)
  • v5.5.24(Sep 21, 2022)

    Working on hosted upgrades Improve trial page Increase backoff period Force company currency for purchase orders Ensure we do not remove gateway fee prematurely Fixes for payment layouts (Regression) Exclude canvaskit path for hosted Implement 3DS for Braintree Fixes for seeders Fixes for checkout.com customer request class

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(118.98 MB)
  • v5.5.23(Sep 16, 2022)

    Fixes for send now functionality of recurring invoice Single root element for wepay signups Fixes for single root - Livewire Update resources to defer Minor fixes for client portal queries Optimize css bundles Fixes for tests If blank exchange rate is sent, force 1

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(118.98 MB)
  • v5.5.22(Sep 15, 2022)

    Configuration for in app purchases Move lightlogs to batch Improve client imports Add recurring invoice id to expense when it is generated Fixes for support messages Fixes for check data Minor fixes for support messages Ensure we also query trashed client records before lock Logging around generates counter Additional logging in generates counter Minor fixes + additional logging Fixes for applying numbers Fixes for entity policy not capturing recurring invoice policies Update customer details Fixes for restricting csv imports Add redundancy checks when creating task numbers Port entity policy changes to view() policy Set SEPA stripe token payments to pending Fixes for QR Ibans with no payment references Fixes for adding a payment method with Checkout.com Adapt Email entity sending using emailentity Fixes for sending custom templates with purchase orders Add webhook functionality to credits Fixes for tests

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(119.25 MB)
  • v5.5.21(Sep 9, 2022)

    Add secondary font as a variable in HTMLENGINE Add additional field for reports to companies table Fixes for InputBag Fixes for race condition when saving expense numbers Improve date resolution in recurring invoices Improve float parsing in csv imports Additional checks for GoCardless webhooks Improve efficiency of lightlogs Fixes for vendor templates Fixes for sending purchase orders when using a custom template Change [] for vendors to contacts.company Move lightlogs back to batching

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(118.58 MB)
Owner
Invoice Ninja
An open-code invoicing app built with Laravel and Flutter
Invoice Ninja
A multitool library offering access to recommended security related libraries, standardised implementations of security defences, and secure implementations of commonly performed tasks.

SecurityMultiTool A multitool library offering access to recommended security related libraries, standardised implementations of security defences, an

Pádraic Brady 131 Oct 30, 2022
Taskpm - Run multi tasks by PHP multi process

php-pkg-template Run multi tasks by PHP multi process Install composer composer require phppkg/taskpm Usage github: use the template for quick create

PHPPkg 2 Dec 20, 2021
Hashtopolis is a multi-platform client-server tool for distributing hashcat tasks to multiple computers.

Hashtopolis is a multi-platform client-server tool for distributing hashcat tasks to multiple computers. The main goals for Hashtopolis's development are portability, robustness, multi-user support, and multiple groups management.

Hashtopolis 1.1k Jan 4, 2023
Laravel application project as Sheina Online Store backend to be built with Laravel and VueJS

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Boas Aditya Christian 1 Jan 11, 2022
Easily add a full Laravel blog (with built in admin panel and public views) to your laravel project with this simple package.

Webdevetc BlogEtc - Complete Laravel Blog Package Quickly add a blog with admin panel to your existing Laravel project. It has everything included (ro

WebDevEtc. 227 Dec 25, 2022
An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel, Bootstrap, and Vue.js

Laravel Soundboard An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel 5.8, Bootstrap 4, Vue.js, Boot

Jeremy Kenedy 24 Oct 28, 2022
ergodnc (Ergonomic Desk & Coffee) is an open source Laravel project that's being built live on the official Laravel YouTube Channel

About This Project ergodnc (Ergonomic Desk & Coffee) is an open source Laravel project that's being built live on the official Laravel YouTube Channel

Mohamed Said 248 Dec 26, 2022
Laravel package to generate and to validate a UUID according to the RFC 4122 standard. Only support for version 1, 3, 4 and 5 UUID are built-in.

Laravel Uuid Laravel package to generate and to validate a universally unique identifier (UUID) according to the RFC 4122 standard. Support for versio

Christoph Kempen 1.7k Dec 28, 2022
Your users do not always report errors, LaraBug does. LaraBug is a simple to use and implement error tracker built for the Laravel framework.

Your users do not always report errors, LaraBug does. LaraBug is a simple to use and implement error tracker built for the Laravel framework. This rep

LaraBug 197 Dec 9, 2022
AliExpress Clone app built with Laravel 8 And vuejs

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Laravue 9 Dec 21, 2022
Podcastwala - Your very own Podcast web app built with Laravel. Manage and listen to your favorite podcasts

Podcastwala Your very own Podcast web app built with Laravel 5. This web app enables you to manage RSS feeds for your favorite podcasts and listen to

null 142 Sep 14, 2022
Manage your staff from one place. Featuring Staff leave management 🏖, payslips 💵 generation & emailing, messaging 📨and more 🛠! Built with ❤️ with Laravel

Staff Management System This little buddy can help you manage your staff database! Built with ?? with Laravel #FEATURES 1 Staff management/ database S

Ezekiel Oladejo 45 Jan 3, 2023
A simple blog app where a user can signup , login, like a post , delete a post , edit a post. The app is built using laravel , tailwind css and postgres

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Nahom_zd 1 Mar 6, 2022
Free and open-source Laravel admin dashboard interface built with Livewire & Alpine.js based on Bootstrap 5

Volt Dashboard Laravel Free Frontend Web App for Laravel with Livewire & Alpine.js Never start a development project from scratch again. We've partner

Themesberg 200 Jan 4, 2023
Strongly typed settings for Laravel, includes built-in encryption and friendly validation.

Strongly Typed Laravel Settings Install composer require bogdankharchenko/typed-laravel-settings Model Setup namespace App\Models\User; use Illuminat

Bogdan Kharchenko 10 Aug 31, 2022
Attendize is an open-source ticketing and event management application built using the Laravel PHP framework

Attendize is an open-source ticketing and event management application built using the Laravel PHP framework. Attendize allows event organisers to sel

Attendize 3.6k Dec 27, 2022
Scribbl is a fast and minimalistic note-taking app built with Laravel

Scribbl is a fast and minimalistic note-taking app built with Laravel

Cam White (Jex) 5 Nov 13, 2022
Video Chat application built using Metered Video SDK, with PHP Laravel Backend and JavaScript Front-End

Group Video Chat App with PHP Laravel and JavaScript Powered by Metered Video SDK Overview This application is a highly scalable group video calling a

null 2 Aug 18, 2022
A CMS start kit for websites, built on Filament and Laravel.

TrovCMS TrovCMS is a start kit for websites, built on Filament and Laravel. Install globally with composer. composer global require trovcms/installer

TrovCMS 12 Oct 20, 2022