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
  • 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
  • Generate report profit and loss based on project

    Generate report profit and loss based on project

    Hi guys,

    i've been using invoice ninja for my construction business for over 3 months now and im really enjoying it.

    However im struggling with a few thigns

    • generate report based on project and not client
    • to change the INVOICE tag to either TAX INVOICE or PROFORMA INVOICE

    If anyone could help me out id appreciate it

    thanks, Joe

    feature request 
    opened by LeSaiks 1
  • Feature Request:   End-to-End relation between entities.

    Feature Request: End-to-End relation between entities.

    Connect PO-SO-EX-PROJ-PAY… to each other

    I want to connect following docuemtnst to each other. Project Purchase order, Expense Invoice, Payment, . . . All entities.

    it seems possible by project, but in the project client is a must. for example, I buy something and sell it. but when was buying, I didn’t know the client. it can be named as DEAL. create DEAL, and attach all entities to there. ( Invoice, Payment, Quota, Credit,Project,Tasks, Purchase order, Expenses transaction…)

    in addition API, getDeal includes all entities ( Include: Invoice, Payment, Quota, Credit,Project,Tasks, Purchase order, Expenses transaction… ),

    I am doing it with a custom field. now I am not able to filter API calls with one customer field filter.

    https://forum.invoiceninja.com/t/connect-po-so-ex-proj-pay-to-each-other/11956

    feature request 
    opened by hismayilov 1
  • Feature Request: disconnect the purchase orders from/with the expense

    Feature Request: disconnect the purchase orders from/with the expense

    It is possible to create expenses from PO, but not possible to disconnect it, or it is not possible to add PO to entered expense. such as payment settlement to invoice also multiple invoices in one payment https://forum.invoiceninja.com/t/connect-and-disconnect-purchase-order-with-expenses/11957/3

    feature request 
    opened by hismayilov 0
Releases(v5.5.49)
  • 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)
  • v5.5.20(Sep 7, 2022)

    Add check if plan is expired Add checks for ninja portal urls Improve handling of purchaseOrder and purchase_order Updates for vendor routes Client Paid To Date updates Fixes for tech template Fixes for braintree Update client presenter methods Updated composer lock Fixes for default mark down settings Fixes for tests. Fixes for auto billing when using credits Working on credit paymenta Fixes for store payment request Ensure documents array is an array Handle single contact object passed into array Handle single contact object passed into array Fixes for handling partial payments with credits Fixes for stripe error message when authorizing credit card Fixes for seeding languages Refactor for client balance Fixes for select box background color Fixes for registration fields and ensure client contact email is uniq… Remove redundant code from CompanySettings CLean up code paths for client balance Remove DispatchNow()

    Source code(tar.gz)
    Source code(zip)
    invoiceninja.zip(118.59 MB)
Owner
Invoice Ninja
An open-code invoicing app built with Laravel and Flutter
Invoice Ninja
Helpdesk flutter app, working with laravel API

laradesk_flutter A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started

Les bogossitos 4 Jul 22, 2022
A simple to-do list built using flutter based on BLoC state management to manage your daily tasks .

?? Table of Contents About ScreenShots from the app Demo vedio Contributors About A to-do list flutter app to manage your daily tasks. it is built bas

Heba Ashraf 6 Oct 12, 2022
This is Personal Expenses Planner. You can see and made any recipes from this application. I developed this project using flutter.

meals A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is

Darshit Rudani 9 Jul 6, 2022
This is a simple mobile application which calculates the person expenses during each week and tracks up where he spend his money!

Presonal Expenses Tracker Table of content About the project built with Getting Started installation Running ScreenShots About This is a simple mobile

Abdelaziz Salah 8 Nov 3, 2022
Expenses Pal - Flutter

Expenses Pal Who does not like to spend money on various things? Do we nowadays control ourselves or just do not care and randomly spend hard earned m

Artur Rymarz 15 Dec 19, 2022
App for tracking your expenses

Expense Manager App for tracking your expenses Purpose of the project This app may help people to control their spendings. My task was to create custo

Maksym Koriak 4 Mar 13, 2022
This is a expenses app which keeps a track of the money spend. Mostly helpful for college students like me...

expenses_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if

null 2 Jun 5, 2022
Flutter Downloader - A plugin for creating and managing download tasks. Supports iOS and Android.

Flutter Downloader A plugin for creating and managing download tasks. Supports iOS and Android. This plugin is based on WorkManager in Android and NSU

Flutter Community 789 Jan 3, 2023
A sophisticated tool for managing queues of asynchronous tasks, with a stream interface, strong typing and lots of helpful options.

Secretary A sophisticated task manager. Secretary is a tool for keeping your futures in check. It's useful for managing queues of asynchronous tasks,

Alex Baker 5 Dec 21, 2022
Chance Dart is a free Open Source project that lets you create random strings, integers, and other things to help with tiresome tasks, especially when building automated tests or wherever else you require anything random.

Chance Dart Random generator helper for Dart Homepage • Documentation Overview Chance Dart is a free Open Source project that lets you create random s

Ayotomide 55 Dec 27, 2022
Flutter cloud functions - A sample project demonstrating how to run backend tasks in Flutter

Flutter Cloud Functions A sample project demonstrating how to run backend tasks

Souvik Biswas 2 Feb 15, 2022
Flutter app to manage tasks.

A new Flutter app project to manage tasks. Getting Started A few resources to get you started if this is your first Flutter project: Lab: Write your f

Jobin Biju 141 Dec 27, 2022
copy of google tasks app, just to practice some flutter

tasks_copy A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

null 0 Dec 28, 2021
Flutter UI Travel app for completing tasks in mobile development classes 📱

cti3i3-app-travel-ui Flutter UI Travel app for completing tasks in mobile development classes. Setup Run the following commands to install the depende

Sultan Kautsar 1 May 14, 2022
Snoozed, open source Flutter app. A focus oriented To-Do list with skippable tasks.

Snoozed: Skippable To Do list Download the App Apple App Store Google Play Store Video Tutorial YouTube video link Stack Front-end: Flutter Back-end:

Alexandro Heredia 9 Jan 5, 2023
To Do App help me to remember my tasks , notify me .

todoapp A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this

Ahmed Hossny 1 Jan 10, 2022
A fully functional Movies Application built with Flutter. The application built with null safety and clean architecture, also uses OMDB API for fetching movies in the search item

Cinema DB Project Details This project uses null safety feature Project uses clean code architecture (Uncle Bob's Architecture) Project can run on bot

Dhruvam 2 Oct 1, 2022