
Payes
Supports in this guide: Payments
Provider website: payes.io
What you need to do for start processing transactions (brief summary)
- Choose account type
- Get your credentials (from Payes)
- Connect in Dashboard
- Send an API request
Choose account type
Payes can be connected in different ways (depending on your needs):
- If you do direct card payments -> choose H2H Merchant account
- If you need a hosted-page flow (for example, local methods such as UPI) -> choose Provider account
If you are not sure which one to use, confirm with your Corefy account manager.
Prerequisites: get from Payes
Get the following values for your Payes account:
- Shop ID -> Corefy field
shop_id-> where to find: Payes back office / issued by your Payes manager - Public key -> Corefy field
public_key-> where to find: Payes back office / issued by your Payes manager - Secret key -> Corefy field
secret_key-> where to find: Payes back office / issued by your Payes manager
Payments processing (connect H2H Merchant account, create payment-invoice)
Connect H2H Merchant account in Corefy Dashboard
Step 1 - Open connection form
Open Payes in the provider directory and press Connect at Payes Provider Overview page in the New connection section. Choose H2H Merchant account.
Step 2 - Fill in fields and select settings
- Shop ID ->
shop_id - Public key ->
public_key - Secret key ->
secret_key - Test mode ->
test_mode - 3-D Secure mode ->
three_ds_mode(Simple / Advanced)
Additionally, choose Currency and Features according to what is enabled for your Payes account.
Success
You have connected Payes H2H Merchant account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "8afec793-9b41-4dc4-b281-c76cc54ffb89",
"service": "payment_card_eur",
"currency": "EUR",
"amount": 10
}
}
}
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "06fa1ea9-8a5b-4dbc-b67b-6236b3b9af3d",
"service": "payment_card_eur",
"currency": "EUR",
"amount": 10.04,
"customer": {
"reference_id": "cus_123",
"email": "sss@gmail.com"
}
}
}
}
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
Options are configured on the Corefy side and affect how Corefy builds provider requests or processes responses.
Currently available options (2)
ignore_callback- ignores incoming provider callbacks for this accountsend_customer_data- sends customer billing details (name, country, city, state, zip, address) with each request
ignore_callback
What it does: stops Corefy from processing provider callback notifications for this account.
When to use: only if your account manager asked you to rely on active reconciliation instead of callbacks.
Default: disabled (callbacks are processed)
send_customer_data
What it does: adds a billing address block (name, country, city, state, zip, address) to the request sent to Payes, built from the customer fields in your API request, or from Constants when a field is missing.
When to use: enable it if your Payes account requires billing/address data for approval.
Default: disabled (no billing address block is sent)
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 -> Corefy sends its own built-in placeholder value (see note below)
Currently available constants (constant -> Corefy API field)
IP-> client IP addressDESCRIPTION-> payment descriptionLANG-> languageEMAIL->customer.emailREASON-> refund reasonCOUNTRY->customer.address.country(sent only whensend_customer_datais enabled)CITY->customer.address.city(sent only whensend_customer_datais enabled)STATE->customer.address.region(sent only whensend_customer_datais enabled)ZIP->customer.address.postCode(sent only whensend_customer_datais enabled)ADDRESS->customer.address.fullAddress(sent only whensend_customer_datais enabled)
Built-in placeholder values
If a Constant above is not configured in Dashboard and the matching field is also missing from your API request, Corefy does not omit the field or fail the request - it silently sends a fixed placeholder value to Payes instead:
- IP ->
127.0.0.1 - Description ->
Some service - Language ->
en - Email ->
john@example.com - Refund reason ->
return of goods - Country ->
DE - City ->
Denver - State ->
CO - Postal code ->
96002 - Address ->
1st Street
Set the Constants you care about (or always send the fields in your request) so Payes never receives these placeholders by accident.
Refunds
Refunds are supported for the H2H Merchant account:
- Partial refunds are allowed.
- Only a single refund per transaction is allowed (multiple/split refunds on the same transaction are not supported).
- The original transaction ID is always required.
- The refund reason sent to Payes comes from your request description, or falls back to the
REASONconstant (defaultreturn of goods) if not provided.
Reconciliation
Active reconciliation is supported: Corefy can query Payes directly for the current status of a transaction, rather than relying only on callbacks.
Payments processing (connect Provider account, create payment-invoice)
Connect Provider account in Corefy Dashboard
Step 1 - Open connection form
Open Payes in the provider directory and press Connect at Payes Provider Overview page in the New connection section. Choose Provider account.
Step 2 - Fill in fields (provider -> Corefy)
- Shop ID ->
shop_id - Secret key ->
secret_key - Public key ->
public_key - Test mode ->
test_mode - Live URL (optional) ->
live_url- only needed if your account manager gave you a custom API host; otherwise the default production host is used.
Success
You have connected Payes Provider account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "eae08d28-1a7a-407f-ab4d-2c8275ca7964",
"service": "upi_inr_hpp",
"currency": "INR",
"amount": 100
}
}
}
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "58acf793-9b41-4dc4-b281-c76cc54ff230",
"service": "upi_inr_hpp",
"currency": "INR",
"amount": 100,
"customer": {
"reference_id": "33cc9165-6ab2-4cee-8d9a-10f05cddbb5a",
"first_name": "John",
"last_name": "Doe",
"email": "sss@gmail.com",
"phone": "380663031389",
"address": {
"country": "IN"
}
}
}
}
}
This flow covers the hosted-page and local-method side of Payes (for example, UPI payments in India); available services/currencies depend on what is enabled for your account - confirm the exact list with your account manager.
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)
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. Unlike the H2H Merchant account, the Provider account has no built-in placeholder values - if a field is missing from both your request and Constants, it is simply left blank.
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 -> the field is left blank
Currently available constants (constant -> Corefy API field)
LANGUAGE->languageFIRST_NAME->customer.first_nameLAST_NAME->customer.last_nameEMAIL->customer.emailPHONE->customer.phoneCOUNTRY->customer.address.country
Refunds
Refunds are not available through the Provider account. If you need refund capability, use the H2H Merchant account instead.
Reconciliation
Active reconciliation is supported: Corefy can query Payes directly for the current status of a transaction, rather than relying only on callbacks.
Additional info
- Recurring/tokenized payments are not supported by Payes in either account type.
- Incoming callback requests are authenticated with an RSA SHA-256 signature carried in the
Content-Signatureheader, verified against your connected Public key - this applies to both account types. - The H2H Merchant account currently supports EUR, USD, RUB and UZS; the Provider account is intended for methods/currencies outside that set (for example, UPI in India) - confirm the exact list enabled for your account with your Corefy account manager.
- Refunds and active reconciliation behave independently per account type - see the Refunds/Reconciliation notes inside each flow above before relying on either.
FAQ / Troubleshooting
- Invalid credentials / auth error -> verify
shop_id,public_keyandsecret_keymatch the Dashboard field and the selected environment (test vs live) - Refund request fails -> confirm you are using the H2H Merchant account; the Provider account does not support refunds, and only one refund per transaction is allowed on the H2H Merchant account
- Unexpected values arriving at Payes (email, address, etc.) -> check the Constants section for the H2H Merchant account; unset Constants fall back to built-in placeholder values rather than failing the request
- Currency or service is not supported -> confirm allowed currencies/features in your Payes account and in Corefy
- Not sure which account type to use? -> ask your Corefy account manager
Question
Still looking for help connecting your Payes account? Please contact our support team!