Skip to content
This repository has been archived by the owner on Aug 26, 2022. It is now read-only.

ACH file values for POST /transfers #29

Closed
adamdecaf opened this issue Oct 31, 2018 · 4 comments
Closed

ACH file values for POST /transfers #29

adamdecaf opened this issue Oct 31, 2018 · 4 comments

Comments

@adamdecaf
Copy link
Member

Part of #8 is to actually create the ACH files and send them over to our ACH service. To do this we need to figure out the specific values.

For a transfer, are we just supporting Push for now? Wade has mentioned Pull is more complicated.

Here's the values I want to confirm:

https://github.com/adamdecaf/paygate/blob/create-ach-file/transfers.go#L686

Batch

  • ServiceClassCode: Credits 220 / Debits 225 (Push would be Credit?)
  • StandardEntryClassCode: I defaulted to PPD just to get something working
  • CompanyIdentification: 9 digit FEIN number
  • EffectiveEntryDate: End of Day today? Tomorrow?

EntryDetails

  • TransactionCode: 22 / 23 / 27 / 28 / 32 / 33 / 37 / 38
    • I think this can be handled by a fancy switch, Push is Credit?
  • IdentificationNumber: Do we have API support to capture this?
  • TraceNumber: How do we want to manage/generate this?
@adamdecaf
Copy link
Member Author

For reference here's a JSON document paygate generated.

{
    "fileControl": {
        "entryAddendaCount": 0,
        "blockCount": 1,
        "batchCount": 1,
        "id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573d"
    },
    "IATBatches": null,
    "batches": [
        {
            "batchControl": {
                "entryHash": 23138010,
                "batchNumber": 1,
                "ODFIIdentification": "12104288",
                "companyIdentification": "121042882",
                "entryAddendaÇount": 0,
                "serviceClassCode": 200,
                "id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573d"
            },
            "entryDetails": [
                {
                    "category": "Forward",
                    "traceNumber": 121042880000001,
                    "discretionaryData": "test payment",
                    "individualName": "",
                    "identificationNumber": "#83738AB#      ",
                    "amount": 7854,
                    "DFIAccountNumber": "451",
                    "checkDigit": "4",
                    "RDFIIdentification": "23138010",
                    "transactionCode": 22,
                    "id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573d"
                }
            ],
            "batchHeader": {
                "batchNumber": 1,
                "ODFIIdentification": "12104288",
                "effectiveEntryDate": "2018-10-30T18:01:42.535676-07:00",
                "companyEntryDescription": "test payment",
                "standardEntryClassCode": "PPD",
                "companyIdentification": "121042882",
                "companyName": "",
                "serviceClassCode": 200,
                "id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573d"
            }
        }
    ],
    "fileHeader": {
        "fileIDModifier": "A",
        "fileCreationTime": "2018-10-30T18:01:42.535686-07:00",
        "fileCreationDate": "2018-10-30T18:01:42.535686-07:00",
        "immediateDestinationName": "cust bank",
        "immediateDestination": "231380104",
        "immediateOriginName": "orig bank",
        "immediateOrigin": "121042882",
        "id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573d"
    },
    "id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573d"
}

@adamdecaf
Copy link
Member Author

cc @bkmoovio

@bkmoovio
Copy link
Contributor

bkmoovio commented Oct 31, 2018

This looks to be what you are trying to do:

  1. Create an ACH file containing WEB entries from JSON using moov-io/ach library
    • Create a File Header:
    The following properties have default settings and don’t need to be passed in.
// NewFileHeader returns a new FileHeader with default values for none exported fields
func NewFileHeader() FileHeader {
   fh := FileHeader{
      recordType:     "1",
      priorityCode:   "01",
      FileIDModifier: "A",
      recordSize:     "094",
      blockingFactor: "10",
      formatCode:     "1",
   }
   return fh
}
  1. Create a batch of WEB entries
    • Create a WEB Batch Header
    • Create WEB Entry Detail
    • Create Addenda05

@bkmoovio
Copy link
Contributor

bkmoovio commented Oct 31, 2018

{
	"fileHeader": {
		"fileCreationTime": "2018-10-30T18:01:42.535686-07:00",
		"fileCreationDate": "2018-10-30T18:01:42.535686-07:00",
		"immediateDestinationName": "Citadel",
		"immediateDestination": "231380104",
		"immediateOriginName": "Wells Fargo",
		"immediateOrigin": "121042882",
		"id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573a"
	},
	"batches": [
		"batchHeader", {
			"serviceClassCode": "220",
			"companyName": "Name on Account",
			"companyIdentification": "121042882",
			"standardEntryClassCode": "WEB",
			"companyEntryDescription": "Subscribe",
			"effectiveEntryDate": "2018-10-30T18:01:42.535686-07:00",
			"ODFIIdentification": "12104288",
			"id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573b"
		}
	],
	"entryDetails": [
		"entry", {
			"category": "Forward",
			"transactionCode": "22",
			"RDFIIdentification": "231380104",
			"DFIAccountNumber": "12345678",
			"amount": "01",
			"individualname": "Wade Arnold",
			"traceNumber": " 121042880000001",
			"identificationNumber": "#789654",
			"discretionaryData": "S",
			"Addenda": {
				"typeCode": "05",
				"paymentRelatedInformation": "PAY-GATE Payment",
				"id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573d"
			},
			"id": "5a4df13f8f2cb381e621aab6a3f736f9d9dd573c"
		}
	]
}

@adamdecaf adamdecaf added this to To do in Current Work Dec 19, 2018
@adamdecaf adamdecaf removed this from To do in Current Work May 19, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants