Skip to content

Logo

Exactly

Payment acceptance for your business

Supports in this guide: Payments, Payouts

Provider website: exactly.com


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

  1. Choose account type
  2. Get your credentials (from Exactly)
  3. Connect in Dashboard
  4. Send an API request

Choose account type

Exactly can be connected in different ways (depending on your needs):

  • If you do H2H card payments (card data sent directly) -> choose H2H Merchant account
  • If you do redirect payments (customer redirected to a hosted payment page) or payouts -> choose Provider account

If you're not sure which one to use, confirm with your Corefy account manager.


Prerequisites: get from Exactly

After your shop is set up with Exactly (provide them your shop name/URL, IP addresses you'll call from, and your Success/Failure return URLs), you'll get:

For H2H Merchant account:

  • API Key -> Corefy field api_key -> the secret token issued after your shop's setup.
  • Project ID (optional) -> Corefy field project_id.
  • Callback Secret Key (optional) -> Corefy field callback_secret_key.
  • API URL (optional) -> Corefy field api_url -> leave as default unless your account manager tells you otherwise.
  • Acquirer BIN / Acquirer Merchant ID (optional) -> Corefy fields acquirer_bin/acquirer_merchant_id -> only relevant when Use External MPI is enabled (see Additional info).
  • MPI API Key (optional) -> Corefy field mpi_api_key -> only relevant when Use External MPI is enabled.

For Provider account:

  • API Key -> Corefy field api_key.
  • API URL (optional) -> Corefy field api_url.

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

Connect H2H Merchant account in Corefy Dashboard

Step 1 - Open connection form

Open Exactly in the provider directory and press Connect at Exactly Provider Overview page in the New connection section. Choose H2H Merchant account.

Step 2 - Fill in fields and select settings

  • API Key
  • Project ID (optional)
  • Callback Secret Key (optional)
  • API URL (optional)
  • New API -> (enable to use Exactly's newer integration - required for Apple Pay/Google Pay; off by default, which keeps the original integration)
  • Save Instant Token -> (enable if you plan to use instant/recurring payments, or to later pay out back to the same card)
  • Acquirer BIN, Acquirer Merchant ID, MPI API Key, Acquirer Country Code, Acquirer Country Code Source (optional, see Additional info)

Choose Currency and Features. You can set these parameters according to available currencies and features for your Exactly account (USD, EUR, GBP, RUB, UAH, PEN confirmed); enabling Apple Pay/Google Pay as a feature requires New API to also be enabled.

Success

You have connected Exactly 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": "8e3dbbb0-17af-4c9a-bedb-93bdac6900a2",
      "service": "payment_card_usd_hpp",
      "currency": "USD",
      "amount": 10
    }
  }
}

Payment - MAX

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "6795502c-e27d-4d07-85e0-93245aab9a3f",
      "service": "payment_card_usd_hpp",
      "currency": "USD",
      "amount": 10,
      "customer": {
        "reference_id": "cus_123",
        "name": "John Smith",
        "email": "johnsmith@gmail.com",
        "phone": "+15551234567",
        "date_of_birth": "2000-12-31",
        "address": {
          "full_address": "1st Avenue North",
          "country": "US",
          "city": "New York",
          "post_code": "10115"
        }
      }
    }
  }
}

customer is entirely optional at the code level, but note that name/phone/date_of_birth are only forwarded to Exactly when Send Customer Data is enabled below (on by default), and the address block only when Send Source Address is enabled (also on by default). This connector also supports EUR, GBP, RUB, UAH, and PEN (use payment_card_<currency>_hpp 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


Options

Options are configured on the Corefy side and affect how Corefy builds provider requests or processes responses.

Currently available options (9)

  • refund_with_delay - reports a refund as RECONCILE_REQUIRED instead of an immediate final result, when Exactly's response supports a delayed check.
  • transaction_lifetime - how long (in minutes) the transaction stays valid.
  • arn_reconcile_delay_hours - waits before expecting the ARN (Acquirer Reference Number) to be available via reconciliation (New API only).
  • set_threeds_data - adds 3DS data (ARN, verification, CAVV) to the response for successful transactions.
  • use_external_mpi - uses a third-party MPI service for 3D Secure instead of Exactly's own built-in 3DS.
  • set_original_resolution_message - sets the resolution message to Exactly's own raw result code.
  • send_customer_data - sends customer name, phone, and date of birth to Exactly.
  • send_source_address - sends the customer's address (country, city, street, post code, region) to Exactly.
  • generate_customer_birth_date - auto-generates a random date of birth (1955-2003) when none is provided.
refund_with_delay

What it does: when enabled and Exactly's response indicates a delayed refund is in progress, Corefy reports the refund as RECONCILE_REQUIRED rather than an immediate final result.

When to use: leave it on (default) unless you have a specific reason to always expect an immediate refund result.

Default: true

Allowed values: true / false

transaction_lifetime

What it does: sets how many minutes a transaction stays valid before Exactly expires it.

When to use: increase it if your checkout flow needs more time to complete.

Default: 30

Allowed values: any whole number of minutes, 30 or higher

arn_reconcile_delay_hours

What it does: when a reconciliation finds no ARN yet, waits this many hours before expecting one to be available on a later reconciliation attempt. Only takes effect when New API is enabled.

When to use: set it if Exactly's ARN data for your account is typically available only after a delay.

Default: 0 (disabled - no wait applied)

Allowed values: any whole number of hours, 1 or higher

set_threeds_data

What it does: adds 3D Secure data (ARN, verification details, CAVV) to the response for successful transactions.

When to use: enable it if you need this 3DS detail available on the transaction record.

Default: false

Allowed values: true / false

use_external_mpi

What it does: routes 3D Secure authentication through a third-party MPI service instead of Exactly's own built-in 3DS.

When to use: enable it only if instructed by Exactly or your Corefy account manager - this ties to your own Acquirer BIN/Acquirer Merchant ID setup, not something Corefy operates itself. Contact your account manager for details on getting this configured for your account.

Default: false

Allowed values: true / false

set_original_resolution_message

What it does: sets the transaction's originalResolutionMessage to Exactly's own raw result code, instead of Corefy's own mapped message.

When to use: enable it if you need Exactly's exact result code surfaced rather than a normalized message.

Default: false

Allowed values: true / false

send_customer_data

What it does: when disabled, customer name, phone, and date of birth are not sent to Exactly at all.

When to use: disable it only if you have a specific reason not to share this data with Exactly - most integrations leave it on.

Default: true

Allowed values: true / false

send_source_address

What it does: when disabled, the customer's address (country, city, street, post code, region) is not sent to Exactly at all.

When to use: disable it only if you have a specific reason not to share address data with Exactly - most integrations leave it on.

Default: true

Allowed values: true / false

generate_customer_birth_date

What it does: when enabled and no customer.date_of_birth is provided, generates a random date of birth (between 1955 and 2003) instead of leaving it blank.

When to use: enable it if Exactly requires a date of birth on every request and you can't always supply a real one.

Default: false

Allowed values: true / false


Payments processing (connect Provider account, create payment-invoice)

Connect Provider account in Corefy Dashboard

Step 1 - Open connection form

Open Exactly in the provider directory and press Connect at Exactly Provider Overview page in the New connection section. Choose Provider account.

Step 2 - Fill in fields and select settings

  • API Key
  • API URL (optional)

Success

You have connected Exactly Provider account!


First request to Corefy API (MIN)

What it does: creates a payment-invoice and returns a redirect link to Exactly's hosted payment page.

Payment - MIN

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "0dde9e79-2c64-4703-adaf-93d710633401",
      "service": "payment_card_usd_hpp",
      "currency": "USD",
      "amount": 10
    }
  }
}

Payment - MAX

POST /api/payment-invoices

{
  "data": {
    "type": "payment-invoice",
    "attributes": {
      "reference_id": "7976b4ce-fadd-4585-baa0-6b02c65351dc",
      "service": "payment_card_usd_hpp",
      "currency": "USD",
      "amount": 10,
      "customer": {
        "reference_id": "cus_123",
        "email": "johnsmith@gmail.com",
        "phone": "+15551234567",
        "address": {
          "country": "US"
        }
      }
    }
  }
}

customer.email/phone are optional pass-throughs. customer.address.country (or the DEFAULT_LANGUAGE constant below) selects the language on Exactly's hosted page; if neither is set, a platform default is used. This connector also supports EUR, GBP, CHF, PLN, and MXN (use payment_card_<currency>_hpp 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)

  • DEFAULT_LANGUAGE -> customer.address.country - a country code selecting which language Exactly's hosted payment page is shown in, used when the request doesn't include customer.address.country.

Payouts processing (connect Provider account, create payout-invoice)

Connect Provider account in Corefy Dashboard

Uses the same Provider account connection as Payments above.


First request to Corefy API (MIN)

What it does: creates a payout-invoice that sends funds back to a card previously saved via an H2H payment with Save Instant Token enabled - this is a token-based payout, not a raw card number payout.

Payout - MIN

POST /api/payout-invoices

{
  "data": {
    "type": "payout-invoice",
    "attributes": {
      "reference_id": "0dde9e79-2c64-4703-adaf-93d710633401",
      "service": "card_token",
      "currency": "USD",
      "amount": 10,
      "customer": {
        "reference_id": "cus_123",
        "address": {
          "country": "US",
          "city": "New York",
          "full_address": "1st Avenue North"
        }
      },
      "fields": {
        "token": "tok_1a2b3c4d5e6f"
      }
    }
  }
}

Payout - MAX

POST /api/payout-invoices

{
  "data": {
    "type": "payout-invoice",
    "attributes": {
      "reference_id": "7976b4ce-fadd-4585-baa0-6b02c65351dc",
      "service": "card_token",
      "currency": "USD",
      "amount": 10,
      "description": "Refund to original card",
      "customer": {
        "reference_id": "cus_123",
        "address": {
          "country": "US",
          "city": "New York",
          "full_address": "1st Avenue North"
        }
      },
      "fields": {
        "token": "tok_1a2b3c4d5e6f"
      }
    }
  }
}

fields.token (the token payload returned from an earlier H2H payment made with Save Instant Token enabled) is required, as is customer.address - a request missing either is rejected before reaching Exactly. currency should match whatever currency the original tokenized payment used. description is optional.


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


Note

No Corefy-side Options or Constants apply to Exactly payouts. Payouts settle via reconciliation only - Exactly doesn't send a payout callback.


Additional info

H2H Merchant account:

  1. "New API" is a per-connection toggle, off by default. It switches this connection to Exactly's newer integration - required for Apple Pay/Google Pay support, and for the arn_reconcile_delay_hours option above. With it off, the connection uses Exactly's original integration, which doesn't support those.
  2. 3D Secure runs through a third-party MPI service, not something Corefy operates itself, when Use External MPI is enabled - it's tied to your own Acquirer BIN/Acquirer Merchant ID (your own acquirer/3DS setup). These fields are schema-optional and the connector tolerates them being unset, but check with Exactly/your account manager whether your specific setup actually needs them filled in for this mode to work correctly. Acquirer Country Code and Acquirer Country Code Source are additional, rarely-needed fields for this same MPI setup. Contact your Corefy account manager for details on getting this configured for your account.
  3. Callback routing. The callback endpoint is /exactly/callback - this was provided to Exactly when your shop was set up.
  4. Apple Pay and Google Pay are supported (requires New API enabled and the corresponding feature selected on this connection).

    For more information, visit:

Provider account:

  1. Callback routing is automatic for Payments - Corefy generates the callback URL per transaction, nothing to configure in Exactly's own back-office.

FAQ / Troubleshooting

  • Invalid credentials / auth error -> verify credentials for the selected environment and account type
  • Payout rejected for missing address -> customer.address (or equivalent metadata) is required for every Exactly payout
  • Apple Pay / Google Pay feature not working -> confirm New API is enabled on this H2H Merchant account connection
  • Currency or service is not supported -> confirm allowed currencies/features in your Exactly account and in Corefy
  • Not sure which account type to use? -> ask your Corefy account manager

Question

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