Faits: A. Y._ SA et X._ S.A., toutes deux actives dans le domaine du bâtiment, ont signé le 18 mai 2009 un contrat de sous-traitance par lequel la première confiait à la seconde l'exécution de certains travaux sur un chantier genevois (...). Il était notamment convenu de fixer les prix sur la base d'un prix ferme de 31 fr. par mètre-carré contradictoire, respectivement de 50 fr. par heure pour les travaux en régie dûment approuvés par la direction des travaux. Des acomptes pouvaient être demandés pour les travaux déjà réalisés. Un projet de facture, assorti d'un décompte des métrés pour approbation, devait être établi dix jours avant la fin estimée des travaux; sur la base de ce projet, il serait procédé à un métré contradictoire et à la réception des travaux en présence des deux parties. Durant les travaux, X._ a transmis à Y._ plusieurs documents intitulés "facture" pour un total de 151'715 fr. Y._ a payé 118'738 fr. Le 10 novembre 2009, X._ a envoyé à Y._ un "décompte final" relevant un solde impayé de 32'977 fr. 25; y était joint un document intitulé "métrage total ...". Y._ a répondu que ce document n'était pas "sérieux"; elle a produit son propre décompte dans lequel elle admettait un solde à payer de 824 fr. 95 et opposait en compensation des créances ensuite de malfaçons. B. B.a. Le 17 mars 2010, X._ a ouvert action contre Y._ en paiement de 32'977 fr. 25 devant le Tribunal de première instance du canton de Genève. Elle alléguait qu'après le début des travaux, les parties avaient tacitement convenu de calculer le prix de certaines prestations non pas en fonction des métrés, mais sur une base horaire. Y._ a conclu au rejet; elle contestait en particulier toute modification du contrat quant au mode de rémunération. Par jugement du 27 août 2012, le juge de première instance a condamné Y._ à payer à X._ la somme de 32'977 fr. 25 avec intérêts à 5% dès le 16 décembre 2009. B.b. Statuant sur appel par arrêt du 22 février 2013, la Chambre civile de la Cour de justice genevoise a modifié le jugement en ce sens que Y._ est condamnée à payer la somme de 824 fr. 95 avec intérêts à 5% dès le 16 octobre 2009, la demande de X._ étant rejetée pour le surplus. Les motifs de cette décision peuvent se résumer comme il suit: tout d'abord, il convenait d'écarter la thèse d'une modification du contrat initial relative à la rémunération; les diverses notes intitulées "facture" présentées en cours de travaux par X._ étaient en réalité des demandes d'avances. En versant une partie des montants ainsi demandés, Y._ n'avait pas admis l'établissement de factures intermédiaires, et donc de paiements intermédiaires en dérogation du contrat initial. Ensuite, X._ n'avait pas pu établir que la quotité du travail (en métrés ou en régie) prétendument effectué avait été approuvée par Y._; il n'existait pas de bons de régie signés par Y._ et X._ n'avait pas transmis de décompte des métrés à la fin du chantier. En conséquence, l'on ne pouvait retenir que Y._ était tenue de rémunérer le solde réclamé par X._, sous réserve du montant reconnu de 824 fr. 95. C. Par-devant le Tribunal fédéral, X._ (ci-après: la recourante) interjette un recours en matière civile, concluant à l'annulation de l'arrêt sur appel du 22 février 2013 et à la confirmation du jugement de première instance rendu le 27 août 2012. Y._ (ci-après: l'intimée) conclut au déboutement de la recourante. 