Skip to content

Logo

MF Stream

Payment System with a 99.9% Guaranteed Operational Performance - a secure and streamlined payment solution that offers added measures against fraud, supports KYC compliance, and enables easy integration.

Supports in this guide: Payments

Provider website: mfstream.io


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

  1. Get your credentials (from MF Stream)
  2. Connect in Dashboard
  3. Send an API request

Prerequisites: get from MF Stream

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

  • Shop ID -> Corefy field shop_id.
  • Public key -> Corefy field public_key.
  • Secret key -> Corefy field secret_key.
  • 3DS mode -> Corefy field three_ds_mode -> optional, Simple (3-D Secure 1.0) or Advanced (3-D Secure 2.0 - your application forwards the customer to the ACS form, collects the verification result, and submits it to MF Stream to finalize the transaction); defaults to Advanced if left unset.

USD only.


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

Connect H2H Merchant account in Corefy Dashboard

Step 1 - Open connection form

Open MF Stream in the provider directory and press Connect at MF Stream Provider Overview page in the New connection section.

Step 2 - Fill in fields and select settings

  • Shop ID
  • Public key
  • Secret key
  • 3DS mode -> Simple or Advanced
  • Test Mode -> (enable if you are using sandbox credentials)
  • Currency / Features -> choose values available for your account (USD)

Success

You have connected MF Stream 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": "86e68af6-6b95-4cc0-be16-e4df8044604c",
      "service": "payment_card_usd_hpp",
      "currency": "USD",
      "amount": 10
    }
  }
}

Important

  • If customer.email is missing and the EMAIL Constant isn't set either, a fixed placeholder email is sent to MF Stream instead of leaving the field empty - see Constants below.
  • A transaction description and language code are always sent to MF Stream, using the DESCRIPTION/LANG Constants as a fallback when not otherwise available.

Payment - MAX

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "08f5e97c-1170-4bda-9625-3bde3c6dcd20",
      "service": "payment_card_usd_hpp",
      "currency": "USD",
      "amount": 10,
      "customer": {
        "reference_id": "bc75bc54-5023-4f98-8c0d-ec5ed7e8f380",
        "name": "John Doe",
        "email": "test@test.com",
        "phone": "+380680786663",
        "address": {
          "full_address": "Main street 1",
          "country": "GB",
          "city": "London",
          "region": "London",
          "post_code": "W1J 5AX"
        }
      }
    }
  }
}

Important

customer.address/customer.metadata fields above are only forwarded to MF Stream when the send_customer_data Option is enabled (see Options below) - otherwise they're not sent at all, regardless of what's in the request.


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 MF Stream's asynchronous callback and relies only on an active status request to finalize the payment.
  • send_customer_data -> optional, boolean - when enabled, forwards customer.name/.phone/.address (country/city/region/post_code) to MF Stream as billing address fields; falls back to the matching Constants (or cardholder name from the card itself) when a field is missing.
  • duplicate_check -> optional, boolean, default false - when enabled, rejects a repeat charge request with the same amount and card/token sent within 30 seconds of the original request.

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 falls back to a fixed default value (see below) for EMAIL/DESCRIPTION/LANG; for the billing-address constants, the field is simply omitted unless send_customer_data is enabled

Currently available constants (constant -> Corefy API field)

  • EMAIL -> customer.email
  • DESCRIPTION -> transaction description (not tied to a request field - set a default description for MF Stream's own records)
  • LANG -> checkout page language code
  • REASON -> refund reason text sent to MF Stream
  • COUNTRY, CITY, STATE, ZIP, ADDRESS -> customer.address.country/.city/.region/.post_code/.full_address - only applied when send_customer_data is enabled
  • IP -> exposed in the Dashboard, but has no effect on this connector's requests

Important

If customer.email is missing and EMAIL isn't set, MF Stream receives the fixed placeholder john@example.com instead of an empty field. The same applies to DESCRIPTION ("Some service") and LANG ("en") - these three always have some value sent, never left empty.


Refunds

MF Stream supports partial refunds, but only one refund per payment (no multiple partial refunds against the same payment).


Additional info

  1. Active reconciliation is available - both the asynchronous callback and an active status request can finalize the payment, unless ignore_callback is enabled.
  2. No recurring - this connector does not support saving/charging a token through Corefy.
  3. 3DS mode is account-level, not per-request - choose Simple or Advanced when connecting; it cannot be switched per transaction.

FAQ / Troubleshooting

  • Invalid credentials / auth error -> verify the Shop ID, public key, and secret key
  • Currency or service is not supported -> confirm allowed currencies/features in your MF Stream account and in Corefy - only USD is available
  • Refund fails with multiple attempts -> only one refund per payment is allowed
  • Setting the IP constant has no visible effect -> this is expected for this connector; it is not currently wired into the request
  • Unexpected placeholder email/description reaching MF Stream -> set the EMAIL/DESCRIPTION/LANG Constants, or always send customer.email in the request, to avoid the built-in fallback values

Question

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