<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Preciousky</title>
    <description>The latest articles on DEV Community by Preciousky (@preciousky_45d956626d31c3).</description>
    <link>https://dev.to/preciousky_45d956626d31c3</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1767735%2F89ab1c62-8367-4062-b1a5-bb2b0bfe503d.jpg</url>
      <title>DEV Community: Preciousky</title>
      <link>https://dev.to/preciousky_45d956626d31c3</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/preciousky_45d956626d31c3"/>
    <language>en</language>
    <item>
      <title>What a Shopify store really costs in India in 2026 — including the fee only Indian sellers pay</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Tue, 15 Sep 2026 05:31:16 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/what-a-shopify-store-really-costs-in-india-in-2026-including-the-fee-only-indian-sellers-pay-32af</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/what-a-shopify-store-really-costs-in-india-in-2026-including-the-fee-only-indian-sellers-pay-32af</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work at &lt;a href="https://zoopcoder.com/" rel="noopener noreferrer"&gt;ZoopCoder&lt;/a&gt;, an Indian dev shop, and we sell a paid fixed-price Shopify setup. Every Shopify number below is Shopify's own published India price and is billed by Shopify, not by us — none of it reaches us. The one paid thing we sell is flagged clearly at the end. Verify the rates on Shopify's site before you plan around them; they move.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every "how much does Shopify cost" article you will find is written for a merchant in the US, the UK or Australia. For an Indian seller, all of them are wrong in the same specific way, and it is not the subscription price.&lt;/p&gt;

&lt;p&gt;Here is the actual arithmetic for India as at September 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The subscription (Shopify's own India price list)
&lt;/h2&gt;

&lt;p&gt;From &lt;a href="https://www.shopify.com/in/pricing" rel="noopener noreferrer"&gt;shopify.com/in/pricing&lt;/a&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Pay monthly&lt;/th&gt;
&lt;th&gt;Pay yearly&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;₹1,994/mo&lt;/td&gt;
&lt;td&gt;₹1,499/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grow&lt;/td&gt;
&lt;td&gt;₹7,447/mo&lt;/td&gt;
&lt;td&gt;₹5,599/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Advanced&lt;/td&gt;
&lt;td&gt;₹30,164/mo&lt;/td&gt;
&lt;td&gt;₹22,680/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plus&lt;/td&gt;
&lt;td&gt;from ₹1,75,000/mo&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And, verbatim from the same page's FAQ: &lt;em&gt;"There are no setup fees on any of our plans."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So the headline is ₹1,994 a month, or ₹17,988 a year if you commit annually. That is the number everyone quotes. It is also the number that matters least.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The thing that is different in India: Shopify Payments doesn't operate here
&lt;/h2&gt;

&lt;p&gt;Shopify publishes a &lt;a href="https://help.shopify.com/en/manual/payments/shopify-payments/shopify-payments-requirements" rel="noopener noreferrer"&gt;list of supported countries for Shopify Payments&lt;/a&gt;. As I write this it runs from Australia and Austria through to the UAE, the UK and the US — 40-odd countries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;India is not on it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That has one direct consequence, which Shopify also states plainly in its pricing FAQ:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Third-party transaction fees may apply when you use a third-party payment provider (instead of Shopify Payments). The rate depends on your plan.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Put those two facts together and you get the India-specific outcome: every Indian Shopify store &lt;em&gt;must&lt;/em&gt; use a third-party gateway — Razorpay, PayU, Cashfree, PhonePe — which means every Indian Shopify store pays Shopify's third-party transaction fee on &lt;strong&gt;every order&lt;/strong&gt;. There is no configuration that avoids it, because the thing that would avoid it isn't available here.&lt;/p&gt;

&lt;p&gt;A merchant in a supported country can switch that fee off by turning Shopify Payments on. You cannot. That is the asymmetry nobody's cost comparison mentions.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. And then there's GST on the gateway fee
&lt;/h2&gt;

&lt;p&gt;Second India-only line item, and an easy one to under-budget. A standard Razorpay/PayU/Cashfree account is around &lt;strong&gt;2% per transaction&lt;/strong&gt; on domestic cards — and &lt;strong&gt;18% GST is charged on that fee&lt;/strong&gt;, which makes the real rate about &lt;strong&gt;2.36%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;On ₹50,00,000 of annual sales that's ₹1,18,000, not ₹1,00,000. An ₹18,000/year line that appears in exactly zero comparison tables published outside India.&lt;/p&gt;

&lt;p&gt;One more, if you are GST-registered: Shopify bills its subscription from outside India, so the &lt;strong&gt;reverse charge mechanism&lt;/strong&gt; applies — you pay the GST to the government yourself and claim it back. Net zero if you are registered, a real 18% if you are not. Ask your CA, not a blog post, about your own position.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. So what does it actually cost to run?
&lt;/h2&gt;

&lt;p&gt;Stack the three layers for a Basic-plan store:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subscription: &lt;strong&gt;₹1,994/mo&lt;/strong&gt; (₹1,499/mo yearly)&lt;/li&gt;
&lt;li&gt;Shopify's third-party transaction fee: &lt;strong&gt;a percentage of every order&lt;/strong&gt;, unavoidable in India, rate depends on plan&lt;/li&gt;
&lt;li&gt;Gateway + GST: &lt;strong&gt;~2.36% of every order&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first number is fixed. The other two scale with your revenue — and that is the whole decision, because WooCommerce's cost structure is the opposite shape: nothing for the software, everything in hosting and maintenance labour, which stays roughly flat as sales grow.&lt;/p&gt;

&lt;p&gt;Two lines with different slopes cross somewhere. We did that arithmetic at four revenue levels for the Indian market — including where the crossover actually sits and the case for not building a store at all below a certain volume — in &lt;a href="https://zoopcoder.com/guides/ecommerce-website-cost-india.php" rel="noopener noreferrer"&gt;what an e-commerce website costs in India&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The short version of that guide, so you don't have to click:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Under ~₹2 lakh/year in online sales:&lt;/strong&gt; don't build a store. A WhatsApp Business catalogue and a payment link take an afternoon and cost nothing but the transaction fee.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;~₹2 lakh to ~₹13 lakh/year:&lt;/strong&gt; Shopify. The subscription plus its cut is cheaper than paying somebody in India to keep WooCommerce patched, and it is dramatically less work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Above ~₹13 lakh/year:&lt;/strong&gt; the lines cross and WooCommerce starts winning, because Shopify's percentage keeps climbing with your revenue and maintenance labour doesn't.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That recommendation sends most small sellers &lt;em&gt;away&lt;/em&gt; from the larger project, which is the opposite of what an agency blog usually does. It is also just what the maths says.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. What setup actually involves
&lt;/h2&gt;

&lt;p&gt;A blank Shopify store does not sell. What it needs before it can take a rupee:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A theme customised enough not to look like a demo (free themes are fine; the licence for a paid one is yours to buy)&lt;/li&gt;
&lt;li&gt;Products with real variants and collections, not a flat list&lt;/li&gt;
&lt;li&gt;A gateway connected and KYC-approved — this is usually the long pole, not the design&lt;/li&gt;
&lt;li&gt;Shipping zones, rates and COD, which in India is still a large share of orders&lt;/li&gt;
&lt;li&gt;GST tax settings&lt;/li&gt;
&lt;li&gt;Refund, privacy, shipping and terms pages — &lt;strong&gt;gateways ask for these during approval&lt;/strong&gt;, and a missing shipping policy is a very common reason an Indian gateway application stalls&lt;/li&gt;
&lt;li&gt;A real end-to-end test order before you announce anything&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that is hard. All of it is fiddly, and the gateway approval step has a queue you don't control.&lt;/p&gt;

&lt;p&gt;If you'd rather not, ZoopCoder does it as a fixed price: &lt;strong&gt;&lt;a href="https://zoopcoder.com/services/shopify-store-setup.php" rel="noopener noreferrer"&gt;Shopify store setup — ₹14,999, 7-10 working days&lt;/a&gt;&lt;/strong&gt;, up to 30 products, gateway connected, COD, shipping, GST, domain, policy pages and a live test order before handover. The Shopify plan stays on your own account and your own card — we work as staff on your store and that access can be removed the day we hand over.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-line summary
&lt;/h2&gt;

&lt;p&gt;Shopify in India is ₹1,994/month &lt;strong&gt;plus a percentage you cannot switch off&lt;/strong&gt;, because Shopify Payments doesn't operate here. Budget the percentage, not the subscription. Below about ₹13 lakh a year in sales, it's still the right platform for most sellers — it's just not as cheap as the international articles make it look.&lt;/p&gt;

</description>
      <category>shopify</category>
      <category>ecommerce</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Google Play's API 36 deadline has passed — what actually breaks when you upgrade</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Tue, 15 Sep 2026 05:29:30 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/google-plays-api-36-deadline-has-passed-what-actually-breaks-when-you-upgrade-1apb</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/google-plays-api-36-deadline-has-passed-what-actually-breaks-when-you-upgrade-1apb</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work at &lt;a href="https://zoopcoder.com/" rel="noopener noreferrer"&gt;ZoopCoder&lt;/a&gt;, an Indian dev shop, and we sell a paid fixed-price version of this upgrade. Everything below is from Google's own published documentation and is linked so you can check it. There are no fees in this post paid to us except the one clearly marked at the end — treat this as a commercially interested source and verify the dates yourself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you have an Android app in production and you have not shipped an update since August, there is a decent chance Play Console will refuse your next upload with this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Your app must target Android 16 (API level 36) or higher.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is not a bug and it is not your build tooling. It is Google Play's annual target API level requirement, and this year's step took effect on &lt;strong&gt;31 August 2026&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is exactly what the rule says, what it blocks, how much time you have left, and — the part most posts skip — what actually breaks when you raise the number.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule, in Google's words
&lt;/h2&gt;

&lt;p&gt;From &lt;a href="https://developer.android.com/google/play/requirements/target-sdk" rel="noopener noreferrer"&gt;Meet Google Play's target API level requirement&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Starting August 31 2026:&lt;/strong&gt; New apps and app updates must target Android 16 (API level 36) or higher to be submitted to Google Play; except for Wear OS and Android Automotive OS apps, which must target Android 15 (API level 35) or higher, and Android TV and Android XR apps, which must target Android 14 (API level 34) or higher.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Form factor&lt;/th&gt;
&lt;th&gt;Minimum target API level&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Phones / tablets / foldables&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;36&lt;/strong&gt; (Android 16)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wear OS&lt;/td&gt;
&lt;td&gt;35 (Android 15)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Android Automotive OS&lt;/td&gt;
&lt;td&gt;35 (Android 15)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Android TV&lt;/td&gt;
&lt;td&gt;34 (Android 14)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Android XR&lt;/td&gt;
&lt;td&gt;34 (Android 14)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things people get wrong about this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;It applies to updates, not just new apps.&lt;/strong&gt; A five-year-old app with a million installs cannot ship a one-line crash fix until its &lt;code&gt;targetSdk&lt;/code&gt; goes to 36. The block is on the upload itself, in Play Console, before review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;There is a second, softer rule for apps you never touch again.&lt;/strong&gt; Existing apps must target API 35 or higher "to remain available to new users on devices running Android OS higher than your app's target API level." An app left on API 34 doesn't vanish — it just quietly stops being installable by new users on current phones, which looks identical to your install rate dying for no reason.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The documented exception is narrow: "permanently private apps that are restricted to users in a specific organization and intended for internal distribution only."&lt;/p&gt;

&lt;h2&gt;
  
  
  You can buy time, once, until 1 November 2026
&lt;/h2&gt;

&lt;p&gt;Also straight from that page:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you need more time to update your app, you'll be able to request an extension to November 1, 2026. You'll be able to access your app's extension forms in Play Console later this year.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the whole reprieve. It is a one-off form inside Play Console, it moves your date to &lt;strong&gt;1 November 2026&lt;/strong&gt;, and it does not renew. If you are reading this and you're blocked, filing that is the first thing to do — then do the work, because the extension is not a plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually breaks (this is the real work)
&lt;/h2&gt;

&lt;p&gt;Bumping &lt;code&gt;targetSdk&lt;/code&gt; from 35 to 36 is one line. Everything after that line is the job. Four changes catch almost everybody, all documented in &lt;a href="https://developer.android.com/about/versions/16/behavior-changes-16" rel="noopener noreferrer"&gt;Behavior changes: Apps targeting Android 16&lt;/a&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The edge-to-edge opt-out is gone
&lt;/h3&gt;

&lt;p&gt;Android 15 enforced edge-to-edge for apps targeting API 35, but you could escape with &lt;code&gt;R.attr#windowOptOutEdgeToEdgeEnforcement = true&lt;/code&gt;. For apps targeting API 36, that attribute is &lt;strong&gt;deprecated and disabled&lt;/strong&gt; on Android 16 devices — you cannot opt out any more.&lt;/p&gt;

&lt;p&gt;Practical effect: your content now draws under the status bar and the navigation bar. Buttons end up under the gesture pill; headers end up under the clock. Nothing crashes, so CI stays green and the bug arrives via a screenshot from a user.&lt;/p&gt;

&lt;p&gt;The fix is to apply window insets properly (&lt;a href="https://developer.android.com/develop/ui/compose/layouts/insets" rel="noopener noreferrer"&gt;Compose&lt;/a&gt; / &lt;a href="https://developer.android.com/develop/ui/views/layout/edge-to-edge" rel="noopener noreferrer"&gt;Views&lt;/a&gt;) rather than to hunt for a new opt-out flag. There isn't one.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Predictive back is on by default — and &lt;code&gt;onBackPressed&lt;/code&gt; is never called
&lt;/h3&gt;

&lt;p&gt;This is the nastiest one, and it is the reason I am writing this post:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For apps targeting Android 16 (API level 36) or higher and running on an Android 16 or higher device, the predictive back system animations (back-to-home, cross-task, and cross-activity) are enabled by default. Additionally, &lt;code&gt;onBackPressed&lt;/code&gt; is not called and &lt;code&gt;KeyEvent.KEYCODE_BACK&lt;/code&gt; is not dispatched anymore.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If your app intercepts the back key at all, that interception silently stops running. The single most common casualty is the &lt;strong&gt;WebView wrapper&lt;/strong&gt; pattern — the classic&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Override&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;onBackPressed&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;canGoBack&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt; &lt;span class="n"&gt;webView&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;goBack&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="kd"&gt;super&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;onBackPressed&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;— which is in a very large share of India's small-business apps. After the upgrade, back exits the app instead of going back a page, and it does so from the first screen the user ever presses back on.&lt;/p&gt;

&lt;p&gt;Two options: migrate to the &lt;a href="https://developer.android.com/guide/navigation/custom-back/predictive-back-gesture#update-custom" rel="noopener noreferrer"&gt;supported back navigation APIs&lt;/a&gt;, or set &lt;code&gt;android:enableOnBackInvokedCallback="false"&lt;/code&gt; on &lt;code&gt;&amp;lt;application&amp;gt;&lt;/code&gt; or the specific &lt;code&gt;&amp;lt;activity&amp;gt;&lt;/code&gt; as a &lt;strong&gt;temporary&lt;/strong&gt; opt-out while you migrate. Google's own wording for that flag is "temporarily opt out", and it is worth treating that word as load-bearing.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Orientation and aspect-ratio locks stop being honoured on big screens
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;For apps targeting Android 16 (API level 36), orientation, resizability, and aspect ratio restrictions no longer apply on displays with smallest width &amp;gt;= 600dp. Apps fill the entire display window, regardless of aspect ratio or a user's preferred orientation, and pillarboxing isn't used.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you shipped &lt;code&gt;screenOrientation="portrait"&lt;/code&gt; and assumed it would hold, it won't on a tablet, a foldable's inner screen, or desktop windowing. There is a per-activity manifest opt-out (&lt;code&gt;PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY&lt;/code&gt;) and an application-level one, but the direction of travel is obvious and the escape hatches are explicitly transitional.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;code&gt;elegantTextHeight&lt;/code&gt; is deprecated and ignored — and this one is an India problem
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Android 16 deprecates the &lt;code&gt;elegantTextHeight&lt;/code&gt; attribute, and the attribute will be ignored once your app targets Android 16. The "UI fonts" controlled by these APIs are being discontinued, so you should adapt any layouts to ensure consistent and future proof text rendering in Arabic, Lao, Myanmar, Tamil, Gujarati, Kannada, Malayalam, Odia, Telugu or Thai.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Six of those ten scripts are Indian. If your app ships Tamil, Telugu, Kannada, Malayalam, Odia or Gujarati strings, your line heights move and tightly-packed layouts clip. Nobody in your QA group is going to catch that unless somebody is explicitly told to look at the regional-language build.&lt;/p&gt;

&lt;h2&gt;
  
  
  While you are in there: the 16 KB page size deadline
&lt;/h2&gt;

&lt;p&gt;Different rule, same neighbourhood, and worth doing in the same sitting. From &lt;a href="https://developer.android.com/guide/practices/page-sizes" rel="noopener noreferrer"&gt;Support 16 KB page sizes&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To ensure your app works correctly on the latest versions of Android, all apps targeting Android 15 (API level 35) and higher must support 16 KB memory page sizes on 64-bit devices on Google Play. &lt;strong&gt;Starting February 1, 2027&lt;/strong&gt;, if your app updates don't support 16 KB memory page sizes, you won't be able to release these updates.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The good news, also from that page:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If your app only uses code written in the Java programming language or in Kotlin, including all libraries or SDKs, then your app already supports 16 KB devices.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So this only bites if you (or a dependency — think older video, ML, crypto, PDF or game SDKs) ship native &lt;code&gt;.so&lt;/code&gt; files. Check your AAB's &lt;code&gt;lib/arm64-v8a/&lt;/code&gt; contents before you assume you're clear, because "a library I depend on has NDK code" is a much more common answer than "I wrote NDK code".&lt;/p&gt;

&lt;h2&gt;
  
  
  What this costs
&lt;/h2&gt;

&lt;p&gt;Honest version: if it's a healthy modern project with maintained dependencies, this is a half-day for someone who has done it before, and you should just do it yourself using the links above. Nothing in this post is secret.&lt;/p&gt;

&lt;p&gt;It gets expensive when the project is old: an unmaintained Gradle plugin, an AGP version that won't compile against API 36, a dependency that was abandoned three years ago, a Cordova shell. Then you are not doing a one-line bump, you are doing an archaeology project.&lt;/p&gt;

&lt;p&gt;If you'd rather hand it over, ZoopCoder does this as a fixed-price job: &lt;strong&gt;&lt;a href="https://zoopcoder.com/services/target-sdk-upgrade.php" rel="noopener noreferrer"&gt;target API 36 upgrade — ₹2,999, 2-4 working days&lt;/a&gt;&lt;/strong&gt;, which covers the tooling update, the four behaviour changes above, a 16 KB check on native libraries, and a signed AAB. We quote separately (and say so up front) if the project turns out to need a rewrite rather than an upgrade — that is the honest failure mode of a fixed price on legacy code.&lt;/p&gt;

&lt;p&gt;The wider point, which is worth more than the service: an Android app is not a thing you finish. Google and Apple move their requirements on their own calendar, not yours, and an app nobody touches for two years eventually fails a store requirement without anything about it having "broken". We put a yearly number on that in &lt;a href="https://zoopcoder.com/guides/website-maintenance-cost-india.php" rel="noopener noreferrer"&gt;what website and app maintenance actually costs in India&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do the extension form today if you're blocked. Then do the upgrade before 1 November.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>mobile</category>
      <category>googleplay</category>
      <category>programming</category>
    </item>
    <item>
      <title>WhatsApp Business Platform pricing in rupees — and the two things that change on 1 October 2026</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Mon, 14 Sep 2026 22:31:50 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/whatsapp-business-platform-pricing-in-rupees-and-the-two-things-that-change-on-1-october-2026-4ko0</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/whatsapp-business-platform-pricing-in-rupees-and-the-two-things-that-change-on-1-october-2026-4ko0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work on &lt;a href="https://zoopcoder.com" rel="noopener noreferrer"&gt;ZoopCoder&lt;/a&gt;, a small Indian dev shop that builds WhatsApp chatbots as a paid service. Every per-message rate below is &lt;strong&gt;Meta's&lt;/strong&gt;, taken from Meta's own published rate card, and is billed by Meta directly to your WhatsApp Business account — none of it reaches us. The one paid thing we sell is at the end, clearly marked.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;WhatsApp Business Platform pricing has changed twice in eighteen months and is about to change again in two weeks. Most of the "WhatsApp API pricing India" pages you will find are still describing the 2023 model. Here are the current numbers in rupees, straight off Meta's rate card, plus what actually lands on &lt;strong&gt;1 October 2026&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Source for everything below: &lt;a href="https://developers.facebook.com/docs/whatsapp/pricing" rel="noopener noreferrer"&gt;Meta's pricing documentation&lt;/a&gt;, last updated 10 September 2026, and the INR rate card CSV linked from it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The model, in one paragraph
&lt;/h2&gt;

&lt;p&gt;Until mid-2025 Meta charged per &lt;strong&gt;24-hour conversation&lt;/strong&gt;. Since &lt;strong&gt;1 July 2025&lt;/strong&gt; it charges &lt;strong&gt;per template message delivered&lt;/strong&gt; instead. You are charged when a template message is delivered; the rate depends on the template's &lt;strong&gt;category&lt;/strong&gt; (marketing, utility, authentication) and the &lt;strong&gt;country calling code&lt;/strong&gt; of the person receiving it. Free-form, non-template messages — the ordinary replies a bot or a human sends inside an open 24-hour customer service window — have not been charged since 1 November 2024.&lt;/p&gt;

&lt;p&gt;That last sentence is the one with an expiry date on it. More below.&lt;/p&gt;

&lt;h2&gt;
  
  
  India rates today (effective 1 July 2026)
&lt;/h2&gt;

&lt;p&gt;Per message delivered, in rupees, to an Indian (+91) number:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Template category&lt;/th&gt;
&lt;th&gt;Rate per message&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Marketing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;₹0.8631&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Promotions, offers, re-engagement, cart nudges&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Utility&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;₹0.1150&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Order confirmations, shipping updates, payment receipts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;₹0.1150&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OTPs and login codes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication-international&lt;/td&gt;
&lt;td&gt;₹2.4971&lt;/td&gt;
&lt;td&gt;Auth messages billed under the international rate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Service&lt;/strong&gt; (free-form reply in an open 24h window)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;not charged&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;…until 30 September 2026. See below&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things jump out. Marketing is &lt;strong&gt;7.5× the price of utility&lt;/strong&gt; in India, and utility is so cheap — about eleven and a half paise — that order updates are effectively a rounding error. A store sending 2,000 shipping updates a month spends &lt;strong&gt;₹230&lt;/strong&gt;. A store blasting 5,000 marketing templates a month spends &lt;strong&gt;₹4,315&lt;/strong&gt;. Same channel, wildly different economics, and the difference is entirely which category your template is approved under.&lt;/p&gt;

&lt;h2&gt;
  
  
  What changes on 1 October 2026
&lt;/h2&gt;

&lt;p&gt;Two changes, both of which make free things cost money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Service messages start being charged.&lt;/strong&gt; Those free-form replies inside an open 24-hour customer service window — everything a chatbot says back to a customer who messaged first — become chargeable at &lt;strong&gt;the same rate as utility and authentication in your market&lt;/strong&gt;. In India that is &lt;strong&gt;₹0.1150 per message&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;There is a free tier, and it is per phone number, not per business: &lt;strong&gt;1,000 service messages per business phone number per month&lt;/strong&gt;, free. Meta only charges from the 1,001st service message delivered in a month. The allowance &lt;strong&gt;does not roll over&lt;/strong&gt; — 1,000 in October, 1,000 in November, unused ones vanish. And note Meta's own warning: if you have no payment method on the account, your first 1,000 service messages each month still go out, but the 1,001st is simply &lt;strong&gt;not delivered&lt;/strong&gt;. Add a payment method in Billing Hub before October if your volume is anywhere near the line.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Utility templates sent in reply to a user become chargeable again.&lt;/strong&gt; Since 1 July 2025, a utility template delivered inside an open customer service window was free. From 1 October 2026 it is not.&lt;/p&gt;

&lt;p&gt;India is &lt;strong&gt;not&lt;/strong&gt; in Meta's list of markets whose marketing, utility or authentication rates change on 1 October 2026, so the ₹0.8631 / ₹0.1150 figures above should hold through the switchover. The new cost is the newly-chargeable categories, not a rate rise.&lt;/p&gt;

&lt;h2&gt;
  
  
  What that does to a real bill
&lt;/h2&gt;

&lt;p&gt;Take a small Indian D2C store running a bot on one number. 2,000 people message in each month; the bot answers each with roughly three messages; the store also sends 2,000 shipping updates and one marketing blast to 5,000 opted-in contacts.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Line&lt;/th&gt;
&lt;th&gt;Volume&lt;/th&gt;
&lt;th&gt;Until 30 Sep 2026&lt;/th&gt;
&lt;th&gt;From 1 Oct 2026&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bot replies (service messages)&lt;/td&gt;
&lt;td&gt;6,000&lt;/td&gt;
&lt;td&gt;₹0&lt;/td&gt;
&lt;td&gt;(6,000 − 1,000 free) × ₹0.1150 = &lt;strong&gt;₹575&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shipping updates (utility templates)&lt;/td&gt;
&lt;td&gt;2,000&lt;/td&gt;
&lt;td&gt;₹230&lt;/td&gt;
&lt;td&gt;₹230&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketing blast&lt;/td&gt;
&lt;td&gt;5,000&lt;/td&gt;
&lt;td&gt;₹4,315&lt;/td&gt;
&lt;td&gt;₹4,315&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monthly total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;₹4,545&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;₹5,120&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So the October change costs this business ₹575 a month. Not existential — but it is the difference between "replies are free" and "replies are metered", and if you are running a high-volume support bot on one number, 50,000 service messages a month goes from ₹0 to about &lt;strong&gt;₹5,635&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways to keep the bill down
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Let the customer start the conversation.&lt;/strong&gt; A click-to-chat link, a WhatsApp button on your site, a QR code on the packaging. Replying inside an open window is ₹0.1150 a message and the first 1,000 are free; reaching out cold with a marketing template is ₹0.8631 every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Get the template category right.&lt;/strong&gt; An order confirmation approved as &lt;em&gt;marketing&lt;/em&gt; instead of &lt;em&gt;utility&lt;/em&gt; costs you 7.5× for no reason. Write templates so they are unambiguously transactional, and challenge a miscategorisation rather than shrugging at it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch the 1,000-message line per number.&lt;/strong&gt; The free tier is per business phone number. If you genuinely run separate support and sales functions, separate numbers each get their own 1,000 — but do not split numbers purely to farm the allowance; you will pay for it in verification hassle and split chat history.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  One thing worth saying about unofficial tools
&lt;/h2&gt;

&lt;p&gt;There is a whole market of cheap "WhatsApp automation" tools that drive the consumer app rather than the Business Platform. They are cheaper because they are against WhatsApp's terms, and the failure mode is your business number getting banned with the chat history inside it. If WhatsApp is a real sales channel for you, the official API's per-message rupees-and-paise pricing is not the expensive option.&lt;/p&gt;

&lt;h2&gt;
  
  
  The paid option, stated plainly
&lt;/h2&gt;

&lt;p&gt;ZoopCoder builds a chatbot on the official WhatsApp Business Platform — menus, up to 25 FAQ replies, lead capture into a Google Sheet, human handoff, up to 3 templates submitted for Meta approval — for a fixed &lt;strong&gt;₹7,999&lt;/strong&gt;, live in 7–10 working days, no monthly fee from us. It is &lt;a href="https://zoopcoder.com/services/whatsapp-chatbot.php" rel="noopener noreferrer"&gt;here&lt;/a&gt; with the full scope. Meta's per-message charges above are yours and go to Meta; we do not mark them up and we do not resell them.&lt;/p&gt;

&lt;p&gt;If you are costing a whole storefront rather than just the bot, the rest of the recurring lines are itemised in our &lt;a href="https://zoopcoder.com/guides/ecommerce-website-cost-india.php" rel="noopener noreferrer"&gt;e-commerce website cost guide for India&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Rates change quarterly. If you are reading this months from now, check &lt;a href="https://developers.facebook.com/docs/whatsapp/pricing" rel="noopener noreferrer"&gt;Meta's rate card&lt;/a&gt; before quoting these numbers to anyone.&lt;/p&gt;

</description>
      <category>whatsapp</category>
      <category>api</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
    <item>
      <title>What it actually costs to publish an iPhone app on the App Store from India (2026 numbers)</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Mon, 14 Sep 2026 22:30:51 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/what-it-actually-costs-to-publish-an-iphone-app-on-the-app-store-from-india-2026-numbers-1nmi</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/what-it-actually-costs-to-publish-an-iphone-app-on-the-app-store-from-india-2026-numbers-1nmi</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work on &lt;a href="https://zoopcoder.com" rel="noopener noreferrer"&gt;ZoopCoder&lt;/a&gt;, a small Indian dev shop that sells App Store submission as a paid fixed-price service. Every &lt;strong&gt;fee&lt;/strong&gt; in this post is money paid to Apple, not to us, and I have linked Apple's own page for each one so you can check it. The single paid thing we sell is flagged at the very end — the rest of the post works fine if you ignore it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every few weeks someone asks me the same question in a slightly different form: &lt;em&gt;"how much does it cost to put an app on the App Store?"&lt;/em&gt; The answers online are either American, or a year out of date, or quietly skip the part that actually costs money. So here are the 2026 numbers, in rupees, with sources.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. The fee: US$99 a year, and the word &lt;em&gt;year&lt;/em&gt; is the whole story
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://developer.apple.com/support/enrollment/" rel="noopener noreferrer"&gt;Apple Developer Program&lt;/a&gt; is &lt;strong&gt;99 USD per membership year&lt;/strong&gt;, "in local currency where available" — so Apple bills you in rupees during enrolment. At ₹95.61 to the dollar (14 September 2026) that is &lt;strong&gt;about ₹9,500 a year&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Compare that to Google:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Store&lt;/th&gt;
&lt;th&gt;What you pay&lt;/th&gt;
&lt;th&gt;How often&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google Play&lt;/td&gt;
&lt;td&gt;US$25 (about ₹2,400)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Once. Ever.&lt;/strong&gt; One account, every app you ever ship&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple App Store&lt;/td&gt;
&lt;td&gt;US$99 (about ₹9,500)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Every year&lt;/strong&gt;, for as long as you want the apps listed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That difference compounds. Three years on Google Play costs US$25. Three years on the App Store costs US$297.&lt;/p&gt;

&lt;p&gt;And Apple's fee does not lapse quietly. When the membership expires, your apps are &lt;strong&gt;removed from the App Store&lt;/strong&gt;. People who already installed the app keep their copy, but nobody new can download it and you cannot ship an update until you renew. If you are a solo dev with one free app and no revenue, budget that ₹9,500 as a permanent line, not a launch cost.&lt;/p&gt;

&lt;p&gt;(Accredited educational institutions, government entities and qualifying non-profits can apply to Apple for a &lt;a href="https://developer.apple.com/support/fee-waiver/" rel="noopener noreferrer"&gt;fee waiver&lt;/a&gt;. Most people reading this will not qualify.)&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Individual or organization? Decide before you pay, not after
&lt;/h2&gt;

&lt;p&gt;This one costs people days, and it is free to get right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Individual enrolment&lt;/strong&gt; needs your Apple Account with two-factor on, and a card. That is it. But your &lt;strong&gt;own legal name&lt;/strong&gt; is shown as the seller on the App Store listing. For a personal project, fine. For anything you want to look like a company, not fine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Organization enrolment&lt;/strong&gt; shows your company name as the seller instead, and Apple &lt;a href="https://developer.apple.com/programs/enroll/" rel="noopener noreferrer"&gt;requires&lt;/a&gt; rather more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a &lt;strong&gt;D-U-N-S Number&lt;/strong&gt; for the legal entity (free from Dun &amp;amp; Bradstreet, but requesting one takes days);&lt;/li&gt;
&lt;li&gt;a legal entity that can contract with Apple — Apple explicitly does &lt;strong&gt;not&lt;/strong&gt; accept DBAs, trade names or branches;&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;work email on your organization's own domain&lt;/strong&gt; — a Gmail address will not do;&lt;/li&gt;
&lt;li&gt;a &lt;strong&gt;publicly working company website&lt;/strong&gt; on that same domain. A domain-registrar parking page or a link to your Instagram gets rejected;&lt;/li&gt;
&lt;li&gt;and the person enrolling must actually have authority to bind the company.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are an Indian private limited or LLP and do not yet have a D-U-N-S number, start that request first and do everything else while it processes. Switching from individual to organization later is a support ticket, not a checkbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Review takes a day. Rework takes a fortnight.
&lt;/h2&gt;

&lt;p&gt;Apple's own number on the &lt;a href="https://developer.apple.com/app-store/review/" rel="noopener noreferrer"&gt;App Review page&lt;/a&gt;: &lt;strong&gt;"On average, 90% of submissions are reviewed in less than 24 hours."&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is genuinely fast — faster than Google Play's typical turnaround right now. The reason iOS launches feel slow is the other Apple statistic on that same page:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"On average, over 40% of unresolved issues are related to guideline 2.1: App Completeness"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Guideline 2.1 is not a design judgement or a policy grey area. It is the boring stuff:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the app &lt;strong&gt;crashed&lt;/strong&gt; on the reviewer's device;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;placeholder content&lt;/strong&gt; — lorem ipsum, a stock avatar, an empty tab — still in the build you submitted;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;incomplete information&lt;/strong&gt;: no demo account, so the reviewer hit your login screen and could not get past it;&lt;/li&gt;
&lt;li&gt;broken links (a privacy policy URL that 404s will do it);&lt;/li&gt;
&lt;li&gt;a screenshot showing an Android device, or UI that is not in the build.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every one of those is checkable in twenty minutes before you submit. Each one you miss costs a full review cycle, and cycles are where the two weeks go.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The demo account is the single highest-value thing you can add.&lt;/strong&gt; If your app has any sign-in at all, put a working username and password in the App Review notes, make sure the account has realistic data in it, and keep it alive until the app is approved. Reviewers do not sign up.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Guideline 4.2, and why website wrappers die on iOS
&lt;/h2&gt;

&lt;p&gt;If your plan is "wrap our website in a WebView and ship it", read &lt;a href="https://developer.apple.com/app-store/review/guidelines/#minimum-functionality" rel="noopener noreferrer"&gt;guideline 4.2&lt;/a&gt; first. Apple says it plainly:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Websites served in an iOS app, web content that is not formatted for iOS, and limited web interactions do not make a quality app."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Android will usually take that app. iOS will usually not. If you want the same web content on the App Store, it needs real native behaviour on top — push notifications, offline handling, native navigation, device features that a browser tab cannot offer. Plan that as build work, not as a conversion step.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The whole first-year bill, in rupees
&lt;/h2&gt;

&lt;p&gt;For an Indian founder shipping one iPhone app, with a build that already exists:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What&lt;/th&gt;
&lt;th&gt;Who charges it&lt;/th&gt;
&lt;th&gt;Amount&lt;/th&gt;
&lt;th&gt;How often&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Apple Developer Program&lt;/td&gt;
&lt;td&gt;Apple&lt;/td&gt;
&lt;td&gt;US$99 (~₹9,500)&lt;/td&gt;
&lt;td&gt;Every year&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;D-U-N-S number (org accounts)&lt;/td&gt;
&lt;td&gt;Dun &amp;amp; Bradstreet&lt;/td&gt;
&lt;td&gt;₹0&lt;/td&gt;
&lt;td&gt;Once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apple commission on in-app sales&lt;/td&gt;
&lt;td&gt;Apple&lt;/td&gt;
&lt;td&gt;15% under US$1M/yr revenue&lt;/td&gt;
&lt;td&gt;Per sale&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;App Store submission, if you do it yourself&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;₹0 and a day or two of your time&lt;/td&gt;
&lt;td&gt;Per app&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Year one: &lt;strong&gt;about ₹9,500&lt;/strong&gt; plus your time. Year two onwards: about ₹9,500. There is no per-app charge and no submission fee — the recurring membership is the entire Apple bill until you start selling inside the app.&lt;/p&gt;

&lt;p&gt;FX used throughout: ₹95.61 to the US dollar, 14 September 2026. Apple charges the rupee price shown at enrolment, which will not track the spot rate exactly.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. When it is not worth it
&lt;/h2&gt;

&lt;p&gt;Be honest with yourself about the ₹9,500 a year. If you are shipping a free app with no revenue model, no update plan and no users waiting for it, an iOS build is a subscription you will resent in month fourteen. Ship Android first — US$25, once, forever — see whether anyone wants the thing, and buy the Apple membership when there is a reason to.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. The paid option, stated plainly
&lt;/h2&gt;

&lt;p&gt;If you would rather not learn App Store Connect: ZoopCoder does the whole submission — app record, listing, App Privacy labels, age rating, export compliance, build upload, review notes and demo login — for a fixed &lt;strong&gt;₹4,999&lt;/strong&gt;, sent to Apple review in 2–3 working days. That is &lt;a href="https://zoopcoder.com/services/app-store-ios-app-publishing.php" rel="noopener noreferrer"&gt;the service page&lt;/a&gt;, price and scope on it. The ₹4,999 is on top of Apple's US$99, not instead of it, and nobody outside Apple can promise you approval — treat anyone who does as a red flag.&lt;/p&gt;

&lt;p&gt;If you are still costing the build itself, we keep an itemised breakdown at &lt;a href="https://zoopcoder.com/guides/mobile-app-development-cost-in-india.php" rel="noopener noreferrer"&gt;mobile app development cost in India&lt;/a&gt;, including the yearly fees both stores charge.&lt;/p&gt;

&lt;p&gt;Corrections welcome — if Apple changes a number, tell me and I will fix the post.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>startup</category>
      <category>mobile</category>
      <category>appstore</category>
    </item>
    <item>
      <title>What it actually costs to publish an Android app on Google Play from India (2026 numbers)</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Mon, 14 Sep 2026 20:01:32 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/what-it-actually-costs-to-publish-an-android-app-on-google-play-from-india-2026-numbers-abk</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/what-it-actually-costs-to-publish-an-android-app-on-google-play-from-india-2026-numbers-abk</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I work at &lt;a href="https://zoopcoder.com/" rel="noopener noreferrer"&gt;ZoopCoder&lt;/a&gt;, an Indian development shop that sells a paid Play Store submission service. That price is at the bottom. Everything above it is the same thing I would tell you for free, and every &lt;em&gt;fee&lt;/em&gt; in this post is paid to Google or Apple, not to us.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Someone asks "how much does it cost to publish an app on the Play Store" roughly every day. They get told "$25", they pay the $25, and then three weeks later they are still not live because of a rule nobody mentioned. Here are the real numbers as of September 2026, from doing this repeatedly for Indian clients.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The fee is US$25, once, and that is genuinely all of it
&lt;/h2&gt;

&lt;p&gt;A Google Play developer account costs a &lt;strong&gt;one-time US$25 registration fee&lt;/strong&gt; — about &lt;strong&gt;₹2,400&lt;/strong&gt; on an Indian card at today's rate, plus whatever forex markup your bank adds. There is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;no annual renewal&lt;/strong&gt; — you pay once and the account is yours;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;no per-app charge&lt;/strong&gt; — one account can hold as many apps as you want;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;no charge to push updates&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the single biggest difference from Apple, which charges &lt;strong&gt;US$99 every year&lt;/strong&gt; and delists your app if you stop paying. If you are choosing which platform to ship first on a tight budget, that asymmetry matters more than any development cost.&lt;/p&gt;

&lt;p&gt;The one thing Google does take is a &lt;strong&gt;service fee of 15–30% on in-app purchases and subscriptions&lt;/strong&gt; — 15% on the first US$1M of yearly earnings for most developers. If your app takes money for physical goods or services delivered outside the app, that fee does not apply.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The cost that is not money: the 14-day, 12-tester clock
&lt;/h2&gt;

&lt;p&gt;This is the one that ruins launch dates.&lt;/p&gt;

&lt;p&gt;If your developer account was registered as a &lt;strong&gt;personal account&lt;/strong&gt; after &lt;strong&gt;13 November 2023&lt;/strong&gt;, Google will not give you production access until you have run a &lt;strong&gt;closed test with at least 12 testers who stay opted in continuously for 14 days&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Read that carefully, because each clause bites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;12 testers&lt;/strong&gt; — real Google accounts that actually opt in. Not 12 email addresses you own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;14 continuous days&lt;/strong&gt; — the clock starts when the test starts, not when you apply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If testers drop below the threshold&lt;/strong&gt;, the clock effectively restarts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Organisation accounts&lt;/strong&gt; (a registered company, D-U-N-S verified) are exempt from this entirely. If you are a registered company and you have a choice, register the developer account as the organisation on day one, not at the end of the project. It is free and it saves you two to three weeks.&lt;/p&gt;

&lt;p&gt;Nobody can shorten this for you. Any service that offers to "provide testers" is offering you a policy violation — Google treats fake tester accounts as exactly that.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. You cannot upload an APK, and you cannot target an old SDK
&lt;/h2&gt;

&lt;p&gt;Two hard technical gates that catch people using app builders and free converters:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Since&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Android App Bundle (.aab)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;August 2021 for new apps&lt;/td&gt;
&lt;td&gt;A plain &lt;code&gt;.apk&lt;/code&gt; will be rejected at upload.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Target API 36 (Android 16)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Current Play requirement&lt;/td&gt;
&lt;td&gt;Building against an older &lt;code&gt;targetSdk&lt;/code&gt; blocks the upload, not just new features.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you exported your app from a free "website to app" tool, check both of these &lt;em&gt;before&lt;/em&gt; you pay for anything else. A large share of those tools still emit an APK built against an older target API, and some do not let you supply your own signing key — which means you could never publish an update under your own account even if the first upload succeeded.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The five declarations that actually cause first rejections
&lt;/h2&gt;

&lt;p&gt;The upload is the easy part. First submissions get bounced on paperwork far more often than on code:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data safety form that does not match reality.&lt;/strong&gt; You declare what the app collects and shares. If your app pulls the advertising ID or device identifiers through an SDK you forgot about, and the form says it collects nothing, that is a mismatch and a rejection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing or unreachable privacy policy URL.&lt;/strong&gt; It must be a live, public URL, on your own domain, reachable without a login.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wrong target-audience answer.&lt;/strong&gt; Answering "children" pulls in a whole extra set of Families policy requirements. Answering it carelessly is a policy problem, not a form problem.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App access credentials the reviewer cannot use.&lt;/strong&gt; If any part of the app is behind a login, you must give a working demo account. Expired or 2FA-protected demo logins are a very common bounce.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content rating questionnaire (IARC) answered inconsistently&lt;/strong&gt; with what the app actually does.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of these need a developer to fix. All of them need someone to actually read the app's behaviour instead of clicking through the form.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. A realistic end-to-end budget (Indian solo founder, app already built)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Line item&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Paid to&lt;/th&gt;
&lt;th&gt;Frequency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google Play developer account&lt;/td&gt;
&lt;td&gt;US$25 (≈ ₹2,400)&lt;/td&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Once, forever&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privacy policy page&lt;/td&gt;
&lt;td&gt;₹0 if you write it yourself&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Store listing copy + screenshots&lt;/td&gt;
&lt;td&gt;₹0–₹5,000&lt;/td&gt;
&lt;td&gt;Designer, or yourself&lt;/td&gt;
&lt;td&gt;Once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Console submission work&lt;/td&gt;
&lt;td&gt;₹0 if you do it yourself&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Per app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Apple, if you also want iOS&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;US$99 (≈ ₹9,500)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Apple&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Every year&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So: an Android-only launch for an app that already exists can genuinely cost you &lt;strong&gt;one payment of about ₹2,400&lt;/strong&gt; and a fortnight of waiting. That is the honest answer, and it is why I think "how much does it cost to publish an app" is usually the wrong question — the expensive parts are the app and the fourteen days, not the fee.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Where we fit, since I said I'd be upfront
&lt;/h2&gt;

&lt;p&gt;If you would rather not spend an evening inside Play Console:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ZoopCoder submits an app to Google Play for a fixed ₹1,999&lt;/strong&gt; — store listing, IARC content rating, Data safety form, target audience, app access declarations, the release itself, and the first round of Google's review feedback. Typically sent for review within 1–2 working days of getting the files. Details and scope: &lt;a href="https://zoopcoder.com/services/play-store-app-publishing.php" rel="noopener noreferrer"&gt;https://zoopcoder.com/services/play-store-app-publishing.php&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;If what you are publishing is &lt;strong&gt;an existing website&lt;/strong&gt;, we build it into a signed, Play-ready AAB targeting API 36 for a fixed &lt;strong&gt;₹4,999&lt;/strong&gt;: &lt;a href="https://zoopcoder.com/services/website-to-android-app.php" rel="noopener noreferrer"&gt;https://zoopcoder.com/services/website-to-android-app.php&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The US$25 is still yours to pay to Google, the app is published under &lt;strong&gt;your&lt;/strong&gt; account, and nobody — us included — can guarantee that Google approves it. Anyone who tells you otherwise is selling you something they do not control.&lt;/p&gt;

&lt;p&gt;If the part you are actually worried about is the calendar rather than the console, we wrote up where the tester window fits into a real Android launch plan here: &lt;a href="https://zoopcoder.com/guides/how-long-to-build-app-website-india.php" rel="noopener noreferrer"&gt;https://zoopcoder.com/guides/how-long-to-build-app-website-india.php&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Numbers checked September 2026. If Google has changed a threshold since, the Play Console policy pages win over this post — tell me in the comments and I will correct it.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>startup</category>
      <category>android</category>
      <category>mobile</category>
    </item>
    <item>
      <title>The four things a website rebuild does not inherit: a migration runbook (India, 2026)</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Wed, 29 Jul 2026 17:24:01 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/the-four-things-a-website-rebuild-does-not-inherit-a-migration-runbook-india-2026-1k9</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/the-four-things-a-website-rebuild-does-not-inherit-a-migration-runbook-india-2026-1k9</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I work on delivery at ZoopCoder, a web and app development agency in India. Rebuilds are our higher-value work, so I have a commercial interest in you concluding "rebuild" — which is why this post is mostly about how to avoid needing one, and it publishes the number that argues against my own side.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most "should we rebuild?" arguments happen on the wrong axis. People argue about the stack. The thing that actually decides the price, the timeline and the risk is &lt;strong&gt;what survives the move&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A redesign inherits everything for free, because nothing moves. A rebuild inherits nothing for free. That gap — not the framework, not the design hours — is where the entire cost difference lives, and it is why a rebuild quote with a big total and no migration lines is a quote for a different project.&lt;/p&gt;

&lt;p&gt;Here is the runbook I wish more Indian rebuild quotes were written against.&lt;/p&gt;

&lt;h2&gt;
  
  
  First: does it even need to be a rebuild?
&lt;/h2&gt;

&lt;p&gt;Three switches. Run them &lt;strong&gt;line by line down the change list&lt;/strong&gt;, not on the project as a whole. One yes anywhere on a line puts that line into rebuild territory.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The platform changes.&lt;/strong&gt; Builder → WordPress, WordPress → custom, one framework → another. Also: the platform is abandoned, or nobody has the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The site must start remembering something it does not store today.&lt;/strong&gt; Logins, orders, uploaded files, a consent record, roles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The URL structure changes.&lt;/strong&gt; Addresses change, sections merge or split, new domain, language prefix.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Zero yeses across the whole list means it is a redesign, whatever anyone is calling it. This matters more than it sounds: it is common for eleven items out of twelve to be pure redesign and exactly one item — usually "let customers log in" — to be the only thing flipping a switch. That item can very often be carved out and scoped separately later, at a fifth of the price today.&lt;/p&gt;

&lt;p&gt;Indian bands, 2026, for calibration:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Work&lt;/th&gt;
&lt;th&gt;Band&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Restyle a brochure site, same pages, same URLs&lt;/td&gt;
&lt;td&gt;₹25,000–₹50,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Restyle a WordPress site&lt;/td&gt;
&lt;td&gt;₹35,000–₹75,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"It is slow" — measure first&lt;/td&gt;
&lt;td&gt;₹0–₹15,000 in most cases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rebuild off a closed builder onto WordPress&lt;/td&gt;
&lt;td&gt;₹35,000–₹75,000 + content carry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rebuild that adds logins, roles or payments&lt;/td&gt;
&lt;td&gt;₹1,00,000+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The four inheritances
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Inheritance&lt;/th&gt;
&lt;th&gt;Redesign&lt;/th&gt;
&lt;th&gt;Rebuild&lt;/th&gt;
&lt;th&gt;Reversible?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;URLs&lt;/td&gt;
&lt;td&gt;Kept, free&lt;/td&gt;
&lt;td&gt;Lost by default&lt;/td&gt;
&lt;td&gt;No, in practice&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content&lt;/td&gt;
&lt;td&gt;Kept, free&lt;/td&gt;
&lt;td&gt;Re-entered page by page&lt;/td&gt;
&lt;td&gt;Yes, expensively&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;td&gt;Untouched&lt;/td&gt;
&lt;td&gt;Mapped migration&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accounts&lt;/td&gt;
&lt;td&gt;Untouched&lt;/td&gt;
&lt;td&gt;Must be transferred&lt;/td&gt;
&lt;td&gt;Yes, slowly&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  1. URLs — the 301 map is a deliverable, not a task
&lt;/h3&gt;

&lt;p&gt;Ask for it &lt;strong&gt;as a file&lt;/strong&gt;, before you sign. Every existing URL on the left, its destination on the right.&lt;/p&gt;

&lt;p&gt;Building the left column properly means unioning three sources, because none of them is complete on its own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sitemap.xml&lt;/code&gt; — what the CMS thinks exists.&lt;/li&gt;
&lt;li&gt;Search Console → Pages → the indexed list — what Google actually has.&lt;/li&gt;
&lt;li&gt;The access log — what real traffic hits. On an old site this is where the surprises are: PDFs, old campaign landing pages, &lt;code&gt;/index.php&lt;/code&gt;-style paths, an &lt;code&gt;/amp/&lt;/code&gt; variant nobody remembers shipping.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# distinct paths real traffic actually requested, most-hit first&lt;/span&gt;
&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $7}'&lt;/span&gt; /var/log/nginx/access.log &lt;span class="se"&gt;\&lt;/span&gt;
  | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/?.*//'&lt;/span&gt; | &lt;span class="nb"&gt;sort&lt;/span&gt; | &lt;span class="nb"&gt;uniq&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; | &lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-200&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rules that save you later: map to the closest equivalent page, never blanket-redirect everything to &lt;code&gt;/&lt;/code&gt; (Google treats a mass redirect to the homepage as a soft 404 and you keep none of it), chain nothing more than one hop, and publish the map &lt;strong&gt;with&lt;/strong&gt; the new site rather than a week after. Then watch crawl errors weekly for a month — the map is never complete on day one, and the log tells you what you missed.&lt;/p&gt;

&lt;p&gt;This is the line most often absent from an Indian rebuild quote, and it is the one whose absence is invisible until traffic drops.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Content — decide who types it in, in writing
&lt;/h3&gt;

&lt;p&gt;"We will migrate the content" is not a scope line, it is an ambiguity. Page-by-page re-entry is real hours and it is the item most often silently handed back to the client mid-project, which is also the single biggest cause of a slipped date. Put the answer in the document: &lt;strong&gt;who types it in, you or me?&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Data — the only irreversible one
&lt;/h3&gt;

&lt;p&gt;Not "we will move the data". The line should read: &lt;strong&gt;export → field map → import → reconcile row counts → spot-check N records together.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="c1"&gt;-- run on both databases after the import; the numbers must match&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="s1"&gt;'enquiries'&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;enquiries&lt;/span&gt;
&lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="s1"&gt;'orders'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="k"&gt;UNION&lt;/span&gt; &lt;span class="k"&gt;ALL&lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="s1"&gt;'users'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="k"&gt;MAX&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the cheapest insurance in the whole project: &lt;strong&gt;keep the old database live and read-only for 90 days after cutover&lt;/strong&gt;, on a staging address. It costs almost nothing and it is the difference between an inconvenience and a catastrophe. Silent truncation of a &lt;code&gt;TEXT&lt;/code&gt; column into a &lt;code&gt;VARCHAR(255)&lt;/code&gt;, timezone drift on &lt;code&gt;created_at&lt;/code&gt;, dropped rows where a NOT NULL was added — none of these announce themselves, and all of them are recoverable if the source is still there.&lt;/p&gt;

&lt;p&gt;Watch the encoding too. A lot of older Indian WordPress installs are &lt;code&gt;utf8&lt;/code&gt; (3-byte) rather than &lt;code&gt;utf8mb4&lt;/code&gt;, so anything with an emoji or certain Indic sequences will silently mangle on the way into a stricter target.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Accounts — not technical work, and the usual reason it stalls
&lt;/h3&gt;

&lt;p&gt;Registrar, hosting panel, DNS, analytics, Search Console, payment gateway, repository, and any transactional email or SMS sender. None of this is engineering. All of it is other people's queues — registrar transfers and gateway KYC in India routinely take a week each — and it is the single most common reason a rebuild sits stalled for three weeks with the code already finished.&lt;/p&gt;

&lt;p&gt;Start it in &lt;strong&gt;week one&lt;/strong&gt;, with every account created in the client's name and the developer added as a user. Not zipped up and handed over at the end.&lt;/p&gt;

&lt;p&gt;Two more worth naming: keep the &lt;strong&gt;existing GA4 and Search Console properties&lt;/strong&gt; rather than creating new ones — history is free to keep and impossible to recreate — and annotate the cutover date so that six months later you can tell a rebuild effect from a seasonal one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two dates that belong in the plan, not in the retro
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;3 October.&lt;/strong&gt; If the client capitalises the rebuild as software, it is depreciated at 40% WDV rather than deducted, and the second proviso to section 32(1) of the Income-tax Act halves depreciation where an asset is put to use for &lt;strong&gt;under 180 days&lt;/strong&gt; in the year. In an ordinary Indian financial year, 3 October is the last day that still completes 180. On ₹1,50,000 that is ₹60,000 of year-one depreciation if you go live on 3 October and ₹30,000 if you go live on 4 October. Same code, same invoice, one calendar day. A redesign treated as revenue expenditure under section 37 is usually deductible in full and is unaffected — in &lt;em&gt;CIT v. Indian Visit.com (P.) Ltd.&lt;/em&gt; the Delhi High Court held website spend produces no accretion to fixed capital. Classification follows what was actually done, never the noun on the invoice. (General information, not tax advice — worth an hour of the client's CA.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;13 May 2027.&lt;/strong&gt; The DPDP Act 2023's substantive obligations on ordinary Indian data fiduciaries are set to apply from this date under the rules notified in November 2025. What it asks for is structural: a plain-language itemised notice available in English &lt;em&gt;or any Eighth Schedule language at the user's option&lt;/em&gt;, consent as a specific affirmative action, withdrawal as easy as giving, and erasure afterwards. In schema terms that is &lt;strong&gt;somewhere to write a consent record, something to match a withdrawal against, and a delete path&lt;/strong&gt; — plus the retention rule that makes the delete meaningful. If you are rebuilding anyway, build it once now instead of retrofitting in eighteen months. Treat the date as a planning date; the phasing has moved before.&lt;/p&gt;

&lt;h2&gt;
  
  
  The number that argues against my own business
&lt;/h2&gt;

&lt;p&gt;A redesign that keeps the platform, the content and the URLs typically costs &lt;strong&gt;between a third and a fifth&lt;/strong&gt; of a rebuild of the same site, and carries almost none of its risk. If the switch test comes back all-off — and "it looks dated and it is slow" comes back all-off — the honest answer is a redesign.&lt;/p&gt;

&lt;p&gt;Especially "it is slow". On small Indian business sites that is almost always one of three cheap things, in this order: uncompressed images straight off a phone, oversubscribed shared hosting, and plugin bloat. Measure, fix those, measure again. A rebuild will certainly produce a fast site; so would ₹8,000 and a Saturday, and only one of those bills arrives twice.&lt;/p&gt;

&lt;p&gt;And "we want better SEO" is backwards. A rebuild is the most reliable way to &lt;em&gt;lose&lt;/em&gt; rankings, because it changes URLs. Rebuild for what the site must do, never for what you hope a search engine will do afterwards.&lt;/p&gt;

&lt;p&gt;Full version with both price tables, the three-switch matrix and the tax breakdown: &lt;a href="https://zoopcoder.com/guides/website-redesign-vs-rebuild-india.php" rel="noopener noreferrer"&gt;Should you redesign your website or rebuild it? (India, 2026)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>india</category>
      <category>seo</category>
      <category>database</category>
    </item>
    <item>
      <title>The agency premium in India is 20% or 42% - and it depends on your GST registration, not their price</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Fri, 24 Jul 2026 10:34:56 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/the-agency-premium-in-india-is-20-or-42-and-it-depends-on-your-gst-registration-not-their-price-4fbg</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/the-agency-premium-in-india-is-20-or-42-and-it-depends-on-your-gst-registration-not-their-price-4fbg</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I work at ZoopCoder, a small development agency in India. So the whole point of this post is a number that argues against hiring us — 42% — and it is the number our own industry never prints.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule first, because it is the only part most people need
&lt;/h2&gt;

&lt;p&gt;In India in 2026, hire a &lt;strong&gt;freelancer&lt;/strong&gt; if the project is under roughly &lt;strong&gt;₹1,00,000&lt;/strong&gt;, has a scope you can write on one page, and could survive a two-week pause. Hire an &lt;strong&gt;agency&lt;/strong&gt; once it crosses ₹1,00,000, needs more than one skill set, or has a launch date you cannot move.&lt;/p&gt;

&lt;p&gt;That is it. Everything else here is the arithmetic behind it, plus one statutory fact that changes the answer for about half the people reading this.&lt;/p&gt;

&lt;h2&gt;
  
  
  The exclusive fact: the agency premium is 20% or 42%, and it depends on YOUR registration, not their price
&lt;/h2&gt;

&lt;p&gt;Every freelancer-vs-agency comparison you will read compares sticker prices. In India the sticker price is not the price, because of one asymmetry that nobody puts in the table.&lt;/p&gt;

&lt;p&gt;Most Indian freelancers bill &lt;strong&gt;without GST&lt;/strong&gt; — under the ₹20 lakh services turnover threshold they are not required to register. Every agency bills &lt;strong&gt;with 18% GST&lt;/strong&gt;. If you are a GST-registered business, that 18% is input tax credit: you pay it and you reclaim it. If you are not registered, it is money you never see again.&lt;/p&gt;

&lt;p&gt;Take a ₹1,00,000 freelance quote against a ₹1,20,000 agency quote for the same scope:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your situation&lt;/th&gt;
&lt;th&gt;Freelancer (no GST)&lt;/th&gt;
&lt;th&gt;Agency ₹1,20,000 + 18% GST&lt;/th&gt;
&lt;th&gt;Real gap&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;GST-registered business&lt;/td&gt;
&lt;td&gt;₹1,00,000 real cost&lt;/td&gt;
&lt;td&gt;₹1,41,600 paid, ₹21,600 reclaimed as ITC → &lt;strong&gt;₹1,20,000&lt;/strong&gt; real cost&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;20%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Not GST-registered&lt;/td&gt;
&lt;td&gt;₹1,00,000 real cost&lt;/td&gt;
&lt;td&gt;₹1,41,600 paid, nothing reclaimable → &lt;strong&gt;₹1,41,600&lt;/strong&gt; real cost&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;42%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Same two vendors. Same quotes. The premium is either 20% or 42% purely because of a fact about &lt;em&gt;you&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;If you are a registered company, the tax is a wash and the agency decision is a straight question of whether continuity is worth a fifth more. If you are a proprietor, an individual founder, a doctor building a clinic site, a small trust — you are in the 42% row, and the agency is genuinely around 40% more expensive than the quote makes it look. That is a real argument for hiring a freelancer and I would rather you heard it from an agency than found it on the invoice.&lt;/p&gt;

&lt;p&gt;(General information, not tax advice. Confirm your own position with your CA.)&lt;/p&gt;

&lt;h2&gt;
  
  
  The second statutory fact runs the other way: Section 194J
&lt;/h2&gt;

&lt;p&gt;If you are a &lt;strong&gt;business&lt;/strong&gt; paying for development services, you are generally required to deduct &lt;strong&gt;TDS before paying&lt;/strong&gt; — commonly &lt;strong&gt;10% under Section 194J&lt;/strong&gt; for professional and technical services — and deposit it against the vendor's PAN.&lt;/p&gt;

&lt;p&gt;An agency does this every month and issues the invoice correctly. A first-time freelancer frequently does not know the rule, has not budgeted for it, and then reads the 10% you correctly withheld as you short-paying them. It is a small administrative thing that sours a genuinely large number of otherwise fine projects.&lt;/p&gt;

&lt;p&gt;Ask, in writing, before the first payment: &lt;em&gt;are you registered for GST, and do you account for TDS under 194J?&lt;/em&gt; Two sentences, and it removes the two most common payment fights in Indian software work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rate bands, briefly
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Freelancer&lt;/th&gt;
&lt;th&gt;Small agency&lt;/th&gt;
&lt;th&gt;Mid-size / enterprise&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Typical rate&lt;/td&gt;
&lt;td&gt;₹400 – ₹1,200 / hr&lt;/td&gt;
&lt;td&gt;₹800 – ₹2,000 / hr&lt;/td&gt;
&lt;td&gt;₹1,500 – ₹6,000 / hr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;People on your project&lt;/td&gt;
&lt;td&gt;One&lt;/td&gt;
&lt;td&gt;Designer + dev(s) + QA&lt;/td&gt;
&lt;td&gt;Team + dedicated PM + BA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;If they vanish&lt;/td&gt;
&lt;td&gt;Project stops — there is no bench&lt;/td&gt;
&lt;td&gt;Someone else picks it up&lt;/td&gt;
&lt;td&gt;Contractually guaranteed cover&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recourse&lt;/td&gt;
&lt;td&gt;Often just a chat thread&lt;/td&gt;
&lt;td&gt;Written scope, fixed price, milestones&lt;/td&gt;
&lt;td&gt;MSA, SLA, indemnity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GST on the invoice&lt;/td&gt;
&lt;td&gt;Often none (below ₹20L turnover)&lt;/td&gt;
&lt;td&gt;18%, reclaimable if registered&lt;/td&gt;
&lt;td&gt;18%, reclaimable if registered&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;So the same 8-screen app is roughly &lt;strong&gt;₹60,000–₹1,50,000&lt;/strong&gt; freelance versus &lt;strong&gt;₹1,00,000–₹3,00,000&lt;/strong&gt; at a small agency. A 40–100% premium that buys exactly one thing: &lt;strong&gt;continuity&lt;/strong&gt;. A freelancer is a single point of failure; an agency is a contract, a team, and somebody still answering the phone in month seven.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the freelancer advantage disappears — and it is not where people expect
&lt;/h2&gt;

&lt;p&gt;The interesting part of pricing the same project both ways is what happens at the top of the range, not the bottom:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Business website, 5–10 pages&lt;/strong&gt; — ₹15,000–₹35,000 freelance vs ₹25,000–₹50,000 agency. The freelancer is genuinely close to half price. Take it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple Flutter app&lt;/strong&gt; — ₹35,000–₹80,000 vs ₹50,000–₹1,00,000. Still a real saving.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium app, logins + payments&lt;/strong&gt; — ₹80,000–₹2,00,000 vs ₹1,00,000–₹2,50,000. The bands are starting to overlap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SaaS MVP&lt;/strong&gt; — ₹1,50,000–₹6,00,000 vs ₹1,50,000–₹5,00,000. &lt;strong&gt;The bands have fully overlapped.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At ₹25,000 a freelancer is half the price. At ₹5,00,000 there is no price advantage left at all, because a solo developer building a SaaS MVP has to sub-contract the design, the DevOps and the QA they cannot do themselves — and the coordination cost of that lands on you, unpaid and unmanaged. You end up as the project manager of an agency you accidentally assembled, at agency prices, with none of the accountability.&lt;/p&gt;

&lt;h2&gt;
  
  
  When an agency is the wrong buy — written by an agency
&lt;/h2&gt;

&lt;p&gt;An agency that claims to be right for every project is telling you about its sales targets, not your project. Cases where hiring one of us is a waste of your money:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A one-to-five page site under ₹25,000.&lt;/strong&gt; There is nothing for a team to coordinate. Our overhead is pure dead weight at this size.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A single well-defined change to something that exists.&lt;/strong&gt; Add a gateway. Fix a form. Migrate a host. One skill, one person, one week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You already have a technical co-founder or in-house lead.&lt;/strong&gt; You already own the thing you would be buying. Buy hands, not a team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ongoing small changes after launch.&lt;/strong&gt; Once a product is built, documented and handed over, a retained freelancer at ₹15,000–₹30,000/month out-values most agency support plans. Agency to build, freelancer to maintain, is genuinely the smartest hybrid I know.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the mirror image, where a freelancer is a mistake rather than a saving: a launch date you cannot move; work needing design + backend + mobile + DevOps simultaneously; anything holding money or personal data; anything a regulator or a client depends on; and — the quiet killer — &lt;strong&gt;any build where you personally cannot judge whether the output is good.&lt;/strong&gt; Managing a freelancer well requires you to be able to evaluate the work. If you cannot, you are not saving 42%. You are buying an unmeasurable risk at a discount.&lt;/p&gt;

&lt;h2&gt;
  
  
  The failure mode that actually costs money
&lt;/h2&gt;

&lt;p&gt;Bad freelance projects almost never fail because the code was bad. They fail because the person stopped replying. One human being has one life: illness, a full-time offer, a better client, burnout.&lt;/p&gt;

&lt;p&gt;And the loss is not the money already paid. The loss is the half-finished, undocumented codebase. Picking up someone else's abandoned project typically runs &lt;strong&gt;30–50% more than building from scratch&lt;/strong&gt;, because the next developer has to read and trust code they did not write before they can safely change a line. Many will refuse and quote you for a rebuild instead. That is how an ₹80,000 saving becomes a ₹1,80,000 bill and four lost months.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to actually do
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Work out which GST row you are in &lt;strong&gt;before&lt;/strong&gt; you compare quotes. It moves the real gap from 20% to 42%.&lt;/li&gt;
&lt;li&gt;Ask both candidates, in writing: GST registration status, and TDS/194J handling.&lt;/li&gt;
&lt;li&gt;Under ₹1,00,000 with a one-page scope → freelancer.&lt;/li&gt;
&lt;li&gt;Over ₹1,00,000, or multi-skill, or a fixed launch date → agency.&lt;/li&gt;
&lt;li&gt;After launch → retained freelancer, almost always.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The long version of this, with the full price-both-ways table and our own published rates rather than a competitor's range, is here: &lt;a href="https://zoopcoder.com/guides/freelancer-vs-agency-india.php" rel="noopener noreferrer"&gt;https://zoopcoder.com/guides/freelancer-vs-agency-india.php&lt;/a&gt; — and our actual prices, which you can check the table against, are at &lt;a href="https://zoopcoder.com/pricing.php" rel="noopener noreferrer"&gt;https://zoopcoder.com/pricing.php&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I run an agency. If the 42% row is you and the project is small, hire the freelancer.&lt;/p&gt;

</description>
      <category>india</category>
      <category>startup</category>
      <category>freelancing</category>
      <category>business</category>
    </item>
    <item>
      <title>Paying for your code does not mean you own it: what section 19 of India's Copyright Act silently does to your contract</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Thu, 23 Jul 2026 10:34:08 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/paying-for-your-code-does-not-mean-you-own-it-what-section-19-of-indias-copyright-act-silently-1060</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/paying-for-your-code-does-not-mean-you-own-it-what-section-19-of-indias-copyright-act-silently-1060</guid>
      <description>&lt;p&gt;I run &lt;a href="https://zoopcoder.com" rel="noopener noreferrer"&gt;ZoopCoder&lt;/a&gt;, an Indian development agency. Everything below argues against my own commercial interest — by default, the code my team writes for you belongs to &lt;em&gt;us&lt;/em&gt;, and I am about to explain exactly how to take it. Check every section number against the bare Act before you rely on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Paying for a build does not transfer copyright in India. Only a signed assignment does — and if that assignment does not state a duration and a territory, the statute quietly rewrites it to five years, India only.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is not a drafting opinion. It is sections 17, 19(5) and 19(6) of the Copyright Act, 1957, and it is the single most expensive thing Indian founders do not know about their own software.&lt;/p&gt;

&lt;h2&gt;
  
  
  The exclusive fact: the clause that expires
&lt;/h2&gt;

&lt;p&gt;Almost every Indian development contract I have seen contains a sentence like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"All intellectual property created under this agreement shall belong to the Client."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Read literally against the statute, that sentence can give you &lt;strong&gt;five years of Indian rights in your own product&lt;/strong&gt;, and then it lapses back to the developer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;s.19(1)&lt;/strong&gt; — an assignment of copyright is valid only if it is &lt;em&gt;in writing, signed by the assignor&lt;/em&gt;. A quotation email, an invoice marked "full and final", a WhatsApp "yes bhai it's all yours" — none of these are assignments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;s.19(2)&lt;/strong&gt; — the assignment must identify the work and specify the rights assigned, the &lt;strong&gt;duration&lt;/strong&gt; and the &lt;strong&gt;territorial extent&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;s.19(5)&lt;/strong&gt; — &lt;strong&gt;if the duration is not stated, the assignment is deemed to be for five years.&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;s.19(6)&lt;/strong&gt; — &lt;strong&gt;if the territorial extent is not stated, it is presumed to extend only to India.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the fix costs you nine words. Write &lt;em&gt;"for the full term of copyright"&lt;/em&gt; and &lt;em&gt;"worldwide"&lt;/em&gt; into the same sentence, and both statutory defaults disappear. Leave them out and you have bought a lease, not the thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the default is not what buyers assume
&lt;/h2&gt;

&lt;p&gt;Under &lt;strong&gt;s.17&lt;/strong&gt;, the first owner of copyright is the &lt;strong&gt;author&lt;/strong&gt; — the person who wrote it. The one common case that flips automatically is a work made by your own &lt;strong&gt;salaried employee in the course of employment under a contract of service&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;An agency or a freelancer works under a contract &lt;strong&gt;for&lt;/strong&gt; service. That is outside the rule. The copyright stays with them until they assign it in writing.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;How the code got written&lt;/th&gt;
&lt;th&gt;Who owns it by default&lt;/th&gt;
&lt;th&gt;What you must sign to change it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Your own salaried employee, in the course of their duties&lt;/td&gt;
&lt;td&gt;You (the company)&lt;/td&gt;
&lt;td&gt;Nothing — but keep an IP clause for work done outside duties&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A freelancer you paid per milestone&lt;/td&gt;
&lt;td&gt;The freelancer&lt;/td&gt;
&lt;td&gt;A written, signed assignment under s.19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;An Indian agency&lt;/td&gt;
&lt;td&gt;The agency&lt;/td&gt;
&lt;td&gt;A s.19 assignment &lt;strong&gt;plus&lt;/strong&gt; a warranty that its own staff's rights sit with it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;An offshore/foreign vendor&lt;/td&gt;
&lt;td&gt;Follows the contract and its governing law, which may not be Indian law at all&lt;/td&gt;
&lt;td&gt;Assignment + an enforceable governing-law and jurisdiction clause&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;An intern or a friend, unpaid&lt;/td&gt;
&lt;td&gt;Them&lt;/td&gt;
&lt;td&gt;A signed assignment — and do it while they still like you&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Written substantially by an AI assistant&lt;/td&gt;
&lt;td&gt;Unsettled. Indian copyright is built around a human author and no Indian court has decided it&lt;/td&gt;
&lt;td&gt;Drafting that works either way: a right-to-assign warranty + an indemnity, &lt;strong&gt;not&lt;/strong&gt; a confident answer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The label on the paper does not decide the employee question either. Courts look at control, integration and the substance of the relationship — calling someone a consultant while treating them as staff is decided on the facts, not the letterhead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Handover is not ownership
&lt;/h2&gt;

&lt;p&gt;This is the most common misunderstanding in Indian software buying, and it survives because both words feel like the end of the project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Handover&lt;/strong&gt; is a delivery event. You receive files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assignment&lt;/strong&gt; is a legal transfer. You receive rights.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can hold a complete copy of the source, on your own server, in your own GitHub org, and still not own the copyright in it — which means your developer can lawfully reuse the same code for your competitor, and you cannot lawfully licence it to anyone.&lt;/p&gt;

&lt;p&gt;Three more things a handover is not: it is not a warranty that the code is original rather than copied; it is not a transfer of the third-party licences inside it; and it is not the author's &lt;strong&gt;moral rights&lt;/strong&gt;, which under &lt;strong&gt;s.57&lt;/strong&gt; stay with the author no matter who owns the copyright. That last one is why "we own absolutely everything" is never literally true.&lt;/p&gt;

&lt;p&gt;Put assignment and handover in the contract as &lt;strong&gt;two separate obligations&lt;/strong&gt;, because they are two separate things.&lt;/p&gt;

&lt;h2&gt;
  
  
  The number that argues against us
&lt;/h2&gt;

&lt;p&gt;Here is the honest cost table, and note that every "before" figure is zero. Ownership is free to agree and expensive to retrofit — which means the leverage is entirely yours right up until you pay the first instalment, and entirely ours afterwards.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Cost to fix &lt;strong&gt;before&lt;/strong&gt; the build&lt;/th&gt;
&lt;th&gt;Cost to fix &lt;strong&gt;after&lt;/strong&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;No assignment signed, developer cooperative&lt;/td&gt;
&lt;td&gt;₹0 — one clause in the proposal&lt;/td&gt;
&lt;td&gt;A deed of assignment: goodwill or a small fee, plus a lawyer's time&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No assignment signed, relationship broken down&lt;/td&gt;
&lt;td&gt;₹0&lt;/td&gt;
&lt;td&gt;Whatever they decide your need is worth — you negotiate from zero leverage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assignment silent on duration and territory&lt;/td&gt;
&lt;td&gt;₹0 — two phrases in one sentence&lt;/td&gt;
&lt;td&gt;A fresh signed deed, at the moment you can least wait: mid-diligence or mid-raise&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain, hosting or Play Console in the developer's name&lt;/td&gt;
&lt;td&gt;₹0 — register them yourself&lt;/td&gt;
&lt;td&gt;Transfer processes measured in weeks, with a listing you cannot update meanwhile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Undisclosed copyleft component in a commercial product&lt;/td&gt;
&lt;td&gt;₹0 — ask for the component list&lt;/td&gt;
&lt;td&gt;Replacing it, or complying with its licence, after you have shipped&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;And if the developer cannot be found or will not sign, the only clean exit is a rebuild. In our experience that costs &lt;strong&gt;60–80% of the original build&lt;/strong&gt; — you are re-paying for work that already exists and that you already paid for once.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do, in order
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Decide it before the first instalment, not at handover.&lt;/strong&gt; Put the assignment in the same document as the price and make the first payment conditional on it being signed. A developer who will not sign an assignment at quotation stage has just told you something useful for free.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the four things s.19 requires&lt;/strong&gt; — writing + signature, the work identified, the rights, the duration ("full term of copyright"), the territory ("worldwide"). Describe the work widely: source code, designs, databases, documentation, and anything created during the engagement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;List the handover separately&lt;/strong&gt;: repository with full commit history, environment and config files, deployment credentials, design source files, database schema, build pipeline.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Register the accounts in your own name from day one&lt;/strong&gt; — domain, DNS, hosting, Play Console, App Store Connect, payment gateway. This is the cheapest control you will ever buy and the one most often skipped because the developer offers to "handle it".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for the third-party component list&lt;/strong&gt; before launch, not after. A copyleft library inside a commercial product carries obligations no assignment clause can override.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The one clause we would refuse
&lt;/h2&gt;

&lt;p&gt;For completeness and against interest: an assignment that also demands we hand over our &lt;strong&gt;internal framework, boilerplate and reusable libraries&lt;/strong&gt; — the pre-existing code that predates your project and is used across every client. No agency can honestly sign that away, and one that does is either lying to you or lying to its other clients.&lt;/p&gt;

&lt;p&gt;The correct shape is: &lt;strong&gt;you own everything created for you; we grant you a perpetual, irrevocable, worldwide licence to the pre-existing components embedded in your build.&lt;/strong&gt; If a vendor cannot articulate that distinction, that is your signal — not the price.&lt;/p&gt;




&lt;p&gt;I am not a lawyer and this is not legal advice — it is what an agency wishes clients would ask for. Read the Act, or have a lawyer draft the clause; either costs less than the rebuild.&lt;/p&gt;

&lt;p&gt;The long version, with the full clause checklist and the position if you have already built and signed nothing, is here: &lt;strong&gt;&lt;a href="https://zoopcoder.com/guides/who-owns-website-app-code-india.php" rel="noopener noreferrer"&gt;Who owns your website or app code in India&lt;/a&gt;&lt;/strong&gt;. Our pricing is public at &lt;a href="https://zoopcoder.com/pricing.php" rel="noopener noreferrer"&gt;zoopcoder.com/pricing.php&lt;/a&gt;, including what we charge to build with the assignment already signed — which is the same as without it, because it should be.&lt;/p&gt;

</description>
      <category>india</category>
      <category>legal</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Your first developer is statutorily your cheapest one: the in-house vs agency arithmetic in India</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Wed, 22 Jul 2026 01:41:25 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/your-first-developer-is-statutorily-your-cheapest-one-the-in-house-vs-agency-arithmetic-in-india-25mn</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/your-first-developer-is-statutorily-your-cheapest-one-the-in-house-vs-agency-arithmetic-in-india-25mn</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I work at &lt;a href="https://zoopcoder.com" rel="noopener noreferrer"&gt;ZoopCoder&lt;/a&gt;, an Indian development agency. That means I have an obvious commercial interest in you buying agency hours instead of hiring. I have tried to write this so you can check every number yourself, including the ones that argue against us — there is a section near the end that tells you when to stop paying us. Every rupee figure here comes off our own published &lt;a href="https://zoopcoder.com/pricing.php" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt; or off public statute, and I have said which is which.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every "in-house developer vs agency" post I have read compares an hourly rate to a monthly salary and calls it analysis. That comparison is wrong in two specific, checkable ways, and both of them are things Indian founders discover after they have signed the offer letter.&lt;/p&gt;

&lt;p&gt;Here is the short version, then the arithmetic.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule: it is not the rate, it is the utilisation
&lt;/h2&gt;

&lt;p&gt;Hire in-house once you can honestly forecast &lt;strong&gt;more than about 900 hours of development work a year&lt;/strong&gt; — roughly &lt;strong&gt;18 hours a week, every week, for twelve months&lt;/strong&gt;. Below that, an agency is cheaper.&lt;/p&gt;

&lt;p&gt;Why 900:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A developer on a &lt;strong&gt;₹8,00,000 CTC&lt;/strong&gt; costs about &lt;strong&gt;₹10,50,000 a year&lt;/strong&gt; once hardware, software seats, recruitment and statutory contributions are counted.&lt;/li&gt;
&lt;li&gt;That same person returns roughly &lt;strong&gt;215 productive working days&lt;/strong&gt; — not 365, and not 250. (365 − 104 weekend days − 10 public holidays − ~21 days of leave.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;₹10,50,000 at ₹1,200 an hour&lt;/strong&gt; — the middle of our published ₹800–₹2,000/hr band — buys about &lt;strong&gt;875 hours&lt;/strong&gt;, or ~110 working days of agency time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the crossover is not "who is cheaper per hour". At ~215 days versus ~110 days, the employee is obviously cheaper &lt;em&gt;per unit of work&lt;/em&gt; — &lt;strong&gt;if you have the work.&lt;/strong&gt; The whole question is whether you can keep one person busy all year. Most companies I talk to, when they actually write the list down, land somewhere between &lt;strong&gt;300 and 600 hours&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Development work per year&lt;/th&gt;
&lt;th&gt;~Hours/week&lt;/th&gt;
&lt;th&gt;Agency @ ₹1,200/hr&lt;/th&gt;
&lt;th&gt;In-house (₹8L CTC, loaded)&lt;/th&gt;
&lt;th&gt;Cheaper&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;120 hrs&lt;/td&gt;
&lt;td&gt;~2.5&lt;/td&gt;
&lt;td&gt;₹1,44,000&lt;/td&gt;
&lt;td&gt;₹10,50,000&lt;/td&gt;
&lt;td&gt;Agency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;300 hrs&lt;/td&gt;
&lt;td&gt;~6&lt;/td&gt;
&lt;td&gt;₹3,60,000&lt;/td&gt;
&lt;td&gt;₹10,50,000&lt;/td&gt;
&lt;td&gt;Agency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;600 hrs&lt;/td&gt;
&lt;td&gt;~12&lt;/td&gt;
&lt;td&gt;₹7,20,000&lt;/td&gt;
&lt;td&gt;₹10,50,000&lt;/td&gt;
&lt;td&gt;Agency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~875 hrs&lt;/td&gt;
&lt;td&gt;~18&lt;/td&gt;
&lt;td&gt;₹10,50,000&lt;/td&gt;
&lt;td&gt;₹10,50,000&lt;/td&gt;
&lt;td&gt;Line ball&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,200 hrs&lt;/td&gt;
&lt;td&gt;~25&lt;/td&gt;
&lt;td&gt;₹14,40,000&lt;/td&gt;
&lt;td&gt;₹10,50,000&lt;/td&gt;
&lt;td&gt;In-house&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,720 hrs (full year)&lt;/td&gt;
&lt;td&gt;~36&lt;/td&gt;
&lt;td&gt;₹20,64,000&lt;/td&gt;
&lt;td&gt;₹10,50,000&lt;/td&gt;
&lt;td&gt;In-house&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice what that table does to the usual argument. Below the line it is not close. Above the line it is not close either. Almost nobody is actually near the crossover — people just never compute which side they are on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fact nobody models: your statutory cost is a function of &lt;em&gt;your headcount&lt;/em&gt;, not their salary
&lt;/h2&gt;

&lt;p&gt;This is the part I have genuinely never seen in an Indian cost article, and I think it is because most of them are structurally copied from US pieces where the equivalent thresholds work differently.&lt;/p&gt;

&lt;p&gt;In India, the three big employer-side obligations are triggered by the size of your &lt;strong&gt;establishment&lt;/strong&gt;, not by what you pay the person:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Obligation&lt;/th&gt;
&lt;th&gt;Employer-side cost (indicative)&lt;/th&gt;
&lt;th&gt;Headcount trigger&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;EPF&lt;/td&gt;
&lt;td&gt;~12% of wages&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;20 employees&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ESI&lt;/td&gt;
&lt;td&gt;~3.25% of wages&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10 employees&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gratuity&lt;/td&gt;
&lt;td&gt;accrues ~4.81% of wages&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10 employees&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Read that column again. It means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Your first developer is usually your statutorily cheapest one.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A five-person company hiring its first developer typically owes &lt;strong&gt;none of the three&lt;/strong&gt;. The &lt;em&gt;identical&lt;/em&gt; hire, same salary, same laptop, made by a twelve-person company carries ESI and gratuity. At twenty employees it carries EPF too. Same human, same offer letter, materially different annual cost — and the variable is the size of the company doing the hiring.&lt;/p&gt;

&lt;p&gt;Practical consequence: if you are a 9-person company thinking about your tenth and eleventh hires, the marginal cost of hire #10 is not one salary. It is one salary &lt;em&gt;plus a step-change in the cost of everyone already on the payroll&lt;/em&gt;. That is a real cliff and it belongs in the model.&lt;/p&gt;

&lt;p&gt;Caveats, because this is statute and statute moves: these are the thresholds as they stand at the time of writing, voluntary coverage below the thresholds is possible and some companies choose it, and the Labour Codes redefine "wages" in a way that raises PF and gratuity where the new definition applies. Confirm your own position with your CA before you budget off this. I am an engineer at an agency, not your accountant.&lt;/p&gt;

&lt;h2&gt;
  
  
  The second asymmetry: GST cuts the other way
&lt;/h2&gt;

&lt;p&gt;The agency invoice carries &lt;strong&gt;18% GST&lt;/strong&gt;. Whether that is a real cost depends entirely on one thing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You are GST-registered:&lt;/strong&gt; you reclaim the whole 18% as input tax credit. The agency's headline price &lt;em&gt;is&lt;/em&gt; the real price. This comparison is a straight cash comparison.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You are not registered&lt;/strong&gt; (proprietor, small trust, startup below the threshold): that 18% is unrecoverable. A salary carries no GST at all, because employment is outside the scope of GST.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On ₹10,50,000 of agency work that is about &lt;strong&gt;₹1,89,000&lt;/strong&gt; of unrecoverable tax. It moves the crossover from ~875 hours down to &lt;strong&gt;~742 hours&lt;/strong&gt; a year — from about 18 hours a week to about &lt;strong&gt;15&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So the honest rule has a branch in it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GST-registered → hire in-house above ~18 hrs/week of real work.&lt;/li&gt;
&lt;li&gt;Not GST-registered → hire in-house above ~15 hrs/week.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the money comparison completely misses
&lt;/h2&gt;

&lt;p&gt;Cost is the easy axis. These are the ones that actually decide it:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;In-house developer&lt;/th&gt;
&lt;th&gt;Small agency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Time to first line of code&lt;/td&gt;
&lt;td&gt;30–90 days (notice period + ramp)&lt;/td&gt;
&lt;td&gt;days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost when work goes quiet&lt;/td&gt;
&lt;td&gt;full salary&lt;/td&gt;
&lt;td&gt;₹0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failure mode&lt;/td&gt;
&lt;td&gt;resignation — one person holds every credential and every undocumented decision&lt;/td&gt;
&lt;td&gt;being busy — your urgent Tuesday bug competes with someone else's urgent Tuesday bug&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recovery from that failure&lt;/td&gt;
&lt;td&gt;2–3 months to rehire and re-ramp&lt;/td&gt;
&lt;td&gt;escalate, or leave&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breadth&lt;/td&gt;
&lt;td&gt;one person's stack&lt;/td&gt;
&lt;td&gt;a bench, but rented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Availability&lt;/td&gt;
&lt;td&gt;yours all day&lt;/td&gt;
&lt;td&gt;shared&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I want to be straight about the second column, because it is the thing agencies do not put on their websites: &lt;strong&gt;an agency has other clients.&lt;/strong&gt; If your product needs someone reachable within the hour on a normal Tuesday, an employee is genuinely better and no amount of cost arithmetic changes that. Pick the failure you can survive — a two-week wait for attention, or a two-month wait for a replacement.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you should fire us and hire someone
&lt;/h2&gt;

&lt;p&gt;Under LAW-of-not-wasting-your-money, here is the honest list. If any of these is true, stop retaining an agency:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You ship changes more than weekly.&lt;/strong&gt; The per-request overhead of a contract relationship eats the savings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Software is the product&lt;/strong&gt;, not a support function for the product. Then the codebase is your company and it should not live in a vendor's head.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You need a developer on customer calls&lt;/strong&gt; — reading the actual bug report, in the actual meeting, unfiltered.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your retainer is already above roughly ₹85,000/month.&lt;/strong&gt; That is a salary. Pay it as one.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last one is the number that argues against us most directly, so here it is stated plainly: a fully-utilised in-house developer works out to roughly &lt;strong&gt;₹491–₹641 per productive hour&lt;/strong&gt; (₹10,50,000 over 215 days), which is &lt;strong&gt;below the bottom of our own quoted ₹800–₹2,000/hr band.&lt;/strong&gt; If you can keep them busy, they win on price. We are not cheaper than a busy employee and I am not going to pretend otherwise. We are cheaper than an &lt;em&gt;idle&lt;/em&gt; one, and most first hires are partly idle.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern that usually wins
&lt;/h2&gt;

&lt;p&gt;For a company with a live product, the cheapest correct answer is usually neither/both: agency builds v1 on a fixed-price contract, then one in-house developer takes over day-to-day, and the agency is retained only for bursts the employee cannot absorb — a payments migration, an app-store rewrite, a security review.&lt;/p&gt;

&lt;p&gt;That only works if you own the code from day one. Whichever side you pick, insist on the same terms: &lt;strong&gt;the repository lives in an account you own&lt;/strong&gt;, source code is assigned to you in writing, credentials are in your password manager and not someone's laptop, and there is a written handover obligation.&lt;/p&gt;

&lt;p&gt;Full working — the 9-line loaded-cost breakdown, the statutory table with the "does it hit a ₹8L developer" column, and the 12-row comparison — is on the guide this post is drawn from: &lt;strong&gt;&lt;a href="https://zoopcoder.com/guides/in-house-developer-vs-agency-india.php" rel="noopener noreferrer"&gt;In-House Developer vs Agency in India (2026)&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you disagree with the 900-hour threshold I would genuinely like to hear the counter-case in the comments — the input I am least sure of is the ₹1,200/hr midpoint, since that varies a lot by city and by stack.&lt;/p&gt;

</description>
      <category>india</category>
      <category>career</category>
      <category>startup</category>
      <category>management</category>
    </item>
    <item>
      <title>React Native vs Flutter in India: the build cost is identical, the year-two hiring cost is not</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Mon, 20 Jul 2026 13:04:35 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/react-native-vs-flutter-in-india-the-build-cost-is-identical-the-year-two-hiring-cost-is-not-1gja</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/react-native-vs-flutter-in-india-the-build-cost-is-identical-the-year-two-hiring-cost-is-not-1gja</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I work at ZoopCoder, a small development agency in India. We build in both React Native and Flutter, and our internal default is Flutter — so discount everything below accordingly. I've linked our own pricing at the end so you can check whether I'm quoting real numbers or marketing ones.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've watched this argument happen in maybe forty client kickoffs now, and it almost always gets decided on the wrong axis. Someone brings a comparison table full of rendering-engine details, someone else says "Flutter will be cheaper," and the actual cost driver never comes up.&lt;/p&gt;

&lt;p&gt;So here is the uncomfortable version, with our real published numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The build cost is identical, and I'll show you our own price list to prove it
&lt;/h2&gt;

&lt;p&gt;This is the part agencies avoid publishing because it removes a sales lever. Here is what we charge for the same scope in each framework:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What you're building&lt;/th&gt;
&lt;th&gt;React Native&lt;/th&gt;
&lt;th&gt;Flutter&lt;/th&gt;
&lt;th&gt;What actually moves the price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Simple app, 4–8 screens, no login&lt;/td&gt;
&lt;td&gt;₹50,000 – ₹1,00,000&lt;/td&gt;
&lt;td&gt;₹50,000 – ₹1,00,000&lt;/td&gt;
&lt;td&gt;Screen count, how custom the design is&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium app, logins + payments&lt;/td&gt;
&lt;td&gt;₹1,00,000 – ₹2,50,000&lt;/td&gt;
&lt;td&gt;₹1,00,000 – ₹2,50,000&lt;/td&gt;
&lt;td&gt;The backend and the payment gateway&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marketplace / on-demand&lt;/td&gt;
&lt;td&gt;₹2,50,000+&lt;/td&gt;
&lt;td&gt;₹2,50,000+&lt;/td&gt;
&lt;td&gt;User roles, live tracking, payouts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend hosting, monthly&lt;/td&gt;
&lt;td&gt;₹3,000 – ₹25,000&lt;/td&gt;
&lt;td&gt;₹3,000 – ₹25,000&lt;/td&gt;
&lt;td&gt;Users and data — framework irrelevant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintenance, monthly&lt;/td&gt;
&lt;td&gt;₹5,000 – ₹30,000&lt;/td&gt;
&lt;td&gt;₹5,000 – ₹30,000&lt;/td&gt;
&lt;td&gt;OS releases, store policy changes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The columns are the same on purpose. What consumes an app budget is screen design, API integration, the payment gateway, testing on real low-end Indian Android devices, and getting through store review. Every one of those costs the same in Dart as it does in TypeScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If a vendor quotes you meaningfully cheaper "because Flutter," they are discounting to win the job and will find the money back somewhere.&lt;/strong&gt; That's worth saying plainly even though it's a sentence that costs us work.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what does the framework actually decide? Your year-two hiring cost
&lt;/h2&gt;

&lt;p&gt;The rule we use internally:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pick Flutter if the app is under about ₹2,50,000 and its job is screens, forms, lists and payments. Pick React Native if you already run a React or Next.js web product, or if you plan to hire an in-house mobile developer in India within twelve months.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That second clause is the one that matters and the one nobody prices. React Native recruits out of the enormous Indian JavaScript pool — the same pool your web hiring already draws from. Dart is a separate specialism with much thinner local supply, so you wait longer and pay more for equivalent seniority.&lt;/p&gt;

&lt;p&gt;Note what is &lt;em&gt;not&lt;/em&gt; on that list: code sharing with your React website. You do not share code. You share the language, the tooling, the state patterns, the reviewers and the hiring pipeline. That distinction has cost founders real money when they budgeted for the first and got the second.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing that makes "which one builds faster" irrelevant
&lt;/h2&gt;

&lt;p&gt;Framework comparisons argue about build speed in days. Your launch date is decided by something almost no RN-vs-Flutter article mentions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you publish under a personal Google Play developer account opened after November 2023, Google requires a closed test with at least 12 testers opted in continuously for 14 days before you can even apply for production access.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not 12 downloads. Twelve people opted in and &lt;em&gt;staying&lt;/em&gt; opted in, for a fortnight, before the application is even accepted. Apple review then adds its own days on the other platform.&lt;/p&gt;

&lt;p&gt;That is a two-to-three week gate that is completely indifferent to your framework, your agency, and your code quality. A framework choice that saves three developer-days cannot save you a fortnight of Google's clock.&lt;/p&gt;

&lt;p&gt;Two practical consequences:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Put the store gate in the plan &lt;em&gt;before&lt;/em&gt; anyone argues about compile times.&lt;/li&gt;
&lt;li&gt;Start recruiting your 12 testers while the app is still being built. Staff, friends, early customers, a WhatsApp group. For a small business with no existing user base this is a genuinely hard requirement, and in our experience it is the single most common reason a first app launches later than promised.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An organisation-type developer account is exempt from the 12-tester rule, which is often reason enough to register one properly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cross-platform means one codebase, not one machine
&lt;/h2&gt;

&lt;p&gt;iOS release builds must be compiled and signed on macOS — in React Native and in Flutter alike. Neither framework removes Apple's requirement. Add the Apple Developer Program (99 USD/yr) and Google Play's one-time 25 USD, and if nobody on the project owns a Mac you are paying for hardware or a cloud build service on top of the quote.&lt;/p&gt;

&lt;p&gt;Ask any vendor, in writing, whether iOS build and signing infrastructure sits inside their price. It is the most common surprise line in an Indian cross-platform budget, and choosing the other framework does not avoid it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where we tell clients to overrule our own Flutter default
&lt;/h2&gt;

&lt;p&gt;We prefer Flutter. An agency that recommends the same framework to every client is describing its own comfort, not your project. The cases where we say React Native against our own preference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You already run a React or Next.js web product.&lt;/strong&gt; Strongest tie-breaker on the list; wins on its own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You'll hire an in-house mobile developer in India within a year.&lt;/strong&gt; Hire-ability beats everything on the feature table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A vendor SDK you depend on ships React Native support first.&lt;/strong&gt; Some payment, KYC, chat and analytics providers still maintain an official RN package and leave Flutter to the community. One missing official SDK becomes weeks of native bridging. Listing every SDK your app needs and checking both takes about an hour and has reversed the decision on real projects of ours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install size is a real constraint.&lt;/strong&gt; Flutter adds roughly 4–8 MB. For most apps that's noise. Selling into price-sensitive markets on entry-level Android phones with tight storage, it can be conversion.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the mirror image — we hold the Flutter line for heavily animated, design-led apps, anything that must look pixel-identical across devices, and a first app at a company with no existing JavaScript team.&lt;/p&gt;

&lt;h2&gt;
  
  
  What getting it wrong costs
&lt;/h2&gt;

&lt;p&gt;Switching frameworks later is not a migration, it's a rewrite. Budget &lt;strong&gt;60–80% of the original build&lt;/strong&gt;: every screen built again from scratch, while the backend, API, design and product decisions carry over. On a ₹2,00,000 app that's ₹1,20,000–₹1,60,000 to arrive exactly where you already were, feature for feature, with nothing new to show a customer.&lt;/p&gt;

&lt;p&gt;Which is why the protective move matters more than the choice: keep business logic on the server, not in the app. Anything that lives on your backend survives a framework change untouched.&lt;/p&gt;




&lt;p&gt;The full version of this — the buyer-facing comparison table, both price columns, and the store-gate detail — is on our site: &lt;a href="https://zoopcoder.com/guides/react-native-vs-flutter-india.php" rel="noopener noreferrer"&gt;React Native vs Flutter in India (2026)&lt;/a&gt;. Our actual price list is at &lt;a href="https://zoopcoder.com/pricing.php" rel="noopener noreferrer"&gt;zoopcoder.com/pricing.php&lt;/a&gt; if you want to check the numbers above against what we publish.&lt;/p&gt;

&lt;p&gt;Third-party figures (Apple/Google fees, Play Console policy) are accurate as of July 2026 and do move — verify against the console before you rely on them.&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>flutter</category>
      <category>mobile</category>
      <category>india</category>
    </item>
    <item>
      <title>Nobody can quote you a per-page website rate in India, and the reason is worth Rs 75,000</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Sun, 19 Jul 2026 10:37:23 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/nobody-can-quote-you-a-per-page-website-rate-in-india-and-the-reason-is-worth-rs-75000-28i8</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/nobody-can-quote-you-a-per-page-website-rate-in-india-and-the-reason-is-worth-rs-75000-28i8</guid>
      <description>&lt;p&gt;Disclosure up front: I work at ZoopCoder, an Indian web development agency. We sell website builds, so read this knowing what I sell. Every rupee figure below is either our own published price or clearly labelled as a market rate you should verify yourself.&lt;/p&gt;

&lt;p&gt;Indian clients ask for a per-page rate constantly. "We need 12 pages, what's your rate per page?" It is a completely reasonable question and it has no useful answer, and I want to show the arithmetic rather than just assert that.&lt;/p&gt;

&lt;h2&gt;
  
  
  The same page count, three very different numbers
&lt;/h2&gt;

&lt;p&gt;Here is an 8-page site, built three ways, at our published prices:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Build&lt;/th&gt;
&lt;th&gt;Price (INR)&lt;/th&gt;
&lt;th&gt;Per page&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;8-page brochure site (static content, contact form)&lt;/td&gt;
&lt;td&gt;25,000 – 50,000&lt;/td&gt;
&lt;td&gt;3,100 – 6,250&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8-page WordPress/CMS (client edits content)&lt;/td&gt;
&lt;td&gt;35,000 – 75,000&lt;/td&gt;
&lt;td&gt;4,400 – 9,400&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8-screen custom web app (user logins)&lt;/td&gt;
&lt;td&gt;1,00,000+&lt;/td&gt;
&lt;td&gt;12,500+&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Identical page count. Roughly a 4x spread on the per-page number. A rate quoted before anyone knows what the pages &lt;em&gt;do&lt;/em&gt; is going to be wrong in one direction or the other — and in my experience it is usually wrong in the direction that ends in an awkward conversation three weeks in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cliff is not pages. It is state.
&lt;/h2&gt;

&lt;p&gt;The reason the per-page frame breaks is that it measures the wrong unit.&lt;/p&gt;

&lt;p&gt;A brochure page is a pure function of nothing. Same bytes for every visitor. You can cache it at the edge forever and the server never thinks. Adding the 9th, 10th and 20th brochure page is close to linear and genuinely cheap — a few thousand rupees each, mostly content and layout work.&lt;/p&gt;

&lt;p&gt;The moment you add a login, every page becomes a function of &lt;em&gt;who is asking&lt;/em&gt;. And that one change drags in a pile of work that is invisible on every wireframe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;accounts, sessions, password reset, email verification&lt;/li&gt;
&lt;li&gt;authorization — not "is this user logged in" but "is this user allowed to see &lt;em&gt;this specific record&lt;/em&gt;"&lt;/li&gt;
&lt;li&gt;a database of user-owned data, with migrations&lt;/li&gt;
&lt;li&gt;the negative case: never leaking user A's data to user B&lt;/li&gt;
&lt;li&gt;and the tests for all of the above, because this is the layer where a bug is a breach, not a typo&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of that shows up as a page. None of it is design. All of it has to be built, and more importantly, tested. That is where the money between 75,000 and 1,00,000+ actually goes.&lt;/p&gt;

&lt;p&gt;So the price cliff in the Indian market sits right about there — and it is a cliff of &lt;strong&gt;statefulness&lt;/strong&gt;, not of page count. This is why "we'll just add a small login area" is the single most expensive sentence a client can say in a kickoff call. It is not a small addition. It is a different category of software.&lt;/p&gt;

&lt;h2&gt;
  
  
  The practical version, including the part that costs us money
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If your site has no login, do not buy a web app.&lt;/strong&gt; If nobody can name a single thing on the site that requires a user to sign in, you are buying a brochure site, and a brochure site in India costs 25,000 – 75,000 depending on whether you want to edit the content yourself. We see people quoted 1,50,000+ for exactly this. If that is your project, you do not need us at that price — and honestly you may not need an agency at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If your site does have logins, be suspicious of a 40,000 quote.&lt;/strong&gt; Either the scope has not been understood and the number will move, or someone is going to skip the authorization work, which is the part you cannot see and cannot easily check on delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  The costs the per-page number hides entirely
&lt;/h2&gt;

&lt;p&gt;Whatever you build, the build price is not the annual price:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Domain&lt;/td&gt;
&lt;td&gt;800 – 1,500 / year&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosting (most business sites)&lt;/td&gt;
&lt;td&gt;3,000 – 15,000 / year&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintenance plan (optional)&lt;/td&gt;
&lt;td&gt;3,000 – 15,000 / month&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is genuinely optional and I want to be clear about it, because we sell those plans. A small brochure site that nobody logs into often does not need a monthly plan at all. A stateful app with user data and a payment flow does — not for the "content updates" bullet, but because dependency and security patches on a system holding user records are not something you skip.&lt;/p&gt;

&lt;p&gt;Full by-type cost breakdown, with the tables: &lt;a href="https://zoopcoder.com/website-development-cost-in-india.php" rel="noopener noreferrer"&gt;https://zoopcoder.com/website-development-cost-in-india.php&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you price web work in India differently — particularly if you have found a per-page model that holds up on stateful builds — I would genuinely like to hear it, because I have not.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>india</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Shopify Payments doesn't operate in India - here's what that actually costs you</title>
      <dc:creator>Preciousky</dc:creator>
      <pubDate>Sat, 18 Jul 2026 10:36:26 +0000</pubDate>
      <link>https://dev.to/preciousky_45d956626d31c3/shopify-payments-doesnt-operate-in-india-heres-what-that-actually-costs-you-30lp</link>
      <guid>https://dev.to/preciousky_45d956626d31c3/shopify-payments-doesnt-operate-in-india-heres-what-that-actually-costs-you-30lp</guid>
      <description>&lt;p&gt;Disclosure: I work at ZoopCoder, an Indian development agency that builds e-commerce stores. So I sell the thing this post is about. Every number below is either our own published price or a third-party rate you can verify yourself, and I have flagged which is which. There is a section near the end on when you should not build a store at all.&lt;/p&gt;

&lt;p&gt;If you are picking a platform for an Indian store and you have been reading cost comparisons written for a US audience, one line item is missing from all of them, and it is large enough to change the answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shopify Payments does not operate in India
&lt;/h2&gt;

&lt;p&gt;Shopify has its own in-house payment processor, Shopify Payments. In markets where it operates, using it means Shopify charges you no transaction fee — you pay the card rate and nothing else.&lt;/p&gt;

&lt;p&gt;It is not available in India. So an Indian merchant has to connect a third-party gateway — Razorpay, PayU, Cashfree. And when you process through a third-party gateway, Shopify charges an &lt;strong&gt;additional transaction fee on every order&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shopify plan&lt;/th&gt;
&lt;th&gt;Third-party gateway fee&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grow&lt;/td&gt;
&lt;td&gt;1%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Advanced&lt;/td&gt;
&lt;td&gt;0.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That is on top of what your gateway already charges. A standard Razorpay account is about 2% on domestic cards. So:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;An Indian store on Shopify Basic can pay roughly 4% on a card order, where a merchant in a Shopify Payments country pays about 2%.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Scale that. On ₹50,00,000 of annual sales, the extra 2% is &lt;strong&gt;₹1,00,000 a year&lt;/strong&gt; — which is more than the cost of building the store in the first place (a standard store is ₹40,000–₹90,000; that is ZoopCoder's published price).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Shopify's India plan prices and Razorpay's rates are third-party figures, checked July 2026. They move. Verify before you plan around them.)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The crossover, with the working shown
&lt;/h2&gt;

&lt;p&gt;The usual framing is "Shopify costs money, WooCommerce is free." That is not the comparison. The platforms bill you in &lt;strong&gt;different currencies&lt;/strong&gt;: Shopify takes a fixed subscription plus a percentage of sales; WooCommerce takes ₹0 for software but requires hosting and continuous security maintenance, which is priced in labour.&lt;/p&gt;

&lt;p&gt;So Shopify's cost grows with revenue and WooCommerce's stays roughly flat. The lines cross.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Annual online sales&lt;/th&gt;
&lt;th&gt;Shopify&lt;/th&gt;
&lt;th&gt;WooCommerce&lt;/th&gt;
&lt;th&gt;Cheaper&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;₹5,00,000&lt;/td&gt;
&lt;td&gt;~₹31,200 (Basic ₹21,200 + 2% fee ₹10,000)&lt;/td&gt;
&lt;td&gt;~₹42,000 (hosting ₹6,000 + ₹3,000/mo plan)&lt;/td&gt;
&lt;td&gt;Shopify&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;₹15,00,000&lt;/td&gt;
&lt;td&gt;~₹51,200 (Basic ₹21,200 + 2% fee ₹30,000)&lt;/td&gt;
&lt;td&gt;~₹48,000 (hosting ₹12,000 + ₹3,000/mo plan)&lt;/td&gt;
&lt;td&gt;WooCommerce, just&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;₹50,00,000&lt;/td&gt;
&lt;td&gt;~₹1,21,200 (Basic ₹21,200 + 2% fee ₹1,00,000)&lt;/td&gt;
&lt;td&gt;~₹1,21,000 (hosting ₹25,000 + ₹8,000/mo plan)&lt;/td&gt;
&lt;td&gt;A dead heat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;₹1,00,00,000&lt;/td&gt;
&lt;td&gt;~₹1,79,300 (Grow ₹79,300 + 1% fee ₹1,00,000)&lt;/td&gt;
&lt;td&gt;~₹1,36,000 (hosting ₹40,000 + ₹8,000/mo plan)&lt;/td&gt;
&lt;td&gt;WooCommerce&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can derive the crossover directly. Shopify Basic is ₹21,200 a year including GST, plus 2% of sales. A ₹4,000/month WooCommerce arrangement is ₹48,000 flat. Set them equal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;21,200 + 0.02S = 48,000
0.02S          = 26,800
S              = 13,40,000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Below about ₹13.4 lakh a year, Shopify is cheaper. Above it, WooCommerce is&lt;/strong&gt; — assuming you pay somebody to maintain the WooCommerce store rather than doing it yourself. If you genuinely do your own updates and backups, WooCommerce wins everywhere and this whole table collapses. Be honest with yourself about which of those you are, because an unmaintained WooCommerce store is a security incident on a timer.&lt;/p&gt;

&lt;h3&gt;
  
  
  A second crossover nobody publishes
&lt;/h3&gt;

&lt;p&gt;The instinct when the 2% fee starts to sting is to upgrade to Grow to get it down to 1%. Check the arithmetic first.&lt;/p&gt;

&lt;p&gt;Grow costs roughly ₹58,000/year more than Basic and saves you 1% of sales. Upgrading pays for itself only when 1% of sales exceeds ₹58,000 — that is &lt;strong&gt;₹58,00,000 in annual sales&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Below that, staying on Basic and paying the higher percentage is cheaper. The plan comparison page will not frame it that way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The UPI thing everybody gets wrong
&lt;/h2&gt;

&lt;p&gt;"UPI has zero MDR" is true and is constantly misread.&lt;/p&gt;

&lt;p&gt;Zero MDR is a regulatory cap on the &lt;strong&gt;merchant discount rate&lt;/strong&gt; — the interchange the banks would take. That genuinely is nil.&lt;/p&gt;

&lt;p&gt;Your payment gateway is a separate business. It charges a platform/technology fee for the dashboard, reconciliation, refunds and settlement — commonly around &lt;strong&gt;2%, plus 18% GST on the fee itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero MDR means the bank takes nothing. It does not mean your gateway takes nothing.&lt;/strong&gt; If you have a low-margin catalogue and you modelled UPI orders as free, your unit economics are wrong. Read your gateway's pricing page for the specific line item.&lt;/p&gt;

&lt;p&gt;While we are here, the full picture:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Payment method&lt;/th&gt;
&lt;th&gt;Typical merchant cost&lt;/th&gt;
&lt;th&gt;What people get wrong&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;UPI&lt;/td&gt;
&lt;td&gt;MDR zero by regulation; gateway platform fee commonly ~2% + 18% GST on the fee&lt;/td&gt;
&lt;td&gt;Zero MDR means the &lt;em&gt;bank&lt;/em&gt; takes nothing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domestic cards&lt;/td&gt;
&lt;td&gt;~2% on a standard Razorpay-type account&lt;/td&gt;
&lt;td&gt;Rates are negotiable at volume — ask once you are past a few lakh a month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Netbanking&lt;/td&gt;
&lt;td&gt;Similar to cards, bank-dependent&lt;/td&gt;
&lt;td&gt;Success rates vary by bank far more than the fee does; a failed payment costs the whole order&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;International cards&lt;/td&gt;
&lt;td&gt;Roughly double domestic&lt;/td&gt;
&lt;td&gt;Do not model foreign sales at the domestic rate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cash on delivery&lt;/td&gt;
&lt;td&gt;No gateway fee, but COD handling + full two-way shipping on every refusal&lt;/td&gt;
&lt;td&gt;The most expensive method in this table, and it looks like the cheapest&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The costs that are not the platform
&lt;/h2&gt;

&lt;p&gt;Platform choice is the argument everybody has. It is rarely the biggest number. What actually shows up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Product photography&lt;/strong&gt; — ₹150–₹800 per product. Avoidable only if you shoot it yourself, and it will look like you shot it yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Catalogue data entry&lt;/strong&gt; — descriptions, variants, weights, HSN codes. Several days per few hundred SKUs. Not avoidable. Someone does it: you, or someone you pay.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Paid apps and plugins&lt;/strong&gt; — ₹1,000–₹10,000/month if you install them. Entirely avoidable. Install nothing until a real problem demands it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Returns and RTO on COD&lt;/strong&gt; — two-way shipping plus packaging on every refused order. Reducible with partial-prepaid, not avoidable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Domain + SSL&lt;/strong&gt; — ₹800–₹1,500/year. Never pay for a basic SSL certificate; Let's Encrypt is free and fine.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When you should not build a store
&lt;/h2&gt;

&lt;p&gt;I said I'd get here. We build e-commerce stores for a living, so weigh this accordingly — but these are real:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You have fewer than about ten SKUs and no repeat customers.&lt;/strong&gt; A WhatsApp catalogue and a payment link will outperform a store, at roughly zero cost.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You have not sold the product anywhere yet.&lt;/strong&gt; Sell thirty units through Instagram DMs first. If you cannot sell thirty by hand, a checkout page is not the constraint.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your margin cannot absorb ~2% plus shipping plus returns.&lt;/strong&gt; Some catalogues genuinely cannot. Find that out on a spreadsheet, not after the build.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your volume is already almost entirely on Amazon or Flipkart and you are happy.&lt;/strong&gt; A own-brand store is a marketing project, not a technical one; the site is the easy part.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nobody will own the catalogue.&lt;/strong&gt; A store with stale stock and wrong prices is worse than no store.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Shopify Payments does not operate in India, so Indian merchants pay Shopify an extra 2%/1%/0.6% (Basic/Grow/Advanced) on top of the gateway's ~2%.&lt;/li&gt;
&lt;li&gt;Around ₹13.4 lakh in annual sales, WooCommerce becomes cheaper than Shopify Basic — if you are paying someone to maintain it.&lt;/li&gt;
&lt;li&gt;Upgrading Basic → Grow does not pay for itself until about ₹58 lakh in annual sales.&lt;/li&gt;
&lt;li&gt;Zero MDR on UPI caps the bank's cut, not your gateway's.&lt;/li&gt;
&lt;li&gt;Build cost in India: ₹40,000–₹2,50,000 for the overwhelming majority of stores. Running cost: ₹31,000–₹1,36,000/year excluding gateway percentages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full breakdown with the build-price bands by store type, the timelines, and the FAQ: &lt;a href="https://zoopcoder.com/guides/ecommerce-website-cost-india.php" rel="noopener noreferrer"&gt;How much does an e-commerce website cost in India? (2026)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our published price list, if you want to check the numbers I quoted for our own work: &lt;a href="https://zoopcoder.com/pricing.php" rel="noopener noreferrer"&gt;zoopcoder.com/pricing.php&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>india</category>
      <category>shopify</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
