Client VCC Decisioning

Client VCC Decisioning is designed to allow ConnexPay clients with proper permissions to have the ability to decision authorizations directed to them, rather than Connexpay decisioning the authorizations.

What is Client VCC Decisioning?

Client VCC Decisioning uses a synchronous webhook, to allow clients to approve or decline authorization requests in real time. This functionality is only available for clients using Central or MVB Bank.

Client VCC Decisioning Setup

As a client, you will need to provide a webhook endpoint that can be added within your account settings. You can navigate to your account settings by logging into Bridge and clicking the gear icon in the upper right-hand corner, then clicking on VCC Decisioning (this section will only be visible if the permission has been granted to your account) within the account settings options. When a card is used to make a purchase, we will send the authorization request to the provided endpoint for your authorization decision.

Within the account settings, you will also need to choose your timeout handling. If we don't receive your response within 3 seconds, we will use the timeout handling selection to automatically decision the authorization. Your options will be to automatically Approve or Decline the authorization.

Additionally, you will be required to create a username and password in your account settings that we will use for basic authentication on the webhook. This username and password will be sent in the header of the request, so that you can verify our identity. Below is a code example for decoding the basic Authorization.

            var authHeader = AuthenticationHeaderValue.Parse(context.Request.Headers["Authorization"]);
            var credentialBytes = Convert.FromBase64String(authHeader.Parameter);
            var credentials = Encoding.UTF8.GetString(credentialBytes).Split(':', 2);
            var username = credentials[0];
            var password = credentials[1];

Prior to submitting this data, we will need to open up access and confirm connectivity to your provided endpoint.

Authorization requests

We will send the authorization request to your provided endpoint.

FieldTypeDescription
amountdecimalAmount of transaction
cardGuidstringUnique token that represents the issued card brand and type
currencyCodestringType of currency
networkstringVisa or MasterCard
cardAcceptorNamestringCard acceptor merchant name
cardAcceptorMidstringUnique identifier for acceptor merchant
cardAcceptorMccstringMerchant category code (MCC)
cardAcceptorCitystringCard acceptor city
cardAcceptorStatestringCard acceptor state
cardAcceptorZipstringCard acceptor zip
cardAcceptorCountrystringCard acceptor country
availableBalancedecimalAmount remaining on the card after the specific auth event
transactionCurrencyCodestringType of currency where auth originated
authTypestringAuth or Refund Auth
CVVMatchbooleanTrue or False if there is a CVV Match
AVSstringStreet Address and Zip Code/Postal Code
localTransactionAmountdecimalAmount of transaction in the local currency where the auth originated
retirevalReferenceNumberstringUnique identifier generated by the Card Network
transactionIdstringUnique identifier that will tie to the id in subsequent webhook events
{
  "amount": 132.23,
  "cardGuid": "ss322d33-1sd3-32sd-d2dd-21s32ddwdss233",
  "currencyCode": "840",
  "network": "VISA",
  "cardAcceptorName": "SPIRIT AIR VISA",
  "cardAcceptorMid": "1234567890",
  "cardAcceptorMcc": "3260",
  "cardAcceptorCity": "ALPHARETTA",
  "cardAcceptorState": "GA",
  "cardAcceptorZip": "30005",
  "cardAcceptorCountry": "US",
  "availableBalance": 232.23,
  "transactionCurrencyCode":"840",
  "authType":"Auth",
  "CVVMatch":false,
  "AVS":"91001    1521 BURTON AVE.",
  "localTransactionAmount":5,
  "retrievalReferenceNumber":"043340",
  "transactionID": "97a0fd5b-3e82-acde-0d3599006234"
}

Authorization response

Our webhook accepts JSON responses with the following parameters:

FieldTypeDescription
approvedbooleanField will require a true or false response
{
  "approved": false,
}
{
  "approved": true,
}