Skip to content

Logo

Symoco (HorizonPay)

Symoco is the connector name on Corefy's side; the actual processing backend behind it is HorizonPay (horizonpay.kz), confirmed from the live/sandbox API domains used in both account types below.

Supports in this guide: Payments, Payouts

Provider website: symoco.com

Note

The OFT directory's description of this provider (a Canadian FINTRAC-registered MSB) does not match the actual horizonpay.kz API domains used by the code, and could not be independently verified - it is not repeated here.


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

  1. Get your credentials (from Symoco)
  2. Choose your account type
  3. Connect in Dashboard
  4. Send an API request

Choose account type

  • H2H Merchant account -> card Payments in EUR, USD, RUB, UZS, with refund support.
  • Provider account -> SBP QR Payments in RUB, plus card Payouts in UZS, RUB, EUR, USD, KZT, AZN, GBP. No refunds on this account type.

Prerequisites: get from Symoco

Contact your Symoco account manager to get your account verified and receive the following credentials.

  • Merchant Site ID -> Corefy field merchant_site_id.
  • Refresh access token -> Corefy field refresh_access_token.

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

Connect H2H Merchant account in Corefy Dashboard

Step 1 - Open connection form

Open Symoco in the provider directory and press Connect at Symoco Provider Overview page in the New connection section, then choose H2H Merchant account.

Step 2 - Fill in fields and select settings

  • Merchant Site ID
  • Refresh access token
  • Test Mode -> (enable if you are using sandbox credentials)

Success

You have connected Symoco 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": "7b6d677f-201e-41ca-bdf9-b0a760765774",
      "service": "payment_card_eur_hpp",
      "currency": "EUR",
      "amount": 12
    }
  }
}

Payment - MAX

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "9d5e2e8c-1b3a-4f6d-9c2e-5a7b8c9d0e1f",
      "service": "payment_card_uzs_hpp",
      "currency": "UZS",
      "amount": 12,
      "customer": {
        "reference_id": "cus_123",
        "name": "John Doe",
        "email": "user@domain.tld",
        "phone": "18001002030",
        "date_of_birth": "1960-02-25",
        "address": {
          "full_address": "Av. da Liberdade, 87",
          "country": "US",
          "city": "Sao Paulo",
          "region": "SP",
          "post_code": "05907"
        }
      }
    }
  }
}

Important

  • CVV is required for every currency except UZS, where it is CVV-exempt; if CVV is missing for any other currency, the payment is rejected rather than sent with a fallback value.
  • generate_random_data_for_uzs (see Options) only ever substitutes UZS transactions' missing customer fields with a randomly generated identity - other currencies simply omit missing fields.

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

  • ignore_callback -> optional, boolean - for cascading to work correctly, ignores Symoco's asynchronous callback and relies only on an active status request to finalize the payment.
  • generate_random_data_for_uzs -> optional, boolean - for UZS transactions only: when a customer field (name, address, city, region, post code, date of birth) is missing, generates and sends a realistic random identity instead of leaving the field empty. phone/email/reference_id are never substituted this way.

Constants (fallback fields)

Constants are static values that Corefy can send to the provider 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)

  • PHONE -> customer.phone
  • EMAIL -> customer.email
  • NAME -> customer.name
  • COUNTRY_CODE -> customer.address.country
  • FULL_ADDRESS -> customer.address.full_address
  • CITY -> customer.address.city
  • REGION -> customer.address.region
  • POST_CODE -> customer.address.post_code
  • DATE_OF_BIRTH -> customer.date_of_birth
  • REFERENCE_ID -> customer.reference_id

Refunds

Symoco (H2H Merchant account) supports partial refunds, but only one refund per payment (no multiple partial refunds against the same payment).


Payments processing (connect Provider account, create payment-invoice)

Connect Provider account in Corefy Dashboard

Step 1 - Open connection form

Open Symoco in the provider directory and press Connect at Symoco Provider Overview page in the New connection section, then choose Provider account.

Step 2 - Fill in fields and select settings

  • Merchant Site ID
  • Refresh access token
  • Test Mode -> (enable if you are using sandbox credentials)

Success

You have connected Symoco Provider account!


First request to Corefy API (MIN)

What it does: creates a payment-invoice and redirects the customer to Symoco's hosted SBP QR page. This is the only Payment service on a Provider account.

Payment - MIN

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "3e2a1c4d-6b5f-4a8e-9d0c-1b2a3c4d5e6f",
      "service": "sbp_qr_rub_hpp",
      "currency": "RUB",
      "amount": 500
    }
  }
}

Payment - MAX

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "4f3b2d5e-7c6a-4b9f-8e1d-2c3b4a5d6e7f",
      "service": "sbp_qr_rub_hpp",
      "currency": "RUB",
      "amount": 500,
      "customer": {
        "metadata": {
          "ip": "203.0.113.42"
        }
      }
    }
  }
}

Important

No other customer field is used on this flow - only customer.metadata.ip is read, and only to pass along the customer's IP.


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


Refunds

Symoco (Provider account) does not support refunds on Payments.


Payouts processing (connect Provider account, create payout-invoice)

Connect Provider account in Corefy Dashboard

Uses the same Provider account connected above - no separate connection step.

First request to Corefy API (MIN)

What it does: creates a payout-invoice; the card is encrypted and sent to Symoco for a direct card payout.

Payout - MIN

POST /api/payout-invoices

{
  "data": {
    "type": "payout-invoice",
    "attributes": {
      "reference_id": "9c10518e-29c0-4dac-bf4e-7fb9197542e8",
      "service": "payment_card_uzs",
      "currency": "UZS",
      "amount": 123,
      "customer": {
        "reference_id": "cus_456"
      },
      "fields": {
        "card_number": "4111111111111111"
      },
      "context": {
        "card": {
          "card_holder": "John Wick",
          "exp_month": "01",
          "exp_year": "2030"
        }
      }
    }
  }
}

Important

  • fields.card_number, context.card.card_holder, context.card.exp_month, and context.card.exp_year are required for every Payout, regardless of currency.
  • Of the 7 supported Payout currencies (UZS, RUB, EUR, USD, KZT, AZN, GBP), Constants are only configured for the first 6 - GBP payouts have no Constants fallback available today.

Payout - MAX

POST /api/payout-invoices

{
  "data": {
    "type": "payout-invoice",
    "attributes": {
      "reference_id": "a1b2c3d4-5e6f-4789-8a02-5b6c7d8e9f0a",
      "service": "payment_card_eur",
      "currency": "EUR",
      "amount": 150,
      "customer": {
        "reference_id": "cus_456",
        "name": "John Doe",
        "email": "user1@domain.tld",
        "phone": "18001002031",
        "address": {
          "full_address": "Av. da Liberdade, 87",
          "country": "FR",
          "region": "IDF",
          "city": "Paris",
          "post_code": "75001"
        }
      },
      "fields": {
        "card_number": "4111111111111111"
      },
      "context": {
        "card": {
          "card_holder": "John Doe",
          "exp_month": "01",
          "exp_year": "2030"
        }
      }
    }
  }
}


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


Constants (fallback fields)

Currently available constants (constant -> Corefy API field) - UZS, RUB, EUR, USD, KZT, AZN services only

  • PHONE -> customer.phone
  • EMAIL -> customer.email
  • NAME -> customer.name
  • COUNTRY_CODE -> customer.address.country
  • FULL_ADDRESS -> customer.address.full_address
  • CITY -> customer.address.city
  • REGION -> customer.address.region
  • POST_CODE -> customer.address.post_code

Refunds

Symoco (Provider account) does not support refunds on Payouts.


Additional info

  1. Active reconciliation is available on all three flows - H2H Merchant account Payments, Provider account Payments, and Provider account Payouts can all be refreshed via an active status request, in addition to the asynchronous callback (unless ignore_callback is enabled on the H2H flow).
  2. No recurring - this connector does not support saving/charging a token through Corefy.
  3. H2H Merchant account and Provider account are independent connections sharing the same credential fields - connecting one does not automatically connect the other.

FAQ / Troubleshooting

  • Invalid credentials / auth error -> verify the Merchant Site ID and refresh access token for the selected environment (test_mode)
  • Payment declined for missing CVV -> CVV is required for every currency except UZS
  • Currency or service is not supported -> confirm allowed currencies/features in your Symoco account and in Corefy - H2H supports EUR/USD/RUB/UZS, Provider account Payments only RUB (SBP QR), Payouts support UZS/RUB/EUR/USD/KZT/AZN/GBP
  • Refund fails with multiple attempts -> only one refund per payment is allowed, and only on the H2H Merchant account
  • Payout rejected for missing card data -> fields.card_number and context.card (holder, expiry month, expiry year) are required for every payout

Question

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