Legal
Refund & cancellation policy
Last updated: August 15, 2026
This policy explains how refunds and cancellations work for custom software development services purchased from Viewport Solutions. Because services are tailored to each client and often begin quickly after payment, please read this policy before paying an invoice.
1. Nature of services
Custom software development performed by a single independent contractor. Services include designing and implementing web application dashboards, administrative interfaces, internal tools, bug fixes, and small feature work inside existing products built with Vue, Nuxt, Ruby on Rails, Phoenix LiveView, JavaScript, and related technologies. I do not sell physical goods, downloadable products, subscriptions, or access to software hosted by me. I do not operate a marketplace. Each client receives a written scope and a Stripe invoice in USD before payment is due. Work is delivered as code changes, configuration, or documentation in the client’s repository or environment, as specified in the agreement.
Refund eligibility depends on whether work has started, whether deliverables described in the written scope have been completed, and the type of engagement (fixed deliverable, hourly block, or retainer).
2. Before work begins — full refund window
If you have paid a Stripe invoice but no work has started on the agreed scope, you may request a full refund by emailing contact@viewportsolutions.com within 48 hours of the payment confirmation timestamp shown in Stripe or your bank record.
“Work has started” means any of: repository access used for implementation, code committed for the engagement, scheduled work time performed, or delivery of draft deliverables — whichever occurs first. If work has started within the 48-hour window, Section 3 applies instead.
3. Partial refunds and unused prepaid time
For hourly or retainer engagements where you prepaid for a block of hours or a monthly allocation:
- Hours not yet worked may be refunded on a pro-rata basis at the agreed hourly rate
- Hours already worked, documented, or delivered are non-refundable
- Refund requests must be in writing (email) and include the invoice number
For fixed deliverable engagements, partial refunds may be considered only if the Provider agrees in writing that a defined portion of scope was not delivered and cannot be completed — not merely because requirements changed after work began.
4. Completed work — no refund
Work that has been delivered according to the written scope on the invoice or agreement is not refundable. This includes, without limitation:
- Source code merged or delivered via pull request
- Configuration or infrastructure changes applied to your environment
- Documentation, reports, or audits delivered as specified
- Discovery or consulting time already performed and documented
Dissatisfaction with subjective preferences (styling opinions, naming, etc.) within agreed scope is not grounds for refund unless the deliverable objectively fails criteria stated in writing in the scope.
5. Cancellations by the client
You may cancel future work at any time with written notice to contact@viewportsolutions.com.
- You remain responsible for payment for all work completed through the cancellation date
- Unused prepaid hours on retainer engagements are handled under Section 3
- No new invoices will be issued after cancellation is confirmed in writing
- Access credentials and repository permissions should be revoked by you when appropriate
6. Cancellations by the Provider
I may decline or cancel future work with reasonable notice if: the client is abusive or unlawful requests are made; required access is not provided after repeated requests; payment is overdue; or a conflict of interest arises. If I cancel before work starts on a prepaid engagement, a full refund of unused amounts will be issued.
7. Chargebacks and payment disputes
If you believe a charge is incorrect:
- Email contact@viewportsolutions.com with the invoice number and description of the issue
- Allow up to five business days for investigation and response
- Contact your bank or card issuer only if we cannot resolve the matter together
Filing a chargeback for work delivered per agreed scope, without prior contact, may result in refusal of future engagements and provision of documentation to the payment processor.
8. How refunds are issued
Approved refunds are returned through Stripe to the original payment method when possible. Processing time depends on your bank or card issuer (typically 5–10 business days after Stripe processes the refund). Refunds are issued in USD.
9. Non-refundable costs
Third-party fees paid on your behalf (domains, licenses, hosting, stock assets) are non-refundable unless the vendor refunds them. Such costs must be pre-approved in writing.
10. Contact for refund requests
Include in your email: your name, invoice number, payment date, and reason for the request.
Refund & billing support:contact@viewportsolutions.com · Contact form · How invoicing works