ACH Transactions
Overview
You can create ACH transactions via POST /v1/customer/id/{customerId}/transaction.
The examples below demonstrate common collect, send, and refund scenarios.
Resource Access
Production (api.ahrvo.network)
POST https://api.ahrvo.network/banking/us2/v1/customer/id/{customerId}/transaction
Staging (gateway.ahrvo.network)
POST https://gateway.ahrvo.network/banking/us2/v1/customer/id/{customerId}/transaction
Scenarios Covered
• Collect — pre-existing External Account → Ahrvo
• Collect — one-time External Account → Ahrvo
• Collect — Contact (External) → Ahrvo
• Send — Ahrvo → pre-existing External Account
• Send — Ahrvo → one-time External Account
• Refund — ACH (pre-existing parent transaction)
Collect — External Account (pre-existing) → Ahrvo
POST /banking/us2/v1/customer/id/{placeholder}/transaction
Host: <hostname>
Authorization: Bearer <JWT token>
x-api-key: {apiKey}
Content-Type: application/json
{
"amount": "{placeholder}",
"allowDuplicate": true,
"method": "ACH",
"purpose": "{placeholder}",
"source": {
"externalAccount": { "id": "{placeholder}" }
},
"destination": {
"account": { "id": "{placeholder}" }
},
"type": "REGULAR",
"processingDetail": {
"processingMode": "FORWARD",
"companyName": "{placeholder}",
"location": { "id": "{placeholder}" },
"companyDescription": "{placeholder}"
},
"comment": "{placeholder}"
}
Collect — External Account (one-time) → Ahrvo
POST /banking/us2/v1/customer/id/{placeholder}/transaction
Host: <hostname>
Authorization: Bearer <JWT token>
x-api-key: {apiKey}
Content-Type: application/json
{
"amount": "{placeholder}",
"allowDuplicate": true,
"method": "ACH",
"type": "REGULAR",
"purpose": "{placeholder}",
"source": {
"externalAccount": {
"holderName": "{placeholder}",
"accountNumber": "{placeholder}",
"routingNumber": "{placeholder}",
"type": "SAVINGS",
"holderType": "CONSUMER"
}
},
"destination": {
"account": { "id": "{placeholder}" }
},
"processingDetail": {
"processingMode": "FORWARD",
"companyName": "{placeholder}",
"location": { "id": "{placeholder}" },
"companyDescription": "{placeholder}"
},
"comment": "{placeholder}"
}
note
An OFAC verification is triggered on the source prior to processing.
Collect — Contact (External) → Ahrvo
POST /banking/us2/v1/customer/id/{placeholder}/transaction
Host: <hostname>
Authorization: Bearer <JWT token>
x-api-key: {apiKey}
Content-Type: application/json
{
"method": "ACH",
"type": "REGULAR",
"amount": "{placeholder}",
"allowDuplicate": true,
"purpose": "{placeholder}",
"source": {
"contact": {
"id": "{placeholder}",
"externalAccount": { "id": "{placeholder}" }
}
},
"destination": {
"account": { "id": "{placeholder}" }
},
"processingDetail": {
"processingMode": "FORWARD",
"companyName": "{placeholder}",
"location": { "id": "{placeholder}" },
"companyDescription": "{placeholder}"
}
}
Send — Ahrvo → External Account (pre-existing)
POST /banking/us2/v1/customer/id/{placeholder}/transaction
Host: <hostname>
Authorization: Bearer <JWT token>
x-api-key: {apiKey}
Content-Type: application/json
{
"method": "ACH",
"amount": "{placeholder}",
"allowDuplicate": true,
"purpose": "{placeholder}",
"source": {
"account": { "id": "{placeholder}" }
},
"destination": {
"externalAccount": { "id": "{placeholder}" }
},
"type": "REGULAR",
"processingDetail": {
"processingMode": "FORWARD",
"companyName": "{placeholder}",
"companyDescription": "{placeholder}",
"location": { "id": "{placeholder}" },
"authType": "WRITTEN"
},
"scheduleDate": "{placeholder}",
"comment": "{placeholder}",
"txp_addenda":"TXP addenda information to tax authorities"
}
Send — Ahrvo → External Account (one-time)
POST /banking/us2/v1/customer/id/{placeholder}/transaction
Host: <hostname>
Authorization: Bearer <JWT token>
x-api-key: {apiKey}
Content-Type: application/json
{
"amount": "{placeholder}",
"allowDuplicate": true,
"method": "ACH",
"type": "REGULAR",
"purpose": "{placeholder}",
"source": {
"account": { "id": "{placeholder}" }
},
"destination": {
"externalAccount": {
"holderName": "{placeholder}",
"accountNumber": "{placeholder}",
"routingNumber": "{placeholder}",
"type": "SAVINGS",
"holderType": "CONSUMER"
}
},
"processingDetail": {
"processingMode": "FORWARD",
"companyName": "{placeholder}",
"companyDescription": "{placeholder}",
"location": { "id": "{placeholder}" },
"authType": "WRITTEN"
},
"comment": "{placeholder}",
"txp_addenda":"TXP addenda information to tax authorities"
}
Refund — ACH (pre-existing parent)
POST /banking/us2/v1/customer/id/{placeholder}/transaction
Host: <hostname>
Authorization: Bearer <JWT token>
x-api-key: {apiKey}
Content-Type: application/json
{
"method": "ACH",
"type": "REFUND",
"processingDetail": {
"achRefundCompanyName": "{placeholder}",
"achRefundCompanyDescription": "{placeholder}",
"parent": { "id": "{placeholder}" }
},
"amount": "{placeholder}",
"purpose": "{placeholder}",
"reason": "ON_CUSTOMER_REQUEST"
}