Lifehack: accepting payments on your site
Published 29.04.2026 13:35 in Cases
We are asked from time to time: “Does the CRM have a payment gateway?” There is no built-in one, and that is by design: orders, statuses and approvals live in AlterCPA Moe, while taking the money stays on your side. Connecting the two is not hard: the payment form itself asks the CRM for the order data and itself confirms the order after payment.
Payments depend on your country, legal form, payment methods and taxes, so we did not hard-wire them into the CRM: it handles order processing, statuses, approvals, packing and lead-handling logic. Instead, AlterCPA Moe has the merchant API, and with it the payment form can cope on its own.
How it works
- When a lead is submitted, a link to the payment form is generated, and the order ID is put into it.
- When the form is opened by that link, it requests this order’s data from the CRM and shows the payment buttons.
- After payment, the form sends a confirmation using the same ID, and the order goes into work: it is approved and lands in the “Packing” status with the responsible staff.
What the form needs
Two requests to the merchant API. The ID and the access key are in the “Profile” section, and in the request they go as id={user}-{key}:
- request the order:
https://api.cpa.moe/comp/list.json?id={user}-{key}&oid=123 - confirm the order:
https://api.cpa.moe/comp/status.json?id={user}-{key}&oid=123&status=approve
The response comes in JSON, and there is no limit on the number of requests. The response to the first request has everything you need for payment: the order amount (price), the currency (currency) and the order content (items). The other parameters and status values are described in the merchant API documentation.
Important!
The API key gives access to your company’s orders, so requests to the CRM must be sent by the server side of the payment form, not by the browser JS of the page: otherwise anyone who opens the page code will see the key. And one more thing: the curly braces around {user} and {key} should not be written in the request, put the values in as they are.
The order list request works only with the key of a user who has the “Company administrator” checkbox: with an ordinary employee’s key you will get the access-denied response.
One more nuance: if the “Complete all the approved orders automatically” option is enabled in “Company settings”, a confirmed order will immediately get the “Completed” status, bypassing packing and delivery.
We do not have a ready-made payment form: you or your techie build the form, and the CRM gives it the API. The payment gateway counts the money, the CRM counts the orders, everyone has their job.