Payment flow with offline payment methods
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
- 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).
- Make sure that you display the information needed by the shopper to finalize the payment.
- If you have any additional webhook integrations, make sure that the webhooks are correctly configured and that the notifications are received and processed successfully.