Sachverhalt:
A.
Die Eheleute A.C._ und B.C._ beantragten am 9. März 2012 eine Baubewilligung für ein Einfamilienhaus mit angebauter Doppelgarage und Swimmingpool auf dem Grundstück Kat.-Nr. xxx an der E._-Strasse (Gemeinde D._). Die Baukommission der Gemeinde D._ erteilte ihnen am 16. April 2012 die Baubewilligung mit folgenden Nebenbestimmungen: Vor Baubeginn sei mit dem Bausekretariat ein Zustandsprotokoll der E._-Strasse und der F._-Strasse aufzunehmen und der Baukommission vorzulegen. Allfällige Beschädigungen an öffentlichen Anlagen seien durch die Bauherrschaft auf eigene Kosten zu beheben.
B.
Am 11. Februar 2014, nach Abschluss der Bauarbeiten, stellte der Gemeinderat D._ den Eheleuten C._ Fr. 1'863.05 für Aufwendungen betreffend die Strasseninstandstellung (Ersatz Randabschlüsse E._-Strasse) in Rechnung; das (von der Bauherrschaft nicht unterschriebene) Zustandsprotokoll der E._-Strasse vom 5. Juli 2012 legte er bei. Mit Einspracheentscheid vom 9. Juli 2014 hielt der Gemeinderat an der Rechnung fest. Die dagegen erhobenen Rechtsmittel der Eheleute C._ blieben erfolglos (Entscheid des Baurekursgerichts des Kantons Zürich vom 4. Februar 2015; Urteil des Verwaltungsgerichts des Kantons Zürich vom 5. Juli 2016).
C.
A.C._ und B.C._ erheben am 13. September 2016 Beschwerde beim Bundesgericht mit den Anträgen, das angefochtene Urteil bzw. die Rechnung der Gemeinde D._ vom 11. Februar 2014 betreffend Strasseninstandstellung aufzuheben; eventuell sei die Angelegenheit zur neuen Beurteilung an die Gemeinde D._ zurückzuweisen. Das Verwaltungsgericht schliesst auf Abweisung der Beschwerde, soweit darauf einzutreten sei.

Erwägungen:
1.
1.1. Das angefochtene Urteil betrifft die Geldforderung eines Gemeinwesens gegenüber dem Empfänger einer Baubewilligung. Die Vorinstanz hat den Entscheid dem Bereich der Gebühren zugeordnet. Ob es sich um eine Gebühr im Rechtssinn handelt, kann bei der Eintretensfrage offenbleiben: Durch die Akzessorietät zum Baubewilligungsentscheid ist die Natur der Streitsache als öffentlich-rechtlich zu qualifizieren, weshalb die Beschwerde in öffentlich-rechtlichen Angelegenheiten zulässig ist (<ref-law>; offensichtlich gegeben sind die Voraussetzungen nach Art. 86 Abs. 1 lit. d und Art. 90 BGG).
1.2. Die Beschwerdeführer sind als Adressaten des angefochtenen Entscheids besonders berührt und haben ein schutzwürdiges Interesse an dessen Änderung oder Aufhebung; sie sind zur Beschwerdeführung legitimiert (<ref-law>).
1.3. Auf die Beschwerde ist einzutreten.
2.
<ref-law> schreibt vor, dass kantonale Entscheide, welche der Beschwerde an das Bundesgericht unterliegen, die massgebenden Gründe tatsächlicher und rechtlicher Art, insbesondere die Angabe der angewendeten Gesetzesbestimmungen, enthalten müssen. Aus dem Entscheid muss klar hervorgehen, welchen Sachverhalt die Vorinstanz als rechtserheblich erachtet und ihrem Entscheid zugrunde gelegt hat und - davon ausgehend - welche rechtlichen Überlegungen sie angestellt hat. Genügt ein Entscheid den Anforderungen nach <ref-law> nicht, so kann das Bundesgericht ihn in Anwendung von <ref-law> an die kantonale Behörde zur Verbesserung zurückweisen oder aufheben. Die erste Variante drängt sich etwa bei Kanzleiversehen auf, welche der Berichtigung unterliegen; es handelt sich dabei nicht um einen Endentscheid des Bundesgerichts, sondern um eine Instruktionsmassnahme (HANSJÖRG SEILER, in: Stämpflis Handkommentar zum Bundesgerichtsgesetz [BGG], 2. Aufl. 2015, N. 46 zu <ref-law>). Die zweite Variante betrifft inhaltliche Mängel des angefochtenen Entscheids, welche mittels Verbesserung nicht korrigiert werden können. Aufgrund der Kann-Vorschrift des <ref-law> ist das Bundesgericht dennoch nicht gezwungen, einen derartigen Entscheid aufzuheben: Ist dieser trotz des Eröffnungsfehlers überprüfbar, ohne dass dadurch den Parteien ein Nachteil erwächst, steht einer materiellen Prüfung nichts im Weg (SEILER, a.a.O., N. 44 zu <ref-law>). Im gegenteiligen Fall steht es dem Bundesgericht nicht zu, sich an die Stelle der Vorinstanz zu setzen, die ihrer Aufgabe nicht nachgekommen ist (<ref-ruling> E. 1.2.1 S. 246; Urteil 8C_742/2016 vom 5. Januar 2017 E. 1).
Muss der angefochtene Entscheid durch das Bundesgericht aufgehoben werden, ist die Beschwerde gutzuheissen und an die Vorinstanz zurückzuweisen; diese hat einen Entscheid zu fällen, welcher den Anforderungen von <ref-law> genügt (Urteile 2C_517/2016 vom 28. Juni 2016 E. 4.4; 1C_435/2015 vom 17. September 2015 E. 3; BERNARD CORBOZ, in: Commentaire de la LTF, 2. Aufl. 2014, N. 60 zu <ref-law>). Die Aufhebung und Rückweisung zu neuem Entscheid nach <ref-law> ist (wie die Rückweisung nach <ref-law>) ein kassatorischer Sachentscheid mit der Folge, dass die Vorinstanz einen neuen Entscheid mit verbesserter Begründung fällen muss (SEILER, a.a.O., N. 48 zu <ref-law>). Die verfahrensrechtlichen Folgen gemäss <ref-law> sind von Amtes wegen zu prüfen (Urteile 8C_742/2016 vom 5. Januar 2017 E. 1; 5A_6/2016 vom 15. September 2016 E. 5.1).
3.
3.1. Die Vorinstanz erwog, aufgrund der in der Baubewilligung verfügten Auflagen hätten die Beschwerdeführer gewusst, dass sie vor Baubeginn eine Zustandsaufnahme der E._-Strasse und der F._-Strasse hätten vornehmen müssen, bevor sie überhaupt mit den Bauarbeiten hätten beginnen dürfen. Es habe daher von ihnen erwartet werden dürfen, dass sie entsprechende Abklärungen treffen oder zumindest nach den Zustandsprotokollen fragen würden. Am 5. Juli 2012, vor Beginn der Bauarbeiten, habe die Gemeinde D._ ein Zustandsprotokoll der Strasse inklusive der Randabschlüsse im Bereich der Bauparzelle erstellen lassen. Gemäss dem Zustandsprotokoll vom 5. Juli 2012 sei vor Baubeginn der Zustand der Randabschlüsse (Schalensteine) im Bereich des Baugrundstücks ausserordentlich gut gewesen. Die Sanierungsdringlichkeit der Abschlüsse sei auf über zwei Jahre eingeschätzt worden.
Die Bauherrschaft sei zwar bei der Erstellung des Protokolls nicht zugegen gewesen und habe es auch nicht unterschrieben. Dennoch sei darauf abzustellen, denn es sei mit zahlreichen Fotos dokumentiert und Gründe für eine falsche Protokollierung seien weder vorgebracht worden noch ersichtlich. Auf den Bildern, die nach Abschluss der Bauarbeiten aufgenommen worden seien, seien mehrere ausgebrochene Randsteine erkennbar. Auch wenn der Zustand der Randabschlüsse vor den Bauarbeiten teilweise nicht mehr gut gewesen sei, sei er durch die Bauarbeiten deutlich verschlechtert worden. Eine Instandstellung erscheine gerechtfertigt. Zudem sei es sinnvoll, die inneren und äusseren Randsteine miteinander zu ersetzen, weil diese zusammen einbetoniert würden. Die Gemeinde D._ habe die Sanierung der Randsteine entlang der gesamten Bauparzelle (ca. 27m) vorgenommen, den Beschwerdeführer n aber nur die Kosten für 3m davon auferlegt. Dies sei verhältnismässig.
Die Rüge der Beschwerdeführer, die Gemeinde habe ihnen keine Gelegenheit geboten, die Instandstellung selbst vorzunehmen, sei nicht gerechtfertigt. Denn es werde nicht vorgebracht, dass ein Ersatz auf eigene Kosten günstiger gewesen wäre. Da die Gemeinde die Randsteine entlang der gesamten Parzelle erneuert habe, sei es angebracht gewesen, den Auftrag als Ganzes ausführen zu lassen.
3.2. Das angefochtene Urteil nennt keine Gesetzesbestimmung, auf die sich die Forderung der Gemeinde D._ stützen soll; desgleichen der Entscheid des Baurekursgerichts. Ob es um Schadenersatz im Rechtssinn geht oder um eine Gebühr und wenn ja, um welche Art von Gebühr, ist dem angefochtenen Urteil nicht zu entnehmen. Zudem fehlt jegliche Auseinandersetzung mit der Zulässigkeit von Nebenbestimmungen bei Verfügungen und mit der Rechtsnatur der Kausalabgaben, denen die Gebühren zugehören.
3.3. Bei dieser Ausgangslage ist es dem Bundesgericht nicht möglich, die Kostenauferlegung für die Instandstellung von Randabschlüssen an der E._-Strasse entlang der Parzelle der Beschwerdeführer auf ihre Rechtmässigkeit zu überprüfen. Die Beschwerde ist daher gutzuheissen, ohne dass die Rügen der Beschwerdeführer behandelt werden können. Denn ohne Kenntnis der gesetzlichen Grundlage für die Kostenauflage kann auch nicht beurteilt werden, ob die Vorbringen rechtserheblich sind. Das angefochtene Urteil ist gestützt auf <ref-law> aufzuheben und an die Vorinstanz zurückzuweisen. Diese wird - allenfalls nach Durchführung von Beweismassnahmen - zu prüfen haben, ob die Gemeinde ihre Forderung zu Recht erhoben hat. Wird dies bejaht, sind die gesetzlichen Grundlagen anzugeben, auf welche sich der Entscheid stützt. Andernfalls ist die Beschwerde gutzuheissen.
4.
Die Beschwerde ist gutzuheissen, und das angefochtene Urteil ist aufzuheben. Die Sache ist zu neuer Entscheidung im Sinn der Erwägungen an die Vorinstanz zurückzuweisen.
Die Gerichtskosten sind dem unterliegenden Kanton Zürich, dessen Verwaltungsgericht durch das nicht begründete Urteil unnötige Kosten verursacht hat, aufzuerlegen (<ref-law>). Den nicht vertretenen Beschwerdeführern ist keine Parteientschädigung zuzusprechen (<ref-law>).

Demnach erkennt das Bundesgericht:
1.
Die Beschwerde wird gutgeheissen, und das Urteil des Verwaltungsgerichts des Kantons Zürich vom 5. Juli 2016 wird aufgehoben. Die Sache wird zu neuer Entscheidung im Sinn der Erwägungen an das Verwaltungsgericht des Kantons Zürich zurückgewiesen.
2.
Die Gerichtskosten von Fr. 1'500.-- werden dem Kanton Zürich auferlegt.
3.
Dieses Urteil wird den Verfahrensbeteiligten und dem Verwaltungsgericht des Kantons Zürich, 3. Abteilung, Einzelrichter, schriftlich mitgeteilt.
Lausanne, 3. April 2017
Im Namen der II. öffentlich-rechtlichen Abteilung
des Schweizerischen Bundesgerichts
Der Präsident: Seiler
Die Gerichtsschreiberin: Genner