UAPay
National Payment Service
Supports in this guide: Payments, Payouts
Provider website: uapay.ua
What you need to do for start processing transactions (brief summary)
- Choose account type
- Get your credentials (from UAPay)
- Connect in Dashboard
- Send an API request
Choose account type
UAPay can be connected in different ways (depending on your needs):
- If you do card payments (card data sent directly, H2H) -> choose H2H Merchant account
- If you do hosted-page card payments, or payouts -> choose Provider account
Both account types additionally require an Account type setting (Acquiring, P2P, or - H2H only - C2A) that changes how the connection behaves - see the notes in each flow below. If you're not sure which combination fits your use case, confirm with your Corefy account manager.
Prerequisites: get from UAPay
Log in to your UAPay account (or contact UAPay support to get one set up) and submit the required documents to verify your account.
- Client ID -> Corefy field
client_id. - Secret Key -> go to My Shops -> open your shop -> Click here to see the secret key -> Corefy field
secret_key. - Virtual ID (optional) -> Corefy field
virtual_id-> a number you choose yourself; use a different one per connection if you need several Shops under the same Client ID.
Important
Ask your UAPay manager whether your account requires an IP white list; if so, provide Corefy's IP addresses.
Payments processing (connect H2H Merchant account, create payment-invoice)
Connect H2H Merchant account in Corefy Dashboard
Step 1 - Open connection form
Open UAPay in the provider directory and press Connect at UAPay Provider Overview page in the New connection section. Choose H2H Merchant account.
Step 2 - Fill in fields and select settings
- Client ID
- Secret Key
- Test Mode -> (enable if you are using sandbox credentials)
- Account type -> Acquiring, P2P, or C2A (see note below)
Choose Currency / Features. UAH and RUB are confirmed; check with your Corefy account manager which are enabled for your account.
Success
You have connected UAPay H2H Merchant account!
Account type differences
- Acquiring - a regular e-commerce card sale; standard partial refunds are allowed.
- P2P - a card-to-card transfer; standard partial refunds are allowed.
- C2A (card-to-account) - a two-step transfer; refunds are only possible for the full original amount - a partial refund is rejected outright.
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. UAPay may return a 3D Secure redirect for the customer to complete, depending on the card.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "8e3dbbb0-17af-4c9a-bedb-93bdac6900a2",
"service": "payment_card_uah_hpp",
"currency": "UAH",
"amount": 10
}
}
}
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "6795502c-e27d-4d07-85e0-93245aab9a3f",
"service": "payment_card_uah_hpp",
"currency": "UAH",
"amount": 10,
"customer": {
"reference_id": "cus_123",
"email": "johnsmith@gmail.com"
}
}
}
}
Note
If customer.email isn't sent, UAPay's own placeholder email is used instead for the Acquiring account type (it's not delivered to the customer) - still, sending a real email is recommended. No Constants or Options exist for P2P/C2A.
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
No Options are configured for this connector.
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)
No Constants are configured for this connector.
Payments processing (connect Provider account, create payment-invoice)
Connect Provider account in Corefy Dashboard
Step 1 - Open connection form
Open UAPay in the provider directory and press Connect at UAPay Provider Overview page in the New connection section. Choose Provider account.
Step 2 - Fill in fields and select settings
- Client ID
- Secret Key
- Virtual ID (optional)
- Test Mode -> (enable if you are using sandbox credentials)
- Account type -> set to Acquiring for this flow (use P2P or A2C instead if you only need Payouts - see Payouts below)
- Get Balances -> (optional) enable to have Corefy pull your UAPay balance
Success
You have connected UAPay Provider account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice; Corefy redirects the customer to UAPay's own hosted payment page to complete the purchase.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "8e3dbbb0-17af-4c9a-bedb-93bdac6900a2",
"service": "payment_card_uah_hpp",
"currency": "UAH",
"amount": 10
}
}
}
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "6795502c-e27d-4d07-85e0-93245aab9a3f",
"service": "payment_card_uah_hpp",
"currency": "UAH",
"amount": 10,
"customer": {
"reference_id": "cus_123",
"email": "johnsmith@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
Configured per service (payment_card_uah_hpp):
service_id-> optional, string - a specific service/profile ID on UAPay's side, for accounts set up with several services.payment_with_funds_holding-> optional, boolean - holds the funds (auth-only) instead of capturing immediately; ask your UAPay account manager whether your account supports a separate capture step before enabling this.
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)
EMAIL->customer.email
Refunds
UAPay supports partial refunds, but only one refund per payment (no multiple partial refunds against the same payment).
Payouts processing (connect Provider account, create payout-invoice)
Connect Provider account in Corefy Dashboard
Uses the same Provider account connection type as Payments above, but set Account type to A2C (Account-to-Card) for a standalone card payout - nothing else to fill in differently.
Note
P2P is also a valid Account type for payouts, but it only works for a payout linked to a matching earlier P2P payment on your account - not for an arbitrary card. If you need this mode, confirm the setup with your Corefy account manager; the example below covers the standalone A2C flow.
First request to Corefy API (MIN)
What it does: creates a payout-invoice and sends funds directly to a card.
Payout - MIN
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "0dde9e79-2c64-4703-adaf-93d710633401",
"service": "payment_card_uah",
"currency": "UAH",
"amount": 10,
"fields": {
"card_number": "4111111111111111"
}
}
}
}
Important
fields.card_number is required - this is the only payout destination field this connector uses.
Payout - MAX
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "3c6d2f8e-8a2a-4e7a-9b1a-2f6a7b9c0d1e",
"service": "payment_card_uah",
"currency": "UAH",
"amount": 10,
"customer": {
"reference_id": "cus_123"
},
"fields": {
"card_number": "4111111111111111"
}
}
}
}
customer is optional and only used for reconciliation on Corefy's side - UAPay itself only needs the card number.
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
No Options or Constants are configured for this flow.
Additional info
- Callback routing is automatic - Corefy generates the callback/return URLs per transaction, nothing to configure in UAPay's own back-office beyond the optional IP white-list from the Prerequisites.
- Account type is set per connection, not per request. Each H2H Merchant account or Provider account is permanently wired to one Account type (Acquiring/P2P/C2A/A2C) - connect a separate account if you need more than one mode.
- C2A refunds must match the full amount - see the important note under Payments (H2H) above.
FAQ / Troubleshooting
- Invalid credentials / auth error -> verify Client ID/Secret Key (and Virtual ID, if set) for the selected environment
- Refund rejected on a C2A account -> C2A only supports refunding the full original amount, not a partial one
- Payout rejected on a P2P account -> standalone card payouts need Account type set to A2C, not P2P - see the note under Payouts above
- Currency or service is not supported -> confirm allowed currencies/features in your UAPay account and in Corefy
Question
Still looking for help connecting your UAPay account? Please contact our support team!