You can start accepting credit card payments on the Web using Hosted Payment Page or Card Input Component. No additional configuration is required for the Hosted Payment Page. It already supports all available payment methods and does not require coding.
Our Card Input Component renders a card input to your custom payment page. The Card Input Component lets you securely collect card information all within one component. It includes a dynamically-updating card brand icon as well as inputs for number, expiry and CVC. It is responsive, optimized for mobile devices, completely customizable and localized to 14 languages.
This page explains how to add Card Input Component to your custom payment page. If you don't need a custom checkout experience we recommend using our Hosted Payment Page.
To accept card payments you need to have at least one configured credit card processor. To configure credit card processors go to MONEI Dashboard → Settings → Payment Methods → Credit card payments.
To test your integration:
- Use your test mode Account ID and API Key.
- Use the test card numbers.
- You can check the status of a test payment in your MONEI Dashboard → Payments (in test mode).
1. Create a Payment
Create a Payment on your server with an amount and currency. Always decide how much to charge on the server side, a trusted environment, as opposed to the client. This prevents malicious customers from being able to choose their own prices.
The following parameters are required:
positive integer- Amount intended to be collected by this payment. A positive integer representing how much to charge in the smallest currency unit (e.g., 100 cents to charge 1.00 USD)
string- Three-letter ISO currency code, in uppercase. Must be a supported currency.
string- An order ID from your system. A unique identifier that can be used to reconcile the payment with your internal system.
string- The URL to which a payment result should be sent asynchronously.
Check all available request parameters.
Included in the returned Payment object is a payment
id, which is used on the client side to securely complete the payment process instead of passing the entire Payment object.
2. Collect card details
monei.js on your checkout page by adding the script tag to the
head of your HTML file.
Add MONEI Card Input Component to your payment page. Create empty DOM nodes (containers) with unique IDs in your payment form.
Initialize Card Input Component
The Card Input Component simplifies the form and minimizes the number of required fields by inserting a single, flexible input field that securely collects all necessary card details.
Card Input Component is also available as React and Vue component. Check out our examples.
Check MONEI JS Reference for more options.
3. Confirm the payment
To complete the payment you need to confirm it using monei.js confirmPayment function
You need to provide a
paymentId (obtained in step 1) and
paymentToken generated with Card Input Component. You can also provide additional parameters like
customer.email. Check all available parameters.
After the form is submitted MONEI will automatically show a popup window with 3d secure confirmation screen (if needed)
As an alternative process you can submit generated
paymentToken to your sever and then confirm payment on the server-side.
MONEI will notify you about a payment status by sending an HTTP POST request to the
callbackUrl. The request body will contain full payment object in JSON format.
This ensures that you get the payment status even when customer closed the browser window or lost internet connection.
The request also contains a
MONEI-Signature header. Verify this signature to confirm that received request is sent from MONEI.
To acknowledge receipt of the request, your endpoint must return a
200 HTTP status code to MONEI. All other response codes, including
3xx codes, indicate to MONEI that you did not receive the event.
If MONEI does not receive a
200 HTTP status code, the notification attempt is repeated. After multiple failures to send the notification over multiple days, MONEI marks the request as failed and stops trying to send it to your endpoint.