A bill you can see coming
Top up $20 and watch the runway. We warn at 20% and at zero, hold for 3 days, then pause. Nothing is deleted and no invoice arrives.

Comparison · updated September 2026
Push to deploy, Procfile-style start commands, config vars, one-click Postgres and Redis. Skiffly adds a prepaid balance, PayPal and crypto top-ups, a free tier that needs no card, and EU-only hosting on hardware we own.
Top up $20 and watch the runway. We warn at 20% and at zero, hold for 3 days, then pause. Nothing is deleted and no invoice arrives.
Not everyone has a card that works with US billing. PayPal and stablecoins top up the same balance at the exchange rate at confirmation, with no fee from us.
Our own nodes in Finland. No hyperscaler in the path, no transfer outside the EU, backups in EU object storage.
The GraphQL fields, CLI commands and MCP tools mirror Railway where the feature exists. ${{Postgres.DATABASE_URL}} references, PR environments, templates: same shapes.
Three commands for the app, one dump and restore for the database. The guide walks through variables, domains and the things to check before cutting over.

Variables with one command, a dump of each database. Drop the platform-specific entries: Skiffly provides the SKIFFLY_* equivalents.

skiffly init && skiffly up builds the same repository with Railpack, every service in its own sandbox. Set the variables, deploy the Postgres template, restore the dump.

Test on the generated *.skiffly.cloud domain, add the custom one, switch the CNAME once the certificate is issued. Keep Heroku running until DNS has propagated.

Variables with one command, a dump of each database. Drop the platform-specific entries: Skiffly provides the SKIFFLY_* equivalents.

skiffly init && skiffly up builds the same repository with Railpack, every service in its own sandbox. Set the variables, deploy the Postgres template, restore the dump.

Test on the generated *.skiffly.cloud domain, add the custom one, switch the CNAME once the certificate is issued. Keep Heroku running until DNS has propagated.
$ heroku config -s -a my-app > vars.env # export config vars
$ skiffly init && skiffly up # build the repo on Skiffly
$ skiffly variables set --skip-deploys $(cat vars.env | xargs)A mature add-on marketplace, release phase hooks, pipelines with promotion and years of production history. Skiffly is smaller and simpler: one EU region, no SLA yet, a prepaid balance instead of a sales process.
Full migration guideWhat we know about ourselves is exact; what we say about others is deliberately general. Check their pricing page for current numbers.
Statements about Heroku describe the product in general terms as of September 2026 and may be out of date; see their pricing and documentation for specifics. Skiffly figures come from our pricing page.
web gets a domain, worker runs without one. The command line becomes the service's start command. Scheduler jobs become services with a cron schedule.DATABASE_URL / REDIS_URL you reference from your app. Move the data with pg_restore through skiffly connect. You pay for the resources the instance uses, not a per-add-on plan.sh -c "npm run migrate && npm start") or as a one-off with skiffly ssh -- npm run migrate.
No card. One app and one database, a domain with TLS, and the same commands you would use in production.