/transmit

On successful transactions, queue POST /transmit.


❗️

Prerequisites to invoke this API:

FlexFactor will build your custom risk model based on your successful transactions. POST /transmit doesn't require an answer, so this 'fire and forget' call doesn't add latency to your transaction.


You can alternatively send us the copies of your transactions through a daily batch. Please note that copies of transactions must be sent within 24 hours maximum.

When using SFTP batches:

  • Each Merchant account will have unique SFTP credentials.
  • SFTP keys will be available within your merchant portal.
  • Limit each SFTP file to 2000 records or less.
  • file name must contain the prefix transmit_ to be picked up


Request parameters

isDeclined

bool

required

orderId

string

required

Your internal order ID.

orderSource

string

optional

Source of the order
E.g.: ecommerce, installment, etc.

sequenceNumber

string

required
for batch via SFTP

Numerical position of that transaction within the batch.
Starting from 1.

isMIT

bool

required

true for merchant-initiated transactions.
When true, requires specific MIT fields.

transaction

object

required

See transaction fields below.

payer

object

required

See payer fields below.

paymentMethod

object

required

See paymentMethod fields below.

billingInformation

object

optional

See billingInformation fields below.

shippingInformation

object

optional

See shippingInformation fields below.

merchant

object

required
for partners

See merchant fields below

deviceDetails

object

optional

See deviceDetails fields below

mid

string

required
for partners

Your FlexFactor Merchant Identification Number. Get your Mid

orderItems

object array

optional

See orderItems fields below.

additionalFields

object array

optional

See additionalFields fields below.

Try it right now: check out the /transmit Reference. or the Postman Collection


Additional parameters for MIT

A request for Merchant Initiated Transaction (e.g.: subscriptions) requires the additional following fields:

isMIT

bool

required

true for merchant-initiated transactions.
When true, requires specific MIT fields below.

isRecurring

bool

required
for MIT

true for subscriptions.

siteUrl

string

required
for MIT

Website linked to the descriptor of the subscription.

subscription

object

required
for MIT

See subscription fields below.

threeDSecure

object

required
for MIT

See 3DSecure fields below.


Detailed object parameters:

transaction

Required object

id

string

required

External transaction identifier in the format of a GUID

timestampUtc

datetime

required

Date and time of the transaction.

timezoneUtcOffset

integer

required

UTC offset of the timezone.

transactionType

string

optional

E.g.: 'Auth', 'Capture', 'Void'

amount

integer

required

Amount of the transaction in cents.
E.g. $19.99 -> '1999'

currency

string

required

ISO 4217 currency code.

responseCode

string

required

Response code received from the gateway.

responseDescription

string

optional

Description of the response.

responseStatus

string

optional

E.g.: Approved, Declined, Voided, Refunded, Chargeback, etc.

responseSubStatus

string

optional

Sub-status of the response.

responseCodeSource

string

required
(*)

This is the source of the code from the original transaction
E.g.: "nmi", "Paypal"

processorName

string

optional

Name of the processor.

avsResultCode

string

required

Address Verification Service result code.

cvvResultCode

string

required

Card Verification Value result code.

cavvResultCode

string

required
(*)

Cardholder Authentication Verification Value result code.

cardNotPresent

bool

required

Indicates if the card was present during the transaction.

(*) If this value cannot be provided, send 'NA'

payer

Required object

email

string

required

phone

string

optional

id

string

optional

External ID

birthdate

datetime

optional

billingInformation

Optional object.

firstName

string

required
if this object is provided

lastName

string

required
if this object is provided

phone

string

optional

country

string

required
if this object is provided

countryCode

string

required
if this object is provided

ISO 3166-1 alpha-2 country code (2-letter)

addressLine1

string

required
if this object is provided

addressLine2

string

optional

state

string

optional

2-letter and 2-digit codes from the ANSI standard INCITS 38:2009 (supersedes FIPS 5-2)

city

string

required
if this object is provided

zipCode

string

required
if this object is provided

5 or 9 digits

paymentMethod

Required object.

holderName

string

required

cardType

string

required

E.g.: Credit, Debit, Prepaid Card

cardBrand

string

required

E.g.: VISA, Mastercard, AMEX, etc.

cardCountry

string

required

ISO 3166-1 alpha-2 country code (2-letter)

cardIssuer

string

optional

cardLevel

string

optional

cardFingerprint

string

optional

expirationMonth

integer

required

expirationYear

integer

required

cardBinNumber

string

required

6 character string.

cardLast4Digits

string

required

4 character string.

merchant

Required object for partners only.

id

string

required
if this object is provided

External ID

name

string

optional

mcc

integer

required
if this object is provided

Merchant Category Codes used to identify the type of business in which a merchant is engaged.

country

string

required
if this object is provided


deviceDetails

Optional object.

deviceType

string

required
if this object is provided

Type of device used for that transaction (e.g., 'mobile', 'laptop', 'tablet')

deviceName

string

required
if this object is provided

Name of the device (e.g., 'iPhone 12', 'Samsung Galaxy S21')

deviceOS

string

required
if this object is provided

Operating system of the device (e.g., 'iOS 14', 'Android 11')

browser

string

required
if this object is provided

Name of the browser (e.g., 'Chrome', 'Safari')

userAgent

string

required
if this object is provided

User agent string (a detailed string provided by the browser that identifies the browser, its version, and the operating system)


subscription

Required object when*isMIT** and isRecurring are true.*

subscriptionId

string

required
if this object is provided

schemeTransactionId

string

required
if this object is provided

Unique reference of the transaction returned by authorisation server of the issuer.
Allows to chain a MIT (Merchant Initiated Transaction) to a initial CIT (Customer Initiated Transaction).

schemeBrand

string

required
if this object is provided

Card/scheme brand associated with the subscription.
Will generally be similar to the cardBrand value in most cases, but might be different in some edge cases.
E.g.: Visa

interval

string

required
if this object is provided

E.g.: 'daily', 'weekly', 'monthly', 'quarterly', 'yearly'.

price

int

required
if this object is provided

Amount in cents

currency

string

required
if this object is provided

paymentNumber

integer

optional

totalPayments

integer

optional

threeDSecure

Required object when*isMIT** and isRecurring are true.*

threeDsVersion

string

optional

Protocol version for the card payment authentication.
E.g.: '1.0.2' '2.1.0' '2.2.0'

ecommerceIndicator

string

required
if this object is provided

The indication of an online commerce transaction.

authenticationValue

string

required
if this object is provided

The encrypted code from the cardholder's bank.

directoryServerTransactionId

string

required
if this object is provided

The unique ID for the transaction with the bank.

xid

string

optional

Transaction identifier generated by the 3D Secure system.

authenticationValueAlgorithm

string

optional

The encryption algorithm used to secure the payment.
E.g.: SHA-256

directoryResponseStatus

string

optional

The response status code from the bank's directory.
E.g.: 'Y'

authenticationResponseStatus

string

optional

The response status code for the payment authentication.
E.g.: 'Y'

enrolled

string

optional

The card's enrollment status in 3D Secure.
E.g.: 'Y'

orderItems

Optional object.

sku

string

optional

The SKU of the item.

name

string

optional

The name of the item.

description

string

optional

The description of the item.

amount

integer

optional

The amount of the item.

discountAmount

integer

optional

The discount amount on the item.

tax

integer

optional

The tax on the item.

discountType

string

optional

The discount type on the item.

quantity

string

optional

The quantity of this item.

shippingInformation

Optional object.

firstName

string

required
if this object is provided

lastName

string

required
if this object is provided

phone

string

optional

country

string

required
if this object is provided

countryCode

string

required
if this object is provided

ISO 3166-1 alpha-2 country code (2-letter)

addressLine1

string

required
if this object is provided

addressLine2

string

optional

state

string

optional

2-letter and 2-digit codes from the ANSI standard INCITS 38:2009 (supersedes FIPS 5-2)

city

string

required
if this object is provided

zipCode

string

required
if this object is provided

5 or 9 digits

additionalFields

Optional array of object.

key

string

optional

Description of the additional information.

value

string

optional

Content of the additional information.


Response

Once transmitted, our API will respond with a transaction key.
This key can be used to update the order object, for example with its outcome.

transmitId

Response transaction key.




Payload examples

Request example


curl --request POST \
     --url https://api-sandbox.flex-charge.com/v1/transmit \
     --header 'Authorization: abc123def456' \ //replace with bearer returned by oauth2
     --header 'accept: application/json' \
     --header 'content-type: application/*+json' \
     --data '
{
  "transaction": {
    "id": "3478613",
    "timestampUtc": "0001-01-01T00:00:00Z",
    "timezoneUtcOffset": 0,
    "amount": 19975,
    "currency": "USD",
    "responseCode": "203",
    "avsResultCode": "M",
    "processorName": "Acme Payments",
    "cavvResultCode": "2",
    "responseCodeSource": "NMI",
    "responseDescription": "Activity limit exceeded",
    "responseStatus": "DECLINED",
    "transactionType": "CAPTURE"
  },
  "payer": {
    "id": "customer123",
    "email": "[email protected]",
    "phone": "+1 555-123-4567",
    "birthdate": "1990-01-01"
  },
  "orderItems": [
    {
      "sku": "SKU123",
      "name": "Product 1",
      "description": "Description of Product 1",
      "amount": 20000,
      "discountAmount": 0,
      "tax": 100,
      "quantity": 2
    },
    {
      "sku": "SKU456",
      "name": "Product 2",
      "description": "Description of Product 2",
      "amount": 10000,
      "discountAmount": 0,
      "tax": 50,
      "quantity": 1
    }
  ],
  "shippingInformation": {
    "firstName": "John",
    "lastName": "Doe",
    "phone": "+1 555-123-4567",
    "country": "United States",
    "countryCode": "US",
    "addressLine1": "123 Main St.",
    "city": "CA",
    "zipcode": "94111"
  },
  "merchant": {
    "country": "US",
    "mcc": 1234,
    "id": "merchant123",
    "name": "Acme Inc."
  },
  "deviceDetails": {
    "deviceType": "mobile",
    "deviceName": "iPhone 12",
    "deviceOS": "iOS 14",
    "browser": "Safari",
    "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1"
  },
  "paymentMethod": {
    "holderName": "John Doe",
    "cardType": "CREDIT",
    "cardBrand": "VISA",
    "cardCountry": "United States",
    "cardIssuer": "Acme Bank",
    "cardFingerprint": "abcd1234",
    "expirationMonth": 2028,
    "expirationYear": 12,
    "cardBinNumber": "123456",
    "cardLast4Digits": "7890",
  },
  "billingInformation": {
    "firstName": "John",
    "lastName": "Doe",
    "phone": "+1 555-123-4567",
    "country": "United States",
    "countryCode": "US",
    "addressLine1": "123 Main St.",
    "state": "CA",
    "city": "San Francisco",
    "zipcode": "94111"
  },
  "mid": "a8a0a74d-2509-4cbc-9eb5-879c7a34eb45",
  "orderId": "ed44736a-b5fa-4bc2-bfb9-0e873bc09511",
 
}
'
curl --request POST \
     --url https://api-sandbox.flex-charge.com/v1/evaluate \
     --header 'Authorization: abc123def456' \ //replace with bearer returned by oauth2
     --header 'accept: application/json' \
     --header 'content-type: application/*+json' \
     --data '
{

	"isMIT": true,
	"isRecurring": true,
	"subscription": {
		"subscriptionId": "sub_123456",
		"schemeTransactionId": "txn_789012",
		"schemeBrand": "Visa",
		"interval": "Monthly",
		"price": 2599,
		"currency": "USD",
		"paymentNumber": 2,
		"totalPayments": 12
	}, 
	"threeDSecure": {
		"threeDsVersion": "2.1.0",
		"ecommerceIndicator": "02",
		"authenticationValue": "abcdefg12345",
		"directoryServerTransactionId": "ds_987654",
		"xid": "xid_246810",
		"authenticationValueAlgorithm": "SHA-256",
		"directoryResponseStatus": "Y",
		"authenticationResponseStatus": "Y",
		"enrolled": "Y"
	},
  "transaction": {
    "id": "3478613",
    "timestampUtc": "0001-01-01T00:00:00Z",
    "timezoneUtcOffset": 0,
    "amount": 19975,
    "currency": "USD",
    "responseCode": "203",
    "avsResultCode": "M",
    "cvvResultCode": "NA",
    "processorName": "Acme Payments",
    "cavvResultCode": "2",
    "responseCodeSource": "NMI",
    "responseDescription": "Activity limit exceeded",
    "responseStatus": "DECLINED",
    "transactionType": "CAPTURE"
  },
  "payer": {
    "id": "customer123",
    "email": "[email protected]",
    "phone": "+1 555-123-4567",
    "birthdate": "1990-01-01"
  },
  "orderItems": [
    {
      "sku": "SKU123",
      "name": "Subscription 1",
      "description": "Description of Subscription 1",
      "amount": 20000,
      "discountAmount": 0,
      "tax": 100,
      "quantity": 1
    },
    {
      "sku": "SKU456",
      "name": "Subscription 2",
      "description": "Description of Subscription 2",
      "amount": 10000,
      "discountAmount": 0,
      "tax": 50,
      "quantity": 1
    }
  ],
  "shippingInformation": {
    "firstName": "John",
    "lastName": "Doe",
    "phone": "+1 555-123-4567",
    "country": "United States",
    "countryCode": "US",
    "addressLine1": "123 Main St.",
    "city": "CA",
    "zipcode": "94111"
  },
  "merchant": {
    "country": "US",
    "mcc": 1234,
    "id": "merchant123",
    "name": "Acme Inc."
  },
  "paymentMethod": {
    "holderName": "John Doe",
    "cardType": "CREDIT",
    "cardBrand": "VISA",
    "cardCountry": "United States",
    "cardIssuer": "Acme Bank",
    "cardFingerprint": "abcd1234",
    "expirationMonth": 2028,
    "expirationYear": 12,
    "cardBinNumber": "123456",
    "cardLast4Digits": "7890",
   
  },
  "billingInformation": {
    "firstName": "John",
    "lastName": "Doe",
    "phone": "+1 555-123-4567",
    "country": "United States",
    "countryCode": "US",
    "addressLine1": "123 Main St.",
    "state": "CA",
    "city": "San Francisco",
    "zipcode": "94111"
  },
  "mid": "a8a0a74d-2509-4cbc-9eb5-879c7a34eb45",
  "orderId": "ed44736a-b5fa-4bc2-bfb9-0e873bc09511",
}
'
//file name: 'transmit_{yourfilename}'
//any file without the prefix will not be picked up

{
  "mid": "123456789-987654321", //replace with your mid
  "authorizationToken": "Bearer abc123def456", //replace with bearer returned by oauth2
  "requests": [
    {
      //first transaction copy: approved MIT
      "sequenceNumber": 1, // The numerical position of the transaction within the batch.
      "IsDeclined": false,
      "OrderId": "123456789", //must be unique even for test calls
      "OrderSource": null,
      "IsMIT": true,
      "IsRecurring": true,
      "SiteUrl": "https://example.com", //Website linked to the descriptor of the subscription.
      "Transaction": {
        "Id": "6463077f894b1f71280001eb",
        "TimestampUtc": "2023-01-01T00:00:00Z",
        "TimezoneUtcOffset": 0,
        "TransactionType": null,
        "Amount": 10000, //in cents
        "Currency": "USD",
        "ResponseCode": "100",
        "AvsResultCode": "Y",
        "CvvResultCode": "M",
        "ProcessorName": null,
        "CardNotPresent": true,
        "CavvResultCode": "NA",
        "ResponseStatus": "APPROVED",
        "ResponseSubStatus": null,
        "ResponseCodeSource": "NMI",
        "ResponseDescription": null
      },
      "Payer": {
        "Id": "6463077d894b1f71280001e6",
        "Email": "[email protected]",
        "Phone": null,
        "Birthdate": null
      },
      "Subscription": {
        "Price": 5000, //in cents
        "Currency": "USD",
        "Interval": "30",
        "SchemeBrand": "Visa",
        "PaymentNumber": null,
        "TotalPayments": null,
        "SubscriptionId": "123456789",
        "SchemeTransactionId": "6463077f894b1f71280001eb" //Unique reference of the transaction returned by authorization server of the issuer. 
      },
      "PaymentMethod": {
        "HolderName": "John Doe",
        "CardType": "CREDIT",
        "CardBrand": "VISA",
        "CardLevel": null,
        "CardIssuer": null,
        "CardCountry": "US",
        "CardBinNumber": "123456",
        "ExpirationYear": 2025,
        "CardFingerprint": null,
        "CardLast4Digits": "7890",
        "ExpirationMonth": 12
      },
      "BillingInformation": {
        "City": "New York",
        "Phone": null,
        "State": null,
        "Country": "US",
        "Zipcode": "12345",
        "LastName": "Doe",
        "FirstName": "John",
        "CountryCode": "US",
        "AddressLine1": "123 Main Street",
        "AddressLine2": null
      },
      "ShippingInformation": null,
      "merchant": {
        "country": "US",
        "mcc": 5678,
        "id": "merchant456",
        "name": "XYZ Inc."
      },
      "OrderItems": null,
      "AdditionalFields": null
    },
    
    {
      //second transaction copy: declined CIT
      "sequenceNumber": 2, // The numerical position of the transaction within the batch.
      "IsDeclined": true,
      "orderId": "ed44736a-b5fa-4bc2-bfb9-0e873bc09512", //must be unique even for test calls
      "OrderSource": null,
      "isMIT": false,
      "SiteUrl": "https://example.com",
      "transaction": {
        "id": "1234567",
        "timestampUtc": "0001-01-01T00:00:00Z",
        "timezoneUtcOffset": 0,
        "amount": 14999, //in cents
        "currency": "USD",
        "responseCode": "204",
        "avsResultCode": "N",
        "cvvResultCode": "M",
        "processorName": "XYZ Payments",
        "cavvResultCode": "1",
        "responseCodeSource": "ABC Payments",
        "responseDescription": "Insufficient funds",
        "responseStatus": "DECLINED",
        "transactionType": "AUTHORIZE"
      },
      "payer": {
        "id": "customer456",
        "email": "[email protected]",
        "phone": "+1 555-987-6543",
        "birthdate": "1985-05-05"
      },
      "paymentMethod": {
        "holderName": "Jane Doe",
        "cardType": "CREDIT",
        "cardBrand": "MASTERCARD",
        "cardCountry": "United States",
        "cardIssuer": "XYZ Bank",
        "cardFingerprint": "efgh5678",
        "expirationMonth": 2028,
        "expirationYear": 12,
        "cardBinNumber": "123456",
        "cardLast4Digits": "7890"
      },
      "billingInformation": {
        "firstName": "Jane",
        "lastName": "Doe",
        "phone": "+1 555-987-6543",
        "country": "United States",
        "countryCode": "US",
        "addressLine1": "456 Oak St.",
        "city": "NY",
        "zipcode": "10001"
      },
      "shippingInformation": {
        "firstName": "Jane",
        "lastName": "Doe",
        "phone": "+1 555-987-6543",
        "country": "United States",
        "countryCode": "US",
        "addressLine1": "456 Oak St.",
        "city": "NY",
        "zipcode": "10001"
      },
      "merchant": {
        "country": "US",
        "mcc": 5678,
        "id": "merchant456",
        "name": "XYZ Inc."
      },
      "orderItems": [
        {
          "sku": "SKU789",
          "name": "Product 3",
          "description": "Description of Product 3",
          "amount": 30000,
          "discountAmount": 0,
          "tax": 150,
          "quantity": 2
        },
        {
          "sku": "SKU012",
          "name": "Product 4",
          "description": "Description of Product 4",
          "amount": 25000,
          "discountAmount": 0,
          "tax": 125,
          "quantity": 1
        }
      ],
      "AdditionalFields": null
  }
}
]


Response example


{ 
    "result" : "success",
    "error":{},
    "transmitId":"{{$guid}}"
}

What’s Next