Logo
Home

Updates to the Payments APIs for QuickBooks Online may affect your application

What is happening?

On August 1, 2017, we announced changes to the QuickBooks Online Payments API and QuickBooks Merchant Services Payments API.

With these changes, beginning February 1, 2018, the QuickBooks Online Payments API and QuickBooks Merchant Services Payments API will require that the ecommerce and mobile indicators for all purchases made from a handheld device (smartphone or tablet) to be set within the application. This will affect any purchase whether the card number is keyed in, swiped, or fetched from a pass-through digital wallet like Apple Pay or a staged digital wallet like PayPal/Google Wallet.

Which entities are impacted?

  • QuickBooks Online Payments API – Charge create and Charge Capture entities.
    The updated fields are described under the context field in the Payments API Reference.  
  • QuickBooks Merchant Services – CreditCardCharge request.
    The updated fields are described here.

How does this affect you?

  • QuickBooks Online Payments: In the charge create and capture API request, the isEcommerce and mobile indicators were previously optional. Beginning February 1, 2018, these indicators must be set within the API or your transaction will fail.
  • QuickBooks Merchant Services: The IsECommerce and IsMobile indicators are new fields within the charge and payments APIs. Beginning February 1, 2018, these indicators must be set within the API or your transaction will fail.

What do you need to do?

For QuickBooks Online Payments API, start passing mobile and isEcommerce fields within the context field of the payload, refer to the sample below-

Sample Charge Request Before:

{

 “amount”: “10.55”,

 “card”: {

   “expYear”: “2020”,

   “expMonth”: “02”,

   “address”: {

     “region”: “CA”,

     “postalCode”: “94086”,

     “streetAddress”: “1130 Kifer Rd”,

     “country”: “US”,

     “city”: “Sunnyvale”

   },

   “name”: “emulate=0”,

   “cvc”: “123”,

   “number”: “4111111111111111”

 },

 “currency”: “USD”

}

Sample Charge Request After:

{

 “amount”: “10.55”,

 “card”: {

   “expYear”: “2020”,

   “expMonth”: “02”,

   “address”: {

     “region”: “CA”,

     “postalCode”: “94086”,

     “streetAddress”: “1130 Kifer Rd”,

     “country”: “US”,

     “city”: “Sunnyvale”

   },

   “name”: “emulate=0”,

   “cvc”: “123”,

   “number”: “4111111111111111”

 },

 “currency”: “USD”,

 “context”: {

“mobile”: “false”,

“isEcommerce”: “true”

}

}

For QBMS, start passing IsMobile and IsECommerce tags within the request xml, refer to the sample below-

Sample Charge Request Before:

<?xml version=”1.0″ encoding=”UTF-8″?>

<?qbmsxml version=”4.5″?>

<QBMSXML>

  <SignonMsgsRq>

     <SignonDesktopRq>

        <ClientDateTime>2017-12-17T14:57:00</ClientDateTime>

        <ApplicationLogin>XXXXXX</ApplicationLogin>

        <ConnectionTicket>XXXXXXXX</ConnectionTicket>

    </SignonDesktopRq>

  </SignonMsgsRq>

  <QBMSXMLMsgsRq>

     <CustomerCreditCardChargeRq>

        <TransRequestID>XXXXXXXXXX</TransRequestID>

        <CreditCardNumber>4111111111111111</CreditCardNumber>

        <ExpirationMonth>1</ExpirationMonth>

        <ExpirationYear>2018</ExpirationYear>

        <Amount>21.21</Amount>

     </CustomerCreditCardChargeRq>

  </QBMSXMLMsgsRq>

</QBMSXML>

Sample Charge Request After:

<?xml version=”1.0″ encoding=”UTF-8″?>

<?qbmsxml version=”4.5″?>

<QBMSXML>

  <SignonMsgsRq>

     <SignonDesktopRq>

        <ClientDateTime>2017-12-17T14:57:00</ClientDateTime>

        <ApplicationLogin>XXXXXX</ApplicationLogin>

        <ConnectionTicket>XXXXXXXX</ConnectionTicket>

    </SignonDesktopRq>

  </SignonMsgsRq>

  <QBMSXMLMsgsRq>

     <CustomerCreditCardChargeRq>

        <TransRequestID>XXXXXXXXXX</TransRequestID>

        <CreditCardNumber>4111111111111111</CreditCardNumber>

        <ExpirationMonth>1</ExpirationMonth>

        <ExpirationYear>2018</ExpirationYear>

        <IsECommerce>true</IsECommerce>

        <IsMobile>false</IsMobile>

        <Amount>21.21</Amount>

     </CustomerCreditCardChargeRq>

  </QBMSXMLMsgsRq>

</QBMSXML>

Addition Samples available in our github:

How can I test this?

We have enabled these changes in the sandbox environment for you to test. Please go to the Intuit Developer sandbox and be sure the ecommerce and mobile indicator flag is set if transactions come in from handheld devices. You will need to activate this in your production application prior to February 1, 2018. For a full explanation of the changes, please review the documentation.

Any other questions?

Please contact us with any questions or concerns.

Thanks!
Intuit Developer


Posted

in

,

by

Tags:

Comments

4 responses to “Updates to the Payments APIs for QuickBooks Online may affect your application”

  1. Randy Avatar
    Randy

    The above XML generates a “(400) Bad Request error” when a valid testing application login, testing connection ticket and TransRequestID are provided and it is submitted at the XML API Explorer for Payments: https://developer.intuit.com/apiexplorer/qbms

  2. Shaler Avatar
    Shaler

    When will the qbmsconnector with these changes be released?

  3. Artem Avatar
    Artem

    We got “(400) Bad Request” with these IsECommerce and IsMobile nodes. Are they supported only from February 1, 2018 and this behavior is expected?

  4. Robert Avatar
    Robert

    I’m also getting “(400) Bad Request” in the sandbox

    When I tried adding these parameters to production I get “Error: Code 200 returned from payment processor: Bad Request”

Leave a Reply

Your email address will not be published. Required fields are marked *