MiFinity
The eWallet with infinite possibilities
Supports in this guide: Payments, Payouts
Provider website: mifinity.com
What you need to do for start processing transactions (brief summary)
- Choose account type
- Get your credentials (from MiFinity)
- Connect in Dashboard
- Send an API request
Choose account type
MiFinity has a single account type that covers both directions:
- Provider account -> used for both payments (the MiFinity wallet, via a hosted iframe) and payouts (bank transfer or wallet-to-wallet)
If you're not sure whether MiFinity fits your use case, confirm with your Corefy account manager.
Prerequisites: get from MiFinity
Submit a connection request at mifinity.com/en/personal/contact or contact your MiFinity account manager directly to get your account verified and receive the following credentials.
- Account Holder ID -> Corefy field
account_holder_id. - API Key -> Corefy field
api_key.
Payments processing (connect Provider account, create payment-invoice)
Connect Provider account in Corefy Dashboard
Step 1 - Open connection form
Open MiFinity in the provider directory and press Connect at MiFinity Provider Overview page in the New connection section. Choose Provider account.
Step 2 - Fill in fields and select settings
- Account Holder ID
- API Key
- Test Mode -> (enable if you are using sandbox credentials)
Choose Currency / Features. USD, EUR, GBP, CHF, CAD, AUD, NZD, NOK, SEK, and DKK are confirmed; check with your Corefy account manager which are enabled for your account.
Success
You have connected MiFinity Provider account!
First request to Corefy API (MIN)
What it does: creates a payment-invoice; Corefy then embeds a MiFinity-hosted iframe (using the initialization token MiFinity returns) where the customer logs in to their MiFinity wallet and completes the payment.
Payment - MIN
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "8e3dbbb0-17af-4c9a-bedb-93bdac6900a2",
"service": "mifinity_gbp_invoice",
"currency": "GBP",
"amount": 10
}
}
}
Payment - MAX
POST /api/payment-invoices
{
"data": {
"type": "payment-invoice",
"attributes": {
"reference_id": "6795502c-e27d-4d07-85e0-93245aab9a3f",
"service": "mifinity_gbp_invoice",
"currency": "GBP",
"amount": 10,
"customer": {
"reference_id": "cus_123",
"name": "John Smith",
"email": "johnsmith@gmail.com",
"phone": "+15551234567",
"date_of_birth": "1990-01-01",
"address": {
"country": "GB",
"city": "London",
"full_address": "1 Main street"
}
}
}
}
}
customer is entirely optional - anything you don't send falls back to the Constants below (or is simply left blank on MiFinity's side) instead of failing the request. This connector also supports USD, EUR, CHF, CAD, AUD, NZD, NOK, SEK, and DKK (use mifinity_<ccy>_invoice as the service code).
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.
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)
CUSTOMER_REFERENCE_ID->customer.reference_idDATE_OF_BIRTH->customer.date_of_birthCOUNTRY->customer.address.countryCITY->customer.address.cityFULL_ADDRESS->customer.address.full_addressNATIONALITY->nationality-> falls back tocustomer.address.countryif not set as a request field or constant.
Payouts processing (connect Provider account, create payout-invoice)
Connect Provider account in Corefy Dashboard
Uses the same Provider account connection as Payments above - one connection covers both directions, there's nothing extra to fill in for payouts specifically.
First request to Corefy API (MIN)
What it does: creates a payout-invoice and sends funds to a bank account or to another MiFinity wallet.
Payout - MIN (bank transfer)
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "0dde9e79-2c64-4703-adaf-93d710633401",
"service": "bank_transfer_aggregated_gbp",
"currency": "GBP",
"amount": 10,
"customer": {
"reference_id": "cus_123",
"address": {
"country": "GB"
}
},
"fields": {
"beneficiary_full_name": "John Smith",
"account_number": "31511100",
"bank_code": "100000"
}
}
}
}
Important
customer.address.country is required - Corefy uses it to ask MiFinity which fields.* are actually needed for that destination country/bank, and validates your request against that dynamic list. Depending on the destination, you may also need some of: bank_name, beneficiary_bic_swift (BIC/SWIFT), beneficiary_dob, beneficiary_document_type, beneficiary_document_id, beneficiary_country_code_iso, beneficiary_city, beneficiary_postcode, beneficiary_address, email - send the ones your destination needs; MiFinity returns a clear validation error for the ones still missing.
Payout - MIN (MiFinity wallet)
POST /api/payout-invoices
{
"data": {
"type": "payout-invoice",
"attributes": {
"reference_id": "3c6d2f8e-8a2a-4e7a-9b1a-2f6a7b9c0d1e",
"service": "mifinity_wallet_eur",
"currency": "EUR",
"amount": 10,
"customer": {
"reference_id": "cus_123"
},
"fields": {
"account_number": "recipient@example.com"
}
}
}
}
For mifinity_wallet_<ccy> (EUR/CAD), the destination is just the recipient's MiFinity account - send it as fields.account_number (or fields.email, if that's what you have).
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 URL per transaction, nothing to configure in MiFinity's own back-office.
- Bank transfer payouts are "aggregated".
bank_transfer_aggregated_<ccy>(USD/EUR/GBP/CHF) covers many destination banks/countries behind one service code - the exact set of requiredfields.*depends on the destination, resolved dynamically fromcustomer.address.country(see the Payouts MIN/MAX above).
FAQ / Troubleshooting
- Invalid credentials / auth error -> verify credentials for the selected environment
- Bank transfer payout rejected for missing fields -> the required
fields.*set depends on the destination country/bank - check the full list in the Payouts section above and send the ones relevant to your destination - Currency or service is not supported -> confirm allowed currencies/features in your MiFinity account and in Corefy
Question
Still looking for help connecting your MiFinity account? Please contact our support team!