Τι είναι ένα API Λογιστικής; Ένας απλός οδηγός για δημιουργούς πλατφορμών
Ένας απλός ορισμός του API λογιστικής, τι το ξεχωρίζει από ένα API φορολογίας ή πληρωμών και τι πρέπει να ελέγξετε πριν ενσωματώσετε κάποιο στη λύση σας.
Ένα API λογιστικής είναι μια διεπαφή που επιτρέπει σε ένα πρόγραμμα να τηρεί τα βιβλία ενός άλλου προγράμματος. Το λογισμικό σας αποστέλλει ένα οικονομικό γεγονός μέσω HTTP. Το API μετατρέπει αυτό το γεγονός σε ισοσκελισμένες διπλογραφικές εγγραφές σε ένα σχέδιο λογαριασμών, τις αποθηκεύει ώστε να μην μπορούν να αλλαχθούν αθόρυβα, εφαρμόζει τη φορολογική μεταχείριση και σας επιστρέφει αναφορές, έγγραφα και εξαγωγές δεδομένων μέσα από την ίδια διεπαφή.
Αυτός ο ορισμός κάνει το μεγαλύτερο μέρος της δουλειάς. Όλα τα υπόλοιπα σε αυτό το άρθρο αποτελούν συνέπειά του.
Η εκδοχή της μίας πρότασης
Ένα API λογιστικής αποδέχεται οικονομικά γεγονότα από την εφαρμογή σας, μετατρέπει το καθένα σε μια ισοσκελισμένη λογιστική εγγραφή, την αποθηκεύει με τρόπο αμετάκλητο μαζί με τη φορολογική της μεταχείριση και τα αποδεικτικά στοιχεία, και εκθέτει το τελικό καθολικό, τα έγγραφα και τις αναφορές ως προγραμματιζόμενα τελικά σημεία (endpoints).
Αν ένα προϊόν αυτοαποκαλείται API λογιστικής αλλά δεν παράγει λογισμικές εγγραφές, τότε είναι κάτι άλλο με ωραίο όνομα. Αυτό δεν είναι απαραίτητα κακό, απλώς σημαίνει ότι δεν θα κάνει τη δουλειά που ετοιμάζεστε να του ζητήσετε.
Τι δεν είναι ένα API λογιστικής
Τέσσερις γειτονικές κατηγορίες προϊόντων συγχέονται συχνά με τα API λογιστικής, συνήθως σε προχωρημένο στάδιο ενός έργου.
| Κατηγορία | Τι κάνει | Τι δεν κάνει |
|---|---|---|
| API υπολογισμού φόρων | Επιστρέφει τον σωστό συντελεστή ή ποσό φόρου για μια συναλλαγή | Δεν τηρεί τα βιβλία σας ούτε αποθηκεύει τα αποδεικτικά στοιχεία πίσω από την απόφαση για την απαιτούμενη περίοδο διατήρησης |
| API πληρωμών | Μεταφέρει χρήματα μεταξύ μερών και αναφέρει αυτές τις κινήσεις | Δεν καταγράφει την προμήθεια που κερδίθηκε, τον ΦΠΑ που οφείλεται ή την υποχρέωση προς έναν πωλητή μεταξύ πληρωμής και εκκαθάρισης |
| Ενοποιημένο API ή aggregator | Διαβάζει και γράφει δεδομένα στο υπάρχον λογιστικό λογισμικό του πελάτη σας | Δεν λειτουργεί ως το επίσημο σύστημα καταγραφής (system of record). Τα βιβλία σας βρίσκονται στο εργαλείο που χρησιμοποιεί ήδη κάθε πελάτης |
| API αναφορών ή BI | Διαβάζει αριθμούς από ένα υπάρχον καθολικό και τους απεικονίζει | Δεν δημιουργεί τις εγγραφές από τις οποίες προέρχονται αυτοί οι αριθμοί |
Κάθε μία από αυτές τις λύσεις έχει πραγματικές εφαρμογές. Μια πλατφόρμα που πρέπει να λειτουργεί ως το επίσημο σύστημα καταγραφής χρειάζεται το API λογιστικής στη βάση της, και όχι ως αντικατάστασή του.
Τα πέντε πράγματα που πρέπει να κάνει ένα API λογιστικής
1. Καταγραφή ισοσκελισμένων εγγραφών. Κάθε γεγονός μετατρέπεται σε χρεώσεις και πιστώσεις των οποίων το άθροισμα είναι ίσο. Όταν ένας αγοραστής πληρώνει 100€ σε μια αγορά (marketplace) που κρατά προμήθεια 15€, η εγγραφή χρεώνει έναν λογαριασμό εκκαθάρισης με 100€, πιστώνει την υποχρέωση προς τον πωλητή με 85€ και πιστώνει τα έσοδα από προμήθειες με 15€. Αυτό δεν είναι μια τυπική λογιστική διαδικασία, αλλά ένας δομικός έλεγχος που εντοπίζει ολόκληρες κατηγορίες σφαλμάτων ενσωμάτωσης προτού φτάσουν σε μια αναφορά.
2. Διατήρηση ιστορικού. Μια καταχωρημένη εγγραφή δεν επεξεργάζεται. Ένα λάθος διορθώνεται με μια αντιλογιστική εγγραφή συν μια διορθωμένη εγγραφή, και οι δύο συνδεδεμένες με την αρχική. Οι κλειστές περίοδοι κλειδώνονται ώστε να μην μπορεί να καταχωρηθεί καμία νέα εγγραφή σε αυτές.
3. Απόδοση φόρων. Στο πλαίσιο του ενδοκοινοτικού εμπορίου, αυτό σημαίνει τόπος παράδοσης, αντίστροφη χρέωση (reverse charge), έλεγχος ΑΦΜ ΦΠΑ έναντι του επίσημου μητρώου και τα αποδεικτικά στοιχεία που δικαιολογούν την απόφαση, τα οποία αποθηκεύονται δίπλα στη συναλλαγή αντί να απορρίπτονται μετά τον υπολογισμό.
4. Συμφωνία με εξωτερικά χρήματα. Τα βιβλία που δεν συναντούν ποτέ μια τραπεζική κίνηση είναι απλώς μια εκτίμηση. Το API πρέπει να εισάγει κινήσεις λογαριασμών ή εκκαθαρίσεις παρόχων και να τις συμφωνεί με όσα έχουν καταγραφεί.
5. Εξαγωγή δεδομένων. Αναφορές, έγγραφα και αρχεία ελέγχου σε μορφές που αποδέχεται ένας λογιστής και η φορολογική αρχή.
Ένα προϊόν που κάνει τα τρία πρώτα αλλά όχι τα δύο τελευταία θα αφήνει εξακολουθητικά κάποιον άνθρωπο να εργάζεται με υπολογιστικά φύλλα κάθε μήνα.
Πώς μοιάζει πραγματικά μια κλήση
Η μηχανική είναι απλούστερη από τη λογιστική. Στο API του Nordlet, κάθε λειτουργία είναι ένα POST τύπου RPC με προβλέψιμη δομή:
POST /v1/{module}/{resource}/{action}
Authorization: Bearer <api key>
Idempotency-Key: <your event id>
Δημιουργείτε ένα τιμολόγιο πώλησης και στη συνέχεια το εκδίδετε. Η έκδοση είναι η στιγμή κατά την οποία συμβαίνει η λογιστική πράξη: το έγγραφο λαμβάνει τον συνεχόμενο αριθμό του, η ισοσκελισμένη λογιστική εγγραφή καταχωρείται και οι γραμμές ΦΠΑ καταγράφονται μαζί της. Η πλατφόρμα σας δεν συνθέτει ποτέ χρεώσεις και πιστώσεις με το χέρι.
Τρεις λεπτομέρειες σε αυτό το απόσπασμα κώδικα έχουν μεγαλύτερη σημασία από το όνομα του τελικού σημείου (endpoint):
- Η εμβέλεια (scope) του κλειδιού. Ένα κλειδί φέρει δικαιώματα όπως
sales:write, ώστε μια ενσωμάτωση να λαμβάνει μόνο την πρόσβαση που χρειάζεται. - Το κλειδί ταυτότητας (idempotency key). Επαναλάβετε το ίδιο αίτημα με τα ίδια δεδομένα και θα λάβετε πίσω την αποθηκευμένη απάντηση αντί για ένα δεύτερο τιμολόγιο. Στείλτε το ίδιο κλειδί με διαφορετικά δεδομένα και το αίτημα απορρίπτεται με την ένδειξη
idempotency_key_reuseαντί να γίνει σιωπηλά αποδεκτό. - Τα χρήματα ως αλφαριθμητικά (strings). Τα ποσά είναι δεκαδικοί αριθμοί σε μορφή κειμένου και όχι αριθμοί κινητής υποδιαιρέσεως (floats), διότι οι τελευταίοι χάνουν λεπτά με τρόπους που εμφανίζονται στο τέλος του έτους.
Πού τοποθετείται στην αρχιτεκτονική σας
Η εφαρμογή σας παραμένει το περιβάλλον εργασίας (front end) και η πηγή των επιχειρηματικών γεγονότων. Το API λογιστικής γίνεται το οικονομικό σύστημα καταγραφής πίσω από αυτό. Η ροή συνήθως έχει ως εξής:
- Κάτι συμβαίνει στο προϊόν σας: μια παραγγελία, μια επιστροφή χρημάτων, μια πληρωμή, η ανανέωση μιας συνδρομής.
- Το backend σας καλεί το API λογιστικής με το γεγονός και ένα κλειδί ταυτότητας (idempotency key).
- Το API καταχωρεί τη λογιστική εγγραφή, εφαρμόζει τον ΦΠΑ και επιστρέφει αναγνωριστικά που αποθηκεύετε μαζί με τα δικά σας αρχεία.
- Ένα webhook, όπως το
sale_invoice.paid, ειδοποιεί το σύστημά σας όταν αλλάζει η κατάσταση, ώστε να αντιδράτε στα γεγονότα αντί να πραγματοποιείτε συνεχείς ερωτήσεις (polling). - Οι τραπεζικές συναλλαγές φτάνουν μέσω τραπεζικής ροής (bank feed) ή εισαγωγής κατάστασης και συμφωνούνται με τα καταχωρημένα έγγραφα.
- Στο τέλος της περιόδου, οι αναφορές και τα φορολογικά μητρώα παράγονται από τα ίδια δεδομένα και ο κλειστός μήνας κλειδώνει.
Τίποτα σε αυτή τη λίστα δεν απαιτεί από έναν άνθρωπο να ανοίξει μια λογιστική εφαρμογή. Αυτός είναι ακριβώς ο σκοπός αυτής της κατηγορίας.
Πώς συγκρίνεται με τις εναλλακτικές λύσεις
| Προσέγγιση | Προσπάθεια για εκκίνηση | Θέση σε φορολογικό έλεγχο | Κλίμακα με τον όγκο συναλλαγών |
|---|---|---|---|
| Υπολογιστικά φύλλα και χειροκίνητη καταχώρηση | Χαμηλή | Αδύναμη· το ιστορικό είναι τροποποιήσιμο | Όχι |
| Λογιστική εφαρμογή συν εξαγωγές CSV | Χαμηλή | Εξαρτάται αποκλειστικά από την πειθαρχία | Φτωχή· κάποιος εισάγει αρχεία |
| API aggregator στα βιβλία κάθε πελάτη | Μεσαία | Κληρονομεί ό,τι κάνει το εργαλείο του πελάτη | Ναι, αλλά δεν κατέχετε ποτέ το αρχείο |
| Ενσωματωμένο API λογιστικής | Μεσαία | Ισχυρή εάν το καθολικό είναι αμετάκλητο και οι περίοδοι κλειδώνουν | Ναι |
| Κατασκευή δικού σας καθολικού | Υψηλή | Ισχυρή μόνο εάν κατασκευάσετε και τους ελέγχους | Ναι, και το συντηρείτε για πάντα |
Η κατασκευή του δικού σας συστήματος είναι μια θεμιτή επιλογή για ορισμένες ομάδες. Αναλύεται με μεγαλύτερη λεπτομέρεια στον οδηγό μας για την επιλογή μεταξύ κατασκευής και αγοράς σε αγορές marketplace.
Τι να ελέγξετε πριν ενσωματώσετε κάποιο API
- Το υπόλοιπο παράγεται ή αποθηκεύεται; Ρωτήστε εάν το υπόλοιπο ενός πωλητή είναι ένα ερώτημα στις γραμμές του καθολικού ή μια στήλη που κάποιος ενημερώνει. Μόνο η πρώτη περίπτωση επιβιώνει σε έναν έλεγχο.
- Τι συμβαίνει σε μια επανάληψη (retry); Στείλτε το ίδιο αίτημα δύο φορές και μετρήστε τις εγγραφές.
- Μπορείτε να επεξεργαστείτε μια καταχωρημένη εγγραφή; Η απάντηση πρέπει να είναι όχι, συνοδευόμενη από τεκμηριωμένη οδό διόρθωσης.
- Μια κλειδωμένη περίοδος απορρίπτει πράγματι μια καταχώρηση; Δοκιμάστε το σε περιβάλλον δοκιμών (sandbox). Το Nordlet επιστρέφει
409για μια καταχώρηση με ημερομηνία εντός κλειδωμένης περιόδου. - Πώς αναπαρίστανται τα χρήματα; Ως δεκαδικά αλφαριθμητικά ή ως ακέραιες μονάδες χαμηλότερης αξίας. Ποτέ ως floats.
- Τι περιέχει το αρχείο ελέγχου (audit record); Χρήστης, ενέργεια, οντότητα και η ίδια η αλλαγή, προσβάσιμα μέσω ερωτημάτων και όχι κρυμμένα σε αρχεία καταγραφής (logs).
- Ποια είναι τα όρια κλήσεων (rate limits); Το Nordlet επιτρέπει 300 αιτήματα ανά λεπτό ανά κλειδί API και αναφέρει το εναπομείναν όριο στις κεφαλίδες της απάντησης. Όποιος κι αν είναι ο αριθμός, μάθετέ τον προτού σχεδιάσετε τον συγχρονισμό σας.
- Πώς εξάγετε τα δεδομένα σας; Αναφορές, έγγραφα και καθολικά σε μορφές που μπορείτε να παραδώσετε σε έναν λογιστή.
Ο καθένας από αυτούς τους παράγοντες μπορεί να δοκιμαστεί μέσα σε ένα απόγευμα σε μια εταιρεία sandbox. Οι λίστες χαρακτηριστικών των προμηθευτών δεν αποτελούν απόδειξη· μια επαναλαμβανόμενη δοκιμή είναι.
FAQ
Είναι ένα API λογιστικής το ίδιο με το λογιστικό λογισμικό;
Είναι λογιστικό λογισμικό με μετατοπισμένη τη διεπαφή. Το παραδοσιακό λογιστικό λογισμικό τοποθετεί έναν άνθρωπο μπροστά από το καθολικό, ενώ ένα API λογιστικής τοποθετεί τον κώδικά σας εκεί. Οι υποκείμενες υποχρεώσεις, η διπλογραφική δομή και οι αναφορές είναι οι ίδιες.
Χρειάζομαι ακόμα λογιστή εάν χρησιμοποιώ κάποιο τέτοιο API;
Ναι. Ένα API αυτοματοποιεί την καταγραφή, τον υπολογισμό και την αναφορά. Δεν λαμβάνει αποφάσεις κρίσης σχετικά με την ταξινόμηση, τις προβλέψεις ή τον τρόπο με τον οποίο πρέπει να αντιμετωπιστεί μια συγκεκριμένη σύμβαση, και στις περισσότερες χώρες δεν υπογράφει ούτε υποβάλλει τις νόμιμες οικονομικές καταστάσεις σας.
Μπορώ να χρησιμοποιήσω ένα API λογιστικής χωρίς να κατανοώ τη διπλογραφική μέθοδο;
Εν μέρει. Ένα καλό API κατασκευάζει τις λογιστικές εγγραφές για εσάς από ένα επιχειρηματικό έγγραφο, όπως ένα τιμολόγιο. Ωστόσο, εξακολουθείτε να χρειάζεται να κατανοείτε τι σημαίνουν οι λογαριασμοί όταν διαβάζετε μια αναφορά ή όταν εξηγείτε ένα υπόλοιπο σε έναν ελεγκτή.
Ποια είναι η διαφορά μεταξύ ενός API λογιστικής και ενός API καθολικού (ledger API);
Ένα API καθολικού καταγράφει ισοσκελισμένες κινήσεις μεταξύ λογαριασμών. Ένα API λογιστικής το κάνει αυτό και προσθέτει το κανονιστικό επίπεδο από πάνω: έγγραφα με νόμιμη αρίθμηση, μεταχείριση ΦΠΑ, φορολογικά μητρώα, πάγια περιουσιακά στοιχεία, κλείσιμο περιόδου και τις αναφορές που αναμένει μια δικαιοδοσία. Κάθε API λογιστικής περιέχει ένα καθολικό, αλλά δεν είναι κάθε καθολικό ένα λογιστικό σύστημα.
Πόσο διαρκεί η ενσωμάτωση ενός τέτοιου API;
Για μια πρώτη λειτουργική ροή —δημιουργία πελάτη, έκδοση τιμολογίου, λήψη πληρωμής, προβολή λογιστικής εγγραφής— υπολογίστε ημέρες και όχι εβδομάδες, αξιοποιώντας ένα τυπωμένο SDK και ένα περιβάλλον sandbox. Μια ενσωμάτωση παραγωγής που καλύπτει επιστροφές χρημάτων, διορθώσεις, πολυνομισματικότητα, συμφωνία και κλείσιμο περιόδου είναι μεγαλύτερο έργο, και η ακριβής εκτίμηση εξαρτάται από το πόσες από αυτές τις περιπτώσεις παράγει πράγματι το προϊόν σας.