Skip to main content

Payment flow with offline payment methods

Payment flow with offline payment methods

Last updated: 21-Dec-2023
Rate this article:

Overview

The following payment methods are supported for the offline payment flow: Purchase Order flow, Wire, Check, and Boleto/Pix

Availability

Available for all 2Checkout accounts.

How E-wallet payments work 

Offline payment methods are payment methods where the order is registered by 2Checkout, however, the shopper finalizes the payment offline. 

This type of payment methods include payments done via bank transfers (Purchase Orders, Wire) or in-store payments like Boleto/Pix

Since these payments take longer to process than online payments, once an order is placed it will remain in 'status = Pending' until the order status is updated by the payment provider. Once the payment is processed by them, then the order status will be updated to 'Complete' in the 2Checkout system.

Purchase Order flow

The Purchase Order flow payment method is available only for payments done by companies. The Purchase order (PO) flow is similar to the Wire payment method, as in the data needed for the completion of the payment will be available both in the API response, as well as in the email sent to the email address used in the Billing Details object.

Payment method object structure

Field name Type Required/Optional Description

Company

String

Required

The name of the company.

AutoApprove

Boolean

Optional

Use AutoApprove = true when you want the order to be automatically approved by the merchant. If false, the order needs to be approved manually from the Merchant Control Panel.

Default value: false.

InternalPONumber

String

Optional

Internal unique ID.

Request example

{
   "Language":"en",
   "Country":"US",
   "CustomerIP":"10.10.10.10",
   "Source":"Website",
   "ExternalCustomerReference":"externalCustomerId",
   "Currency":"USD",
   "MachineId":"123456789",
   "Items":[
      {
         "Code":"133685A7B4",
         "Quantity":1
      }
   ],
   "BillingDetails":{
      "FirstName":"Customer First Name",
      "LastName":"Customer Last Name",
      "CountryCode":"US",
      "State":"California",
      "City":"San Francisco",
      "Address1":"Example Street",
      "Zip":"90210",
      "Email":"example@email.com",
      "Company":"ACME Inc."
   },
   "PaymentDetails":{
      "Type":"PURCHASEORDER",
      "Currency":"USD",
      "PaymentMethod":{
         "AutoApprove":true,
         "InternalPONumber":84864848
      }
   }
}

After the order is placed, it will remain in 'status = Pending' until the payment is completed.

The additional information needed by the shopper to finalize the payment is provided in the PaymentDetails node.

"PaymentDetails":{
      "Type":"WIRE",
      "Currency":"usd",
      "PaymentMethod":{
         "Amount":"24.65",
         "Currency":"usd",
         "PaymentReference":"130738297",
         "RoutingNumber":null,
         "BankAccounts":[
            {
               "BankName":"Silicon Valley Bank USA",
               "BankCountry":"United States of America",
               "BankCity":null,
               "BankAddress":"3003 TASMAN DRIVE, SANTA CLARA, CA  95054, USA",
               "Beneficiary":"Avangate Inc dba 2Checkout",
               "BankAccount":"ABA 121140399 #3300578784",
               "BankAccountIban":null,
               "BankAccountSwiftCode":"SVBKUS6S",
               "Currency":"USD"
            }
         ],
         "Vendor3DSReturnURL":null,
         "Vendor3DSCancelURL":null,
         "InstallmentsNumber":null
      },
      "CustomerIP":"5.12.32.22"
   },

Wire  

Payment method object structure

There are no specific payment method data that is mandatory or optional. 

Request example

{
   "Language":"en",
   "Country":"US",
   "CustomerIP":"10.10.10.10",
   "Source":"Website",
   "ExternalCustomerReference":"externalCustomerId",
   "Currency":"USD",
   "MachineId":"123456789",
   "Items":[
      {
         "Code":"133685A7B4",
         "Quantity":1
      }
   ],
   "BillingDetails":{
      "FirstName":"Customer First Name",
      "LastName":"Customer Last Name",
      "CountryCode":"US",
      "State":"California",
      "City":"San Francisco",
      "Address1":"Example Street",
      "Zip":"90210",
      "Email":"example@email.com"
   },
   "PaymentDetails":{
      "Type":"WIRE",
      "Currency":"USD",
      "PaymentMethod":{

      }
   }
}

After the order is placed, it will remain in 'status = Pending' until the payment is completed.

The additional information needed by the shopper to finalize the payment is provided in the PaymentDetails node. 

"PaymentDetails":{
      "Type":"WIRE",
      "Currency":"usd",
      "PaymentMethod":{
         "Amount":"24.65",
         "Currency":"usd",
         "PaymentReference":"130738297",
         "RoutingNumber":null,
         "BankAccounts":[
            {
               "BankName":"Silicon Valley Bank USA",
               "BankCountry":"United States of America",
               "BankCity":null,
               "BankAddress":"3003 TASMAN DRIVE, SANTA CLARA, CA  95054, USA",
               "Beneficiary":"Avangate Inc dba 2Checkout",
               "BankAccount":"ABA 121140399 #3300578784",
               "BankAccountIban":null,
               "BankAccountSwiftCode":"SVBKUS6S",
               "Currency":"USD"
            }
         ],
         "Vendor3DSReturnURL":null,
         "Vendor3DSCancelURL":null,
         "InstallmentsNumber":null
      },
      "CustomerIP":"5.12.32.22"
   },

Check  

Payment method object structure

There are no specific payment method data that is mandatory or optional. 

Request example

{
   "Language":"en",
   "Country":"US",
   "CustomerIP":"10.10.10.10",
   "Source":"Website",
   "ExternalCustomerReference":"externalCustomerId",
   "Currency":"USD",
   "MachineId":"123456789",
   "Items":[
      {
         "Code":"133685A7B4",
         "Quantity":1
      }
   ],
   "BillingDetails":{
      "FirstName":"Customer First Name",
      "LastName":"Customer Last Name",
      "CountryCode":"US",
      "State":"California",
      "City":"San Francisco",
      "Address1":"Example Street",
      "Zip":"90210",
      "Email":"example@email.com"
   },
   "PaymentDetails":{
      "Type":"CHECK",
      "Currency":"USD",
      "PaymentMethod":{

      }
   }
}

After the order is placed, it will remain in 'status = Pending' until the payment is completed.

The additional information needed by the shopper to finalize the payment is provided via email. 

Integration test cases

  1. Build a request with all the relevant information to place a new order. Make sure that when the order is sent in the API the response contains an order object (order was placed successfully).
  2. Make sure that you display the information needed by the shopper to finalize the payment.
  3. If you have any additional webhook integrations, make sure that the webhooks are correctly configured and that the notifications are received and processed successfully. 
Rate this article:

Need help?

Do you have a question? If you didn’t find the answer you are looking for in our documentation, you can contact our Support teams for more information. If you have a technical issue or question, please contact us. We are happy to help.

Not yet a Verifone customer?

We’ll help you choose the right payment solution for your business, wherever you want to sell, in-person or online. Our team of experts will happily discuss your needs.

Verifone logo