Run a sale with bank account details

Our gateway supports the following bank transfer services:
  • Automated Clearing House (ACH): A service that U.S. banks use to transfer funds between accounts.
  • Pre-Authorized Debit (PAD): A service that Canadian banks use to transfer funds between accounts.

Integration steps

  • Create a bank transfer payment.

Before you begin

Bearer tokens

Use our Identity Service to generate a Bearer token to include in the header of your requests. To generate your Bearer token, complete the following steps:
  1. Include your API key in the x-api-key parameter in the header of a POST request.
  2. Send your request to https://identity.payroc.com/authorize.
You need to generate a new Bearer token before the previous Bearer token expires.

Example request

curl --location --request POST 'https://identity.payroc.com/authorize' --header 'x-api-key: <api key>'

Example response

If your request is successful, we return a response that contains your Bearer token, information about its scope, and when it expires.
{
"access_token": "eyJhbGc....adQssw5c",
"expires_in": 3600,
"scope": "service_a service_b",
"token_type": "Bearer"
}

Headers

To create the header of each POST request, you must include the following parameters:
  • Content-Type: Include application/json as the value for this parameter.
  • Authorization: Include your Bearer token in this parameter.
  • Idempotency-Key: Include a UUID v4 to make the request idempotent.
curl
-H "Content-Type: application/json"
-H "Authorization: <Bearer token>"
-H "Idempotency-Key: <UUID v4>"

Errors

If your request is unsuccessful, we return an error. For more information about errors, see Errors.

Create a bank transfer payment

To create a bank transfer payment, send a POST request to our Bank Transfer Payments endpoint. Test endpoint: https://api.uat.payroc.com/v1/bank-transfer-payments
Production endpoint: https://api.payroc.com/v1/bank-transfer-payments

Request parameters

To create the body of your request, use the following parameters:

Header parameters

Body parameters

Example request

Request
curl --request post \
--url https://api.payroc.com/v1/bank-transfer-payments \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: abc123' \
--data '{"processingTerminalId":"1017","order":{"orderId":"orderpop123","description":"sample order","amount":11110,"currency":"USD","breakdown":{"subtotal":10000,"tip":{"type":"percentage","percentage":10},"taxes":[{"name":"VAT","rate":1}]}},"customer":{"notificationLanguage":"en","contactMethods":[{"type":"email","value":"[email protected]"}]},"credentialOnFile":{"tokenize":true},"paymentMethod":{"type":"ach","accountType":"checking","nameOnAccount":"Joe Bloggs","accountNumber":"11101010","routingNumber":"053200983","secCode":"web"}}'

Response fields

If your request is successful, we create the payment and return the following response:

Response Schema

Status Code 201

Successful request. We processed the sale.
Response headers
Response body

Example response

Response
application/json
{
"paymentId": "M2MJOG6O2Y",
"processingTerminalId": "1017",
"order": {
"orderId": "orderpop123",
"dateTime": "2023-07-25T13:08:45.179Z",
"description": "sample order",
"amount": 11110,
"currency": "USD",
"breakdown": {
"subtotal": 10000,
"tip": {
"type": "percentage",
"amount": 1010,
"percentage": 10
},
"taxes": [
{
"name": "VAT",
"rate": 1,
"amount": 100
}
]
}
},
"customer": {
"contactMethods": [
{
"type": "email",
"value": "[email protected]"
}
],
"notificationLanguage": "en"
},
"bankAccount": {
"type": "ach",
"secCode": "web",
"accountType": "checking",
"nameOnAccount": "Joe Bloggs",
"accountNumber": "****1010",
"routingNumber": "053200983",
"secureToken": {
"secureTokenId": "MREF_8d9b44e4-fd9c-45a7-b4b5-5e3d591dd385tK",
"customerName": "Joe Bloggs",
"token": "2967534039611822",
"status": "notValidated",
"link": {
"rel": "self",
"method": "GET",
"href": "https://api.payroc.com/v1/processing-terminals/1017/secure-tokens/MREF_8d9b44e4-fd9c-45a7-b4b5-5e3d591dd385tK"
}
}
},
"transactionResult": {
"type": "payment",
"status": "ready",
"authorizedAmount": 11110,
"currency": "USD",
"responseCode": "A",
"responseMessage": "NoError",
"processorResponseCode": "0"
}
}

Test cases

Before you run test cases, read the Payments page in Test Your Integration.

Run a sale with bank account details

Send a POST request to the following endpoint: POST https://api.uat.payroc.com/v1/bank-transfer-payments Example response
{
"channel": "POS",
"processingTerminalId": "3204001",
"operator": "Davi-CHP",
"order": {
"orderId": "CC-12",
"description": "BT ACH - Sale with CC",
"currency": "USD",
"amount": 9700
},
"paymentMethod": {
"type": "ach",
"accountType": "checking",
"secCode": "web",
"nameOnAccount": "Davi",
"accountNumber": "49100130",
"routingNumber": "292735277"
}
}