Payment Processors

Peach allows clients to bring their own/partner bank to process ACH payments. If configured, the Peach system will create NACHA files and upload them to the provided destination (SFTP). The Peach system will download NACHA return files from the same destination. Make sure you coordinate this set up with the Peach team.

Create payment processor

Securityoauth2 or bearerAuth or apiKeyHeader
Request
query Parameters
skipConnectionTest
boolean
Default: false

Skip SFTP connection test. This is not recommended - use only after consulting with Peach.

Request Body schema: application/json
required
paymentTypes
required
Array of strings

The payment types that will be processed by the payment processor. Currently, ach is supported only.

Items Enum: "ach" "debitCard" "creditCard"
processorType
required
string

The type of payment processor.

  • achDirectUS - Peach system will create NACHA files and upload directly to lender’s bank SFTP.
Value: "achDirectUS"
id
string
createdAt
string <date-time>
updatedAt
string or null <date-time>
deletedAt
string or null <date-time>
externalId
string or null [ 1 .. 50 ] characters

A lender's identifier for an object.

After the object is successfully created, a lender can use ID or externalId identifiers to fetch the object.

To fetch the object using externalId you need to add ext- to the URL.

Note: Don't add ext- to the identifier value. For example: if the external identifier is ABCDE, then pass externalId=ACBCE and NOT ext-ABCDE when creating the object.

processorName
required
string

The name of the payment processor. For example: Silicon Valley Bank or Wells Fargo.

status
required
string

The status of the payment processor.

  • draft - the payment processor is in the process of being configured and not ready to be used.
  • active - the payment processor is ready to process payments.
  • deprecated - the payment processor was deprecated, and new payments cannot be processed.
Enum: "draft" "active" "deprecated"
isDefault
boolean
Default: false

Mark the payment processor as default for the company. Only one payment processor can be default. If a new payment processor is created with isDefault=true and there is another payment processor with isDefault=true, the system will set isDefault=false for the other/existing processor.

timezone
required
string

The timezone used by this payment processor. For example: "America/Los_Angeles"

achCutoff
string <time>

The cutoff time for ACH processing, in the payment processor's timezone. Use 24-hour format. For example: "19:00"

achSameDayCutoff
string <time>

The cutoff time for ACH same day processing, in the payment processor's timezone. Use 24-hour format. For example: "10:00"

achFileHeaderImmediateDestination
string

Data element that is part of the file header record. For example: 121140399.

achFileHeaderImmediateOrigin
string

Data element that is part of the file header record. For example: 1456726789.

achFileHeaderImmediateDestinationName
string

Data element that is part of the file header record. For example: SILICON VALLEY BANK.

achFileHeaderImmediateOriginName
string

Data element that is part of the file header record. For example: PEACH FINANCE INC.

achBatchHeaderCompanyName
string

Data element that is part of the batch header record. For example: PEACH FIN ACH.

achBatchHeaderCompanyId
string

Data element that is part of the batch header record. For example: 2837461011.

achBatchHeaderOriginatingDFIId
string

Data element that is part of the batch header record. For example: 12773923.

If the value is NOT provided (aka null or empty) as part of the configuration, the system will automatically set this value to achFileHeaderImmediateDestination without the last digits. For example: if achFileHeaderImmediateDestination=121140399, the system will set achBatchHeaderOriginatingDFIId=12114039.

achFeeType
string

How the fee is charged by the payment processor. If the full amount is transferred, and fees are charged monthly, use gross. If fees are deducted from the amount transferred, use net.

Enum: "gross" "net"
achFeeAmount
number <float>

The fee charged by the payment processor for regular ACH transactions. For example: 0.05

achSameDayFeeAmount
number <float>

The fee charged by the payment processor for same day ACH transactions. For example: 0.50

achSECCode
string
Default: "PPD"

The Standard Entry Class Code within ACH.

Enum: "CCD" "PPD" "WEB"
sftpHostname
string

The hostname for SFTP. Host name should not contain a scheme, so don't put sftp:// on the front. You may optionally specify a port like so: example.com:222. If no port is supplied a default of 22 will be used.

sftpAccessMethod
required
string
Default: "usernamePassword"

The method used to access the sftpHostname.

  • If usernamePassword, then sftpUsername and sftpPassword must be provided.
  • If keys, then sftpSSHPeachPrivateKey and sftpSSHPeachPublicKey will be created by peach.
Enum: "usernamePassword" "keys" "disabled"
sftpUsername
string or null

The username for SFTP.

sftpPassword
string or null

The password for SFTP.

sftpSSHDisabledAlgorithms
object or null

A json object of any algorithms that need to be disabled when accessing sftpHostname with a private key. This should be null in most scenarios.

sftpCdDirOutbox
string

The folder where files (e.g. ACH instructions) will be uploaded. The system will change directory into this folder before performing the upload.

sftpCdDirInbox
string

The folder where files (e.g. ACH returns) will be downloaded from. The system will change directory into this folder before performing the download.

sftpAchConfirmationFileNameRegex
string

The name of the ACH confirmation file. The format is a regular expression. If you are not sure how to set up the regular expression, please contact the Peach team by providing a few examples of file names.

If the value is not provided, we assume that the processor doesn't support ACH confirmation files and any upload of an ACH file is considered as successful.

sftpAchReturnFileNameRegex
required
string

The name of the ACH return file. The format is a regular expression. If you are not sure how to set up the regular expression, please contact the Peach team by providing a few examples of file names.

isFileNameDefaultConvention
boolean
Default: true
  • If true, files (e.g. ACH) will be named based on the ACHP_MMDDYYYYHHMM convention. For example: ACHP_110320211305.
  • If false, files (e.g. ACH) will be named based on a custom implementation. Do not set false unless you’ve coordinated with the Peach team.
signOutgoing
boolean
Default: false
  • If true, outgoing files will be encrypted with thirdPartyPublicKey and signed with peach's private key. Make sure to set encryptionMethodOutgoing and thirdPartyPublicKey values.
  • If false, outgoing files will not be signed with peach's private key.
encryptionMethodOutgoing
string or null

The encryption method that Peach system will use to encrypt the outgoing files from Peach. Keep the value empty if no encryption is needed. If encryptionMethodOutgoing is set, a value must be set for thirdPartyPublicKey.

Value: "GPG"
encryptionMethodIncoming
string or null

The encryption method that Peach system will use to decrypt the incoming files to Peach. Make sure you use peachPublicKey to encrypt the files sent to Peach or uploaded to SFTP for Peach. Keep the value empty if no encryption is needed.

Value: "GPG"
thirdPartyPublicKey
string or null

The third party's (e.g. lender or bank) public key to use to encrypt the outgoing files from Peach. A value must be passed if encryptionMethodOutgoing is set.

Responses
200

Created

post/payment-processors
Request samples
application/json
{
  • "paymentTypes": [
    ],
  • "processorType": "achDirectUS",
  • "id": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "deletedAt": "2019-08-24T14:15:22Z",
  • "externalId": "string",
  • "processorName": "string",
  • "status": "draft",
  • "isDefault": false,
  • "timezone": "string",
  • "achCutoff": "14:15:22Z",
  • "achSameDayCutoff": "14:15:22Z",
  • "achFileHeaderImmediateDestination": "string",
  • "achFileHeaderImmediateOrigin": "string",
  • "achFileHeaderImmediateDestinationName": "string",
  • "achFileHeaderImmediateOriginName": "string",
  • "achBatchHeaderCompanyName": "string",
  • "achBatchHeaderCompanyId": "string",
  • "achBatchHeaderOriginatingDFIId": "string",
  • "achFeeType": "gross",
  • "achFeeAmount": 0,
  • "achSameDayFeeAmount": 0,
  • "achSECCode": "CCD",
  • "sftpHostname": "string",
  • "sftpAccessMethod": "usernamePassword",
  • "sftpUsername": "string",
  • "sftpPassword": "string",
  • "sftpSSHDisabledAlgorithms": { },
  • "sftpCdDirOutbox": "string",
  • "sftpCdDirInbox": "string",
  • "sftpAchConfirmationFileNameRegex": "string",
  • "sftpAchReturnFileNameRegex": "string",
  • "isFileNameDefaultConvention": true,
  • "signOutgoing": false,
  • "encryptionMethodOutgoing": "GPG",
  • "encryptionMethodIncoming": "GPG",
  • "thirdPartyPublicKey": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get payment processors

Securityoauth2 or bearerAuth or apiKeyHeader
Request
query Parameters
limit
integer [ 1 .. 100 ]
Default: 25

The maximum count of results to retrieve.

startingAfter
string

Return results starting after the provided object identifier.

endingBefore
string

Return results ending before the provided object identifier.

sortBy
Array of strings

The data attributes by which to sort the results.

Responses
200

Success

get/payment-processors
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": [
    ]
}

Get payment processor

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
paymentProcessorId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The payment processor ID.

Responses
200

Success

get/payment-processors/{paymentProcessorId}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Update payment processor

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
paymentProcessorId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The payment processor ID.

Request Body schema: application/json
required
updatePeachKeys
boolean
Default: false
  • If true, the peach keys for encrypting and decrypting incoming files to Peach are updated. The new peachPublicKey value is returned.
  • If false, the peach encryption keys are not changed
id
string
createdAt
string <date-time>
updatedAt
string or null <date-time>
deletedAt
string or null <date-time>
externalId
string or null [ 1 .. 50 ] characters

A lender's identifier for an object.

After the object is successfully created, a lender can use ID or externalId identifiers to fetch the object.

To fetch the object using externalId you need to add ext- to the URL.

Note: Don't add ext- to the identifier value. For example: if the external identifier is ABCDE, then pass externalId=ACBCE and NOT ext-ABCDE when creating the object.

processorName
string

The name of the payment processor. For example: Silicon Valley Bank or Wells Fargo.

status
string

The status of the payment processor.

  • draft - the payment processor is in the process of being configured and not ready to be used.
  • active - the payment processor is ready to process payments.
  • deprecated - the payment processor was deprecated, and new payments cannot be processed.
Enum: "draft" "active" "deprecated"
isDefault
boolean
Default: false

Mark the payment processor as default for the company. Only one payment processor can be default. If a new payment processor is created with isDefault=true and there is another payment processor with isDefault=true, the system will set isDefault=false for the other/existing processor.

timezone
string

The timezone used by this payment processor. For example: "America/Los_Angeles"

achCutoff
string <time>

The cutoff time for ACH processing, in the payment processor's timezone. Use 24-hour format. For example: "19:00"

achSameDayCutoff
string <time>

The cutoff time for ACH same day processing, in the payment processor's timezone. Use 24-hour format. For example: "10:00"

achFileHeaderImmediateDestination
string

Data element that is part of the file header record. For example: 121140399.

achFileHeaderImmediateOrigin
string

Data element that is part of the file header record. For example: 1456726789.

achFileHeaderImmediateDestinationName
string

Data element that is part of the file header record. For example: SILICON VALLEY BANK.

achFileHeaderImmediateOriginName
string

Data element that is part of the file header record. For example: PEACH FINANCE INC.

achBatchHeaderCompanyName
string

Data element that is part of the batch header record. For example: PEACH FIN ACH.

achBatchHeaderCompanyId
string

Data element that is part of the batch header record. For example: 2837461011.

achBatchHeaderOriginatingDFIId
string

Data element that is part of the batch header record. For example: 12773923.

If the value is NOT provided (aka null or empty) as part of the configuration, the system will automatically set this value to achFileHeaderImmediateDestination without the last digits. For example: if achFileHeaderImmediateDestination=121140399, the system will set achBatchHeaderOriginatingDFIId=12114039.

achFeeType
string

How the fee is charged by the payment processor. If the full amount is transferred, and fees are charged monthly, use gross. If fees are deducted from the amount transferred, use net.

Enum: "gross" "net"
achFeeAmount
number <float>

The fee charged by the payment processor for regular ACH transactions. For example: 0.05

achSameDayFeeAmount
number <float>

The fee charged by the payment processor for same day ACH transactions. For example: 0.50

achSECCode
string
Default: "PPD"

The Standard Entry Class Code within ACH.

Enum: "CCD" "PPD" "WEB"
sftpHostname
string

The hostname for SFTP. Host name should not contain a scheme, so don't put sftp:// on the front. You may optionally specify a port like so: example.com:222. If no port is supplied a default of 22 will be used.

sftpAccessMethod
string
Default: "usernamePassword"

The method used to access the sftpHostname.

  • If usernamePassword, then sftpUsername and sftpPassword must be provided.
  • If keys, then sftpSSHPeachPrivateKey and sftpSSHPeachPublicKey will be created by peach.
Enum: "usernamePassword" "keys" "disabled"
sftpUsername
string or null

The username for SFTP.

sftpPassword
string or null

The password for SFTP.

sftpSSHDisabledAlgorithms
object or null

A json object of any algorithms that need to be disabled when accessing sftpHostname with a private key. This should be null in most scenarios.

sftpCdDirOutbox
string

The folder where files (e.g. ACH instructions) will be uploaded. The system will change directory into this folder before performing the upload.

sftpCdDirInbox
string

The folder where files (e.g. ACH returns) will be downloaded from. The system will change directory into this folder before performing the download.

sftpAchConfirmationFileNameRegex
string

The name of the ACH confirmation file. The format is a regular expression. If you are not sure how to set up the regular expression, please contact the Peach team by providing a few examples of file names.

If the value is not provided, we assume that the processor doesn't support ACH confirmation files and any upload of an ACH file is considered as successful.

sftpAchReturnFileNameRegex
string

The name of the ACH return file. The format is a regular expression. If you are not sure how to set up the regular expression, please contact the Peach team by providing a few examples of file names.

isFileNameDefaultConvention
boolean
Default: true
  • If true, files (e.g. ACH) will be named based on the ACHP_MMDDYYYYHHMM convention. For example: ACHP_110320211305.
  • If false, files (e.g. ACH) will be named based on a custom implementation. Do not set false unless you’ve coordinated with the Peach team.
signOutgoing
boolean
Default: false
  • If true, outgoing files will be encrypted with thirdPartyPublicKey and signed with peach's private key. Make sure to set encryptionMethodOutgoing and thirdPartyPublicKey values.
  • If false, outgoing files will not be signed with peach's private key.
encryptionMethodOutgoing
string or null

The encryption method that Peach system will use to encrypt the outgoing files from Peach. Keep the value empty if no encryption is needed. If encryptionMethodOutgoing is set, a value must be set for thirdPartyPublicKey.

Value: "GPG"
encryptionMethodIncoming
string or null

The encryption method that Peach system will use to decrypt the incoming files to Peach. Make sure you use peachPublicKey to encrypt the files sent to Peach or uploaded to SFTP for Peach. Keep the value empty if no encryption is needed.

Value: "GPG"
thirdPartyPublicKey
string or null

The third party's (e.g. lender or bank) public key to use to encrypt the outgoing files from Peach. A value must be passed if encryptionMethodOutgoing is set.

Responses
200

Updated

put/payment-processors/{paymentProcessorId}
Request samples
application/json
{
  • "updatePeachKeys": false,
  • "id": "string",
  • "createdAt": "2019-08-24T14:15:22Z",
  • "updatedAt": "2019-08-24T14:15:22Z",
  • "deletedAt": "2019-08-24T14:15:22Z",
  • "externalId": "string",
  • "processorName": "string",
  • "status": "draft",
  • "isDefault": false,
  • "timezone": "string",
  • "achCutoff": "14:15:22Z",
  • "achSameDayCutoff": "14:15:22Z",
  • "achFileHeaderImmediateDestination": "string",
  • "achFileHeaderImmediateOrigin": "string",
  • "achFileHeaderImmediateDestinationName": "string",
  • "achFileHeaderImmediateOriginName": "string",
  • "achBatchHeaderCompanyName": "string",
  • "achBatchHeaderCompanyId": "string",
  • "achBatchHeaderOriginatingDFIId": "string",
  • "achFeeType": "gross",
  • "achFeeAmount": 0,
  • "achSameDayFeeAmount": 0,
  • "achSECCode": "CCD",
  • "sftpHostname": "string",
  • "sftpAccessMethod": "usernamePassword",
  • "sftpUsername": "string",
  • "sftpPassword": "string",
  • "sftpSSHDisabledAlgorithms": { },
  • "sftpCdDirOutbox": "string",
  • "sftpCdDirInbox": "string",
  • "sftpAchConfirmationFileNameRegex": "string",
  • "sftpAchReturnFileNameRegex": "string",
  • "isFileNameDefaultConvention": true,
  • "signOutgoing": false,
  • "encryptionMethodOutgoing": "GPG",
  • "encryptionMethodIncoming": "GPG",
  • "thirdPartyPublicKey": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Delete payment processor

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
paymentProcessorId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The payment processor ID.

Responses
204

Deleted

delete/payment-processors/{paymentProcessorId}