Skip to content

CPS

CPS

Supports in this guide: Payments

Provider website: cps.lv


What you need to do for start processing transactions (brief summary)

  1. Get your credentials (from CPS)
  2. Whitelist Corefy's callback URL
  3. Connect in Dashboard
  4. Send an API request

Prerequisites: get from CPS

Contact your CPS account manager to get your account verified and receive the following credentials. When you submit your request, also provide your Corefy IP list and ask CPS to whitelist the callback URL https://psp-ext.paycore.io/cps/callback for notifications.

  • Client key -> Corefy field client_key -> in the CPS administration platform, this corresponds to the Public key field.
  • Client pass -> Corefy field client_pass -> in the CPS administration platform, this corresponds to the Public secret field.

EUR, USD.


Payments processing (connect H2H Merchant account, create payment-invoice)

Connect H2H Merchant account in Corefy Dashboard

Step 1 - Open connection form

Open CPS in the provider directory and press Connect at CPS Provider Overview page in the New connection section.

Step 2 - Fill in fields and select settings

  • Client key
  • Client pass
  • Currency / Features -> choose values available for your account (EUR, USD)

Success

You have connected CPS H2H Merchant account!


First request to Corefy API (MIN)

What it does: creates a payment-invoice; card data itself is collected and submitted separately by Corefy's checkout/SDK layer, not as part of this request.

Payment - MIN

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "6be05631-8710-4b14-a369-1928a2b70eda",
      "service": "payment_card_eur_hpp",
      "currency": "EUR",
      "amount": 10
    }
  }
}

Important

If customer.email is missing and the EMAIL Constant isn't set either, CPS receives no payer email at all (it's simply omitted, never replaced with a fake value).

Payment - MAX

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "199be985-c243-478a-86a8-4b8c902e5bb6",
      "service": "payment_card_eur_hpp",
      "currency": "EUR",
      "amount": 10,
      "customer": {
        "reference_id": "cus_123",
        "name": "John Doe",
        "email": "test@test.com",
        "phone": "+380680786663",
        "date_of_birth": "1990-01-01",
        "address": {
          "full_address": "Main street 1",
          "country": "GB",
          "city": "London",
          "region": "London",
          "post_code": "W1J 5AX"
        }
      }
    }
  }
}

Important

  • customer.name is split into first/last name; if missing, the card's own embossed cardholder name is used instead.
  • Name/address fields are automatically transliterated to Latin characters before being sent to CPS.

Extended request (MAX)

Why add extra fields (typical reasons): - Provide additional customer details for compliance/reconciliation - Positively influence conversion rate - Include optional fields required by your specific flow


Options

  • auth -> optional, boolean - runs the transaction as authorize-only (no capture) instead of a regular sale.
  • ignore_callback -> optional, boolean - for cascading to work correctly, ignores CPS' asynchronous callback and relies only on an active status request to finalize the payment.
  • allow_ipv6 -> optional, boolean - by default, if the customer's IP is IPv6, Corefy substitutes a fallback IP before sending it to CPS (see the IP note under Constants); enabling this sends the real IPv6 address instead.

Constants (fallback fields)

Constants are static values that Corefy can send to CPS instead of dynamic data from your API request, when those fields are missing in the request.

Priority (predictable rule): 1. If a value is present in the request -> Corefy uses the request value 2. Else if the constant is set -> Corefy uses the constant 3. Else -> provider may reject the request or apply its defaults (depends on provider)

Currently available constants (constant -> Corefy API field)

  • PAYER_FIRST_NAME / PAYER_LAST_NAME / PAYER_MIDDLE_NAME -> parsed from customer.name
  • PAYER_EMAIL -> customer.email
  • PAYER_PHONE -> customer.phone
  • PAYER_BIRTH_DATE -> customer.date_of_birth
  • PAYER_ADDRESS -> customer.address.full_address
  • PAYER_COUNTRY -> customer.address.country
  • PAYER_STATE -> customer.address.region
  • PAYER_CITY -> customer.address.city
  • PAYER_ZIP -> customer.address.post_code
  • IP -> customer IP - only used as a fallback for an IPv6 address when allow_ipv6 is disabled; if neither this Constant nor a real IP is available, Corefy sends a fixed placeholder IP (192.168.0.1) instead of leaving the field empty

Refunds

CPS supports full-amount refunds only - partial and multiple refunds are not supported. The original transaction ID is required to process a refund.


Additional info

  1. Active reconciliation is available - both the asynchronous callback and an active status request can finalize the payment, unless ignore_callback is enabled. After a 3D Secure redirect, Corefy also automatically polls CPS for the final status before relying on the callback.
  2. Recurring is supported - save a token on an initial sale (via the standard Corefy tokenization option) and charge it later without card data.
  3. CPS does not fall back to hardcoded fake customer data - missing customer fields (other than the IPv6 case above) are simply omitted from the request to CPS, never replaced with a fake email, phone, or address.

FAQ / Troubleshooting

  • Invalid credentials / auth error -> verify the Client key and Client pass
  • Currency or service is not supported -> confirm allowed currencies/features in your CPS account and in Corefy - only EUR and USD are available
  • Callbacks not arriving -> confirm Corefy's IPs and the callback URL https://psp-ext.paycore.io/cps/callback are whitelisted with CPS
  • Refund fails with multiple attempts, or a partial amount -> only one full-amount refund per payment is allowed

Question

Still looking for help connecting your CPS account? Please contact our support team!