There is an active CRM system for automating the water delivery business. The CRM is used for working with clients, orders, deliveries, products, payments, managers, couriers, and internal business processes.
An API needs to be developed for the CRM system and the architecture prepared for external integrations.
Project goal:
to create a scalable integration system so that in the future the CRM can work with:
- payment systems;
- accounting systems;
- tax invoice services;
- electronic document management;
- inventory accounting;
- banking services;
- SMS;
- Telegram;
- telephony;
- other external services.
Important:
it is necessary not just to "embed" one integration, but to create the correct API architecture and integration layer for further scaling of the system.
Required architecture
Desired logic:
CRM → API CRM → integration layer → external services.
Integrations should not be tightly embedded in the CRM.
The architecture needs to be designed so that in the future it will be possible to separately connect:
- new payment systems;
- new accounting systems;
- inventory accounting;
- SMS;
- Telegram;
- other services without reworking the core of the CRM.
Main tasks
1. Technical audit of the CRM
Before starting development, it is necessary to:
- study the current CRM;
- determine the technology stack;
- evaluate the architecture;
- assess the database structure;
- identify current entities;
- check if there is already an API;
- identify weak points;
- assess risks;
- propose an optimal API and integration layer architecture.
2. Formation of the list of necessary information
After analyzing the CRM, the performer should:
- determine what information is missing;
- prepare a structured list of what is needed from the client;
- describe what accesses and data are necessary for implementing the API and integrations.
3. Designing the CRM API
An API needs to be created for working with:
Clients
- individuals;
- legal entities;
- full name / company name;
- EDRPOU / TIN;
- contacts;
- delivery addresses;
- VAT payer status.
Orders
- order number;
- date;
- products;
- quantity;
- price;
- VAT;
- amounts;
- statuses;
- delivery;
- responsible managers.
Products
- name;
- article;
- price;
- units of measure;
- VAT rates;
- categories.
Payments
- amount;
- status;
- date;
- payment method;
- transaction ID;
- payment errors.
Documents
- invoices;
- acts;
- waybills;
- tax invoices;
- document statuses;
- errors;
- links to documents.
Warehouse data
- balances;
- write-offs;
- movement of goods;
- return of containers;
- warehouse statuses.
4. Implementation of the API
It is necessary to implement or prepare the structure of the REST API.
Preferred:
- API versioning;
- JSON;
- standardized responses;
- error handling;
- logging;
- scalable structure.
5. Webhooks and callbacks
The CRM should:
## Send events:
- client.created
- client.updated
- order.created
- order.updated
- order.paid
- order.cancelled
- order.delivered
- payment.created
- payment.success
- payment.failed
- document.created
- document.status_changed
- stock.updated
Receive callback / webhook:
- successful payment;
- payment error;
- document creation;
- document registration;
- document error;
- updating warehouse balances;
- other statuses.
6. Integration with payment systems
The API must be prepared for integrations with:
- LiqPay;
- PrivatBank;
- WayForPay;
- Fondy;
- Stripe;
- other payment services.
Logic:
the client pays → the payment system returns a callback → the CRM updates the order and payment status.
7. Integration with the accounting system
As a result of the work, at least one working integration with the accounting system must be implemented.
Preferred option:
- Vchysno;
- or M.E.Doc;
- or BAS.
The final choice is determined after analyzing the CRM and business processes.
8. What should work in the first integration
It is necessary to implement at least:
- client transfer;
- order transfer;
- product transfer;
- payment transfer;
- payment status transfer;
- document creation;
- document status retrieval;
- return status to the CRM;
- logging of errors and successful operations.
Preferred:
- VAT support;
- legal entities;
- invoices;
- waybills;
- tax invoices.
9. Integration with inventory accounting
The API must be prepared for future integration with inventory systems.
It is necessary to foresee:
- balances;
- movement of goods;
- write-offs;
- return of containers;
- updating balances;
- warehouse synchronization.
10. Authorization and security
It is necessary to implement:
- API keys or OAuth;
- separate keys for integrations;
- roles and access rights;
- HTTPS;
- logging of API requests;
- test and production environments;
- personal data protection;
- the ability to revoke API keys.
11. Documentation
It is necessary to prepare:
- Swagger / OpenAPI documentation or Postman Collection;
- examples of requests;
- examples of responses;
- error descriptions;
- webhook descriptions;
- instructions for connecting new integrations.
Important conditions
All work must be carried out on a test copy of the CRM or staging environment.
The production system must not be harmed during development.
Without agreement, it is not allowed to:
- conduct real payments;
- create real tax invoices;
- send real SMS or emails;
- change the live database.
What is required from the performer
When responding to the project, please indicate:
- what experience you have in creating APIs;
- experience with integrations with CRM / ERP / SaaS;
- experience with integrations with payment systems;
- experience with integrations with BAS / M.E.Doc / Vchysno;
- what architecture you propose;
- which accounting system you recommend for the first integration and why;
- what data is needed to start;
- approximate time estimate;
- approximate cost;
- possible risks;
- examples of similar projects.
What will be provided by the client
After analyzing the CRM, the performer must form a list of necessary information.
- examples of clients;
- examples of orders;
- examples of payments;
- examples of products;
- examples of documents;
- description of business processes;
Expected result
After the work is completed, there should be:
- a working CRM API;
- API documentation;
- webhooks;
- callback handling;
- integration logging;
- test API keys;
- prepared architecture for scaling;
- at least one working integration with the accounting system;
- the ability to further connect payment, inventory, and other services without reworking the CRM.