---
title: "PayCek"
slug: "paycek"
updated: 2025-07-31T06:09:36Z
published: 2025-07-31T06:09:36Z
canonical: "docs.monri.com/paycek"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monri.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PayCek

## Step 1: Set up IPS-RS Component

The `ips-rs` component is available as part of `Monri.js`. To get started, include the following script on your page. This script **must be loaded directly from `monri.com`** to remain PCI-compliant —**you cannot self-host or bundle it**.

### Test Environment

```
<script src="https://ipgtest.monri.com/dist/components.js"></script>
```

### Production Environment

```
<script src="https://ipg.monri.com/dist/components.js"></script>
```

Then, create an instance of Monri and initialize components:

```
const monri = Monri('<authenticity-token>');
const components = monri.components({clientSecret: '<client-secret>'});
```

Replace `&lt;authenticity-token&gt;` with the value from your merchant dashboard.

Replace `&lt;client-secret&gt;` with the value obtained when creating a payment via your backend.

⚠️ When switching to production, ensure you're using your production `authenticity_token` and `client_secret`.

## Step 2: Create your Payment Form Container

Create a DOM element where the ips-rs component will be injected.

```
<div id="ips-rs-element"></div>
```

## Step 3: Initialize and Mount `ips-rs` Component

You can now create and mount the component. Optional styles can be passed depending on screen size:

```
const isMobile = window.innerWidth <= 768;

// Create an instance of the ips-rs Components.
const ips = components.create("ips-rs", {
    trx_token: "<trx_token>",
    environment: isTestSystem ? "test" : "prod",
    // define styling options for ips-rs Components
    style: {
        container: {
            width: "100%",
            display: 'flex',
            flexDirection: 'row',
            maxWidth: "600px",
            margin: "0 auto",
            alignItems: "center",
            justifyContent: "center",
            gap: '15px'
        },
        descriptionRow: {
            display: "flex",
            gap: "1rem",
            marginBottom: isMobile ? "0rem" : "4rem",
            justifyContent: "space-between"
        },
        text: {
            display: "none"
        },
        logo: {
            alignSelf: "flex-start",
            width: "35vw",
            maxWidth: "120px",
            marginBottom: "0rem"
        },
        qrCodeContainer: {
            display: "flex",
            justifyContent: "center",
            marginBottom: "0rem"
        },
        regenerateBtn: {
            backgroundColor: "#f8f8f8",
            fontSize: "1.2rem"
        },
        timer: {
            textAlign: "center",
            marginTop: "1rem",
            fontFamily: "Myriad Pro",
            color: "#9396A6",
            fontSize: "0.9rem"
        },
        ifMobile: {
            display: "block",
            marginBottom: "0rem"
        },
        radioLabel: {
            display: "inline-flex",
            alignItems: "center",
            marginRight: "1rem"
        },
        radioInput: {
            scale: 1.2,
            margin: "0 0.5rem 0 0",
            padding: 0
        },
        bankSelect: {
            backgroundColor: "#FCF5FF",
            color: "#8132A7",
            borderRadius: '10px',
            borderColor: 'transparent',
            fontWeight: '400',
            cursor: 'pointer',
            fontFamily: 'Myriad Pro'
        },
        generateQRButton: {
            backgroundColor: '#FCF5FF',
            color: '#8132A7',
            fontWeight: '400',
            borderRadius: '8px',
            borderColor: 'transparent',
            fontSize: '0.9rem',
            padding: '0.3rem 0.9rem',
            transition: '0.3s ease-in-out',
            fontFamily: 'Myriad Pro',
            maxWidth: '150px',
            margin: '0 auto',
            display: 'block'
        },
        button: {
            fontSize: '1rem'
        },
        rightContainer: {
            display: "flex",
            flexDirection: "row"
        }
    }
});
// Add an instance of the Ips-Rs component into the `ips-rs-element` <div>.
ips.mount("ips-rs-element");
```

## Step 4: Optional - Listen to Payment Events

You can optionally listen to success or error events:

```
ips.on('paymentSuccess', (result) => {
    console.log('Payment successful', result);
});

ips.on('paymentError', (error) => {
    console.error('Payment error', error);
});
```

| Option | Description |
| --- | --- |
| `trx_token` | Token received when creating the transaction on backend |
| `environment` | Either `'test'` or `'prod'`, depending on your system |
| `style` | Optional custom styles for component containers (see example above) |

## Notes

Ensure the container `#ips-rs-element` exists before calling mount.

Use media queries or window.innerWidth to adjust styles for mobile/desktop.

QR codes or bank options are rendered automatically inside the component.

IPS-RS supports real-time payments and is optimized for bank selection and QR scanning.
