
MTB Bank
Supports in this guide: Payments, Payouts
Provider website: mtb.ua
What you need to do for start processing transactions (brief summary)
- Get your credentials (from MTB Bank)
- Connect in Dashboard
- Send an API request
Prerequisites: get from MTB Bank
Contact your MTB Bank account manager to get your account verified and receive credentials. The exact set depends on which account type you connect (see below).
UAH only.
Payments processing (connect H2H Merchant account, create payment-invoice)
Connect H2H Merchant account in Corefy Dashboard
Step 1 - Open connection form
Open MTB Bank in the provider directory and press Connect at MTB Bank Provider Overview page in the New connection section. Choose H2H Merchant account.
Step 2 - Fill in fields and select settings
- Wallet ID
- Partner token
- API public key -> uploaded as a file
- API secret key -> uploaded as a file
- Test Mode -> (enable if you are using sandbox credentials)
Success
You have connected MTB Bank H2H Merchant account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice - this is a card-to-wallet transfer, so customer.reference_id must be set to the recipient wallet ID on MTB Bank's side, not just an internal label. Card data itself is collected and submitted separately by Corefy's checkout/SDK layer, not as part of this request. Card, Apple Pay, and Google Pay are all supported on this same connection.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "6f1a2b3c-4d5e-4f60-8a71-9b2c3d4e5f60",
"service": "payment_card_uah_hpp",
"currency": "UAH",
"amount": 100,
"customer": {
"reference_id": "100045821"
}
}
}
}
Important
customer.reference_id is required and must be the recipient's MTB Bank wallet ID (sent as TransferC2W.RecipientWallet.ID).
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "a1b2c3d4-5e6f-4789-8a0b-1c2d3e4f5061",
"service": "payment_card_uah_hpp",
"currency": "UAH",
"amount": 100,
"customer": {
"reference_id": "100045821",
"name": "Ivan Petrenko",
"individual_tax_id": "1234567890",
"metadata": {
"purpose_key": "Top-up of personal account"
}
}
}
}
}
Important
- If
customer.nameis missing, the name parts sent to MTB Bank are simply left empty - no fake name is substituted. customer.individual_tax_id, if present, is sent as the sender's INN/tax ID.
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
customer_name_format-> optional, enumeration (LAST, FIRST, MIDDLE/FIRST, MIDDLE, LAST/LAST, MIDDLE, FIRST/LAST, FIRST/FIRST, LAST) - tells Corefy how to splitcustomer.nameinto first/middle/last name parts before sending them to MTB Bank.send_order-> optional, boolean - when enabled, sends your commerce invoice reference as theOrderfield.payment_purpose-> optional, string - names a key incustomer.metadata; if that key exists, its value is sent to MTB Bank as the payment'sPurpose.
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)
PAYMENT_OPERATION_TYPE-> overrides the internal operation-type code used for a sale requestSTATUS_OPERATION_TYPE-> overrides the internal operation-type code used for a status requestREFUND_OPERATION_TYPE-> overrides the internal operation-type code used for a refund request
Important
These three constants only take effect when the connection is not in Test Mode - while test_mode is enabled, Corefy always uses its own default operation-type codes regardless of what the constants are set to.
Refunds
MTB Bank supports partial refunds, but only one refund per payment (no multiple partial refunds against the same payment). The original payment's transaction ID is always required to process a refund.
Payouts processing (connect Provider account, create payout-invoice)
Connect Provider account in Corefy Dashboard
Step 1 - Open connection form
Open MTB Bank in the provider directory and press Connect at MTB Bank Provider Overview page in the New connection section. Choose Provider account.
Step 2 - Fill in fields and select settings
- Token
- Private key -> uploaded as a file
- Public key -> uploaded as a file
- Terminal ID
- Wallet ID
- Test Mode -> (enable if you are using sandbox credentials)
Success
You have connected MTB Bank Provider account!
First request to Corefy API (MIN)
What it does: creates a payout-invoice for a card payout (account-to-card transfer).
Payout - MIN
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "c3d4e5f6-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"service": "payment_card_uah",
"currency": "UAH",
"amount": 150,
"customer": {
"reference_id": "cus_123",
"name": "Ivan Petrenko"
},
"fields": {
"card_number": "4111111111111111"
}
}
}
}
Important
fields.card_numberis required.- The cardholder name sent to MTB Bank comes from
fields.card_holderif provided, otherwise it falls back tocustomer.name.
Payout - MAX
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "d4e5f6a7-8b9c-4d0e-8f1a-2b3c4d5e6f70",
"service": "payment_card_uah",
"currency": "UAH",
"amount": 150,
"customer": {
"reference_id": "cus_123",
"name": "Ivan Petrenko",
"individual_tax_id": "1234567890",
"metadata": {
"purpose_key": "Payout for order #4521"
}
},
"fields": {
"card_number": "4111111111111111",
"card_holder": "IVAN PETRENKO"
}
}
}
}
Important
customer.individual_tax_id, if present, is sent as the recipient's IPN/tax ID.- If no
payout_purposemetadata key matches (see Options below), the payout's ownreference_idis sent as thePurposeinstead.
Extended request (MAX)
Why add extra fields (typical reasons): - Provide additional customer details for compliance/reconciliation - Include optional fields required by your specific flow
Options
payout_purpose-> optional, string, up to 16 characters - names a key incustomer.metadata; if that key exists, its value is sent to MTB Bank as the payout'sPurpose.send_order-> optional, boolean - when enabled, sends the payout's own ID as theOrderfield.
Refunds
MTB Bank does not support refunds on Payouts.
Additional info
- Active reconciliation is available on both flows - Payments support both the asynchronous callback and an active status request; Payouts support an active status request.
- Apple Pay and Google Pay are supported on the Payments flow, alongside regular card payments.
- No recurring - this connector does not support saving/charging a token through Corefy.
- If your Corefy merchant profile has a company name, legal entity identifier, or IBAN on file, it is automatically included in both Payments and Payouts requests - no separate configuration needed.
FAQ / Troubleshooting
- Invalid credentials / auth error -> verify the keys and tokens for the selected environment (
test_mode) - Payment rejected for the recipient wallet -> confirm
customer.reference_idis the correct MTB Bank wallet ID, not just an internal customer identifier - Operation-type Constants seem to have no effect -> they are ignored while the connection is in Test Mode by design
- Currency or service is not supported -> only
UAHis available for this connector - Refund fails with multiple attempts -> only one refund per payment is allowed
Question
Still looking for help connecting your MTB Bank account? Please contact our support team!