Repository: moov-io/ach
Pull request #917 (2021-04-30 18:52:36)

Remove parentheses from commented function references
Mentioned in #907


Patch:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index cfb40dc9..31e177dc 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -119,7 +119,7 @@ Create takes the Batch Header and Entry details and creates the proper sequence
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchMTE) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/addenda02.go b/addenda02.go
index 291c51c0..bccdd9ab 100644
--- a/addenda02.go
+++ b/addenda02.go
@@ -59,7 +59,7 @@ type Addenda02 struct {
 	TerminalState string `json:"terminalState"`
 	// TraceNumber Standard Entry Detail Trace Number
 	//
-	// Use TraceNumberField() for a properly formatted string representation.
+	// Use TraceNumberField for a properly formatted string representation.
 	TraceNumber string `json:"traceNumber,omitempty"`
 	// validator is composed for data validation
 	validator
@@ -77,7 +77,7 @@ func NewAddenda02() *Addenda02 {
 
 // Parse takes the input record string and parses the Addenda02 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda02 *Addenda02) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda05.go b/addenda05.go
index 7f7e95c3..4f2739d1 100644
--- a/addenda05.go
+++ b/addenda05.go
@@ -59,7 +59,7 @@ func NewAddenda05() *Addenda05 {
 
 // Parse takes the input record string and parses the Addenda05 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda05 *Addenda05) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda10.go b/addenda10.go
index b7f7ed80..1c009a85 100644
--- a/addenda10.go
+++ b/addenda10.go
@@ -72,7 +72,7 @@ func NewAddenda10() *Addenda10 {
 
 // Parse takes the input record string and parses the Addenda10 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda10 *Addenda10) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda11.go b/addenda11.go
index a5a75ba8..80d92eea 100644
--- a/addenda11.go
+++ b/addenda11.go
@@ -63,7 +63,7 @@ func NewAddenda11() *Addenda11 {
 
 // Parse takes the input record string and parses the Addenda11 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda11 *Addenda11) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda12.go b/addenda12.go
index 92b273f5..95c2108f 100644
--- a/addenda12.go
+++ b/addenda12.go
@@ -68,7 +68,7 @@ func NewAddenda12() *Addenda12 {
 
 // Parse takes the input record string and parses the Addenda12 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda12 *Addenda12) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda13.go b/addenda13.go
index b469370d..41d7fa7e 100644
--- a/addenda13.go
+++ b/addenda13.go
@@ -84,7 +84,7 @@ func NewAddenda13() *Addenda13 {
 
 // Parse takes the input record string and parses the Addenda13 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda13 *Addenda13) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda14.go b/addenda14.go
index 6342846b..234d3a80 100644
--- a/addenda14.go
+++ b/addenda14.go
@@ -80,7 +80,7 @@ func NewAddenda14() *Addenda14 {
 
 // Parse takes the input record string and parses the Addenda14 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda14 *Addenda14) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda15.go b/addenda15.go
index b9e658eb..069470c8 100644
--- a/addenda15.go
+++ b/addenda15.go
@@ -64,7 +64,7 @@ func NewAddenda15() *Addenda15 {
 
 // Parse takes the input record string and parses the Addenda15 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda15 *Addenda15) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda16.go b/addenda16.go
index a15ddfaa..c6608b18 100644
--- a/addenda16.go
+++ b/addenda16.go
@@ -67,7 +67,7 @@ func NewAddenda16() *Addenda16 {
 
 // Parse takes the input record string and parses the Addenda16 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda16 *Addenda16) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda17.go b/addenda17.go
index de98c5e0..49763eca 100644
--- a/addenda17.go
+++ b/addenda17.go
@@ -63,7 +63,7 @@ func NewAddenda17() *Addenda17 {
 
 // Parse takes the input record string and parses the Addenda17 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda17 *Addenda17) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda18.go b/addenda18.go
index 6de8dda4..cd2045db 100644
--- a/addenda18.go
+++ b/addenda18.go
@@ -81,7 +81,7 @@ func NewAddenda18() *Addenda18 {
 
 // Parse takes the input record string and parses the Addenda18 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda18 *Addenda18) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda98.go b/addenda98.go
index 2ffb25a3..d42066cb 100644
--- a/addenda98.go
+++ b/addenda98.go
@@ -46,7 +46,7 @@ type Addenda98 struct {
 	CorrectedData string `json:"correctedData"`
 	// TraceNumber matches the Entry Detail Trace Number of the entry being returned.
 	//
-	// Use TraceNumberField() for a properly formatted string representation.
+	// Use TraceNumberField for a properly formatted string representation.
 	TraceNumber string `json:"traceNumber,omitempty"`
 
 	// validator is composed for data validation
@@ -83,7 +83,7 @@ func NewAddenda98() *Addenda98 {
 
 // Parse takes the input record string and parses the Addenda98 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (addenda98 *Addenda98) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/addenda99.go b/addenda99.go
index 250c6312..9502e94e 100644
--- a/addenda99.go
+++ b/addenda99.go
@@ -62,7 +62,7 @@ type Addenda99 struct {
 	AddendaInformation string `json:"addendaInformation,omitempty"`
 	// TraceNumber matches the Entry Detail Trace Number of the entry being returned.
 	//
-	// Use TraceNumberField() for a properly formatted string representation.
+	// Use TraceNumberField for a properly formatted string representation.
 	TraceNumber string `json:"traceNumber,omitempty"`
 
 	// validator is composed for data validation
@@ -91,7 +91,7 @@ func NewAddenda99() *Addenda99 {
 
 // Parse takes the input record string and parses the Addenda99 values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (Addenda99 *Addenda99) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/advEntryDetail.go b/advEntryDetail.go
index 6cc03fe7..57026fcf 100644
--- a/advEntryDetail.go
+++ b/advEntryDetail.go
@@ -121,7 +121,7 @@ func NewADVEntryDetail() *ADVEntryDetail {
 }
 
 // Parse takes the input record string and parses the ADVEntryDetail values
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm
 // successful parsing and data validity.
 
 // Parse ADVEntryDetail
diff --git a/advFileControl.go b/advFileControl.go
index 2998fb2d..3f1282ea 100644
--- a/advFileControl.go
+++ b/advFileControl.go
@@ -57,7 +57,7 @@ type ADVFileControl struct {
 }
 
 // Parse takes the input record string and parses the FileControl values
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm
 // successful parsing and data validity.
 func (fc *ADVFileControl) Parse(record string) {
 	if utf8.RuneCountInString(record) < 71 {
diff --git a/batch.go b/batch.go
index 6d8933ef..b18fa676 100644
--- a/batch.go
+++ b/batch.go
@@ -280,7 +280,7 @@ func ConvertBatchType(b Batch) Batcher {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *Batch) Create() error {
 	return errors.New("use an implementation of batch or NewBatch")
 }
@@ -767,7 +767,7 @@ func (batch *Batch) calculateEntryHash() int {
 		}
 	}
 
-	// This follows what is done in BatchControl.Parse()
+	// This follows what is done in BatchControl.Parse
 	// EntryHash is essentially the sum of all the RDFI routing numbers in the batch. If the sum exceeds 10 digits
 	// (because you have lots of Entry Detail Records), lop off the most significant digits of the sum until there
 	// are only 10.
diff --git a/batchACK.go b/batchACK.go
index 5e9fa652..e331cf78 100644
--- a/batchACK.go
+++ b/batchACK.go
@@ -76,7 +76,7 @@ func (batch *BatchACK) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchACK) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchADV.go b/batchADV.go
index e01ca7f9..5fa10667 100644
--- a/batchADV.go
+++ b/batchADV.go
@@ -73,7 +73,7 @@ func (batch *BatchADV) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchADV) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchARC.go b/batchARC.go
index 2e5a4ae9..0b9bba4b 100644
--- a/batchARC.go
+++ b/batchARC.go
@@ -94,7 +94,7 @@ func (batch *BatchARC) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchARC) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchATX.go b/batchATX.go
index 7c54633e..d05bf57e 100644
--- a/batchATX.go
+++ b/batchATX.go
@@ -92,7 +92,7 @@ func (batch *BatchATX) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchATX) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchBOC.go b/batchBOC.go
index 5444bd5e..6f8fbb25 100644
--- a/batchBOC.go
+++ b/batchBOC.go
@@ -99,7 +99,7 @@ func (batch *BatchBOC) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchBOC) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchCCD.go b/batchCCD.go
index b6d25314..9fd21490 100644
--- a/batchCCD.go
+++ b/batchCCD.go
@@ -65,7 +65,7 @@ func (batch *BatchCCD) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchCCD) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchCIE.go b/batchCIE.go
index 273ad465..cae4ef75 100644
--- a/batchCIE.go
+++ b/batchCIE.go
@@ -86,7 +86,7 @@ func (batch *BatchCIE) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchCIE) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchCOR.go b/batchCOR.go
index 73838898..7182b9c9 100644
--- a/batchCOR.go
+++ b/batchCOR.go
@@ -90,7 +90,7 @@ func (batch *BatchCOR) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchCOR) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchCTX.go b/batchCTX.go
index c816d3c9..cfe84187 100644
--- a/batchCTX.go
+++ b/batchCTX.go
@@ -90,7 +90,7 @@ func (batch *BatchCTX) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchCTX) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchControl.go b/batchControl.go
index 892a3ff0..9ac9bb77 100644
--- a/batchControl.go
+++ b/batchControl.go
@@ -87,7 +87,7 @@ type BatchControl struct {
 
 // Parse takes the input record string and parses the EntryDetail values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (bc *BatchControl) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/batchDNE.go b/batchDNE.go
index e4ec4d08..04c4080f 100644
--- a/batchDNE.go
+++ b/batchDNE.go
@@ -84,7 +84,7 @@ func (batch *BatchDNE) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchDNE) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchENR.go b/batchENR.go
index 4fcecd6f..979bc78d 100644
--- a/batchENR.go
+++ b/batchENR.go
@@ -85,7 +85,7 @@ func (batch *BatchENR) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchENR) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchHeader.go b/batchHeader.go
index bfc1e611..e490d51d 100644
--- a/batchHeader.go
+++ b/batchHeader.go
@@ -151,7 +151,7 @@ func NewBatchHeader() *BatchHeader {
 
 // Parse takes the input record string and parses the BatchHeader values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (bh *BatchHeader) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/batchMTE.go b/batchMTE.go
index 866afb48..a4d5dd37 100644
--- a/batchMTE.go
+++ b/batchMTE.go
@@ -83,7 +83,7 @@ func (batch *BatchMTE) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchMTE) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchPOP.go b/batchPOP.go
index 86f0fde6..3cbb0464 100644
--- a/batchPOP.go
+++ b/batchPOP.go
@@ -94,7 +94,7 @@ func (batch *BatchPOP) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchPOP) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchPOS.go b/batchPOS.go
index e1279ba8..92fd7f6e 100644
--- a/batchPOS.go
+++ b/batchPOS.go
@@ -88,7 +88,7 @@ func (batch *BatchPOS) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchPOS) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchPPD.go b/batchPPD.go
index fe602b97..474667b9 100644
--- a/batchPPD.go
+++ b/batchPPD.go
@@ -66,7 +66,7 @@ func (batch *BatchPPD) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchPPD) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchRCK.go b/batchRCK.go
index 0c79c18d..6cc5dda8 100644
--- a/batchRCK.go
+++ b/batchRCK.go
@@ -88,7 +88,7 @@ func (batch *BatchRCK) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchRCK) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchSHR.go b/batchSHR.go
index c2dfe846..510a6bb7 100644
--- a/batchSHR.go
+++ b/batchSHR.go
@@ -102,7 +102,7 @@ func (batch *BatchSHR) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchSHR) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchTEL.go b/batchTEL.go
index 2fb46b90..c0568166 100644
--- a/batchTEL.go
+++ b/batchTEL.go
@@ -65,7 +65,7 @@ func (batch *BatchTEL) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchTEL) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchTRC.go b/batchTRC.go
index 61441c6e..bc796b69 100644
--- a/batchTRC.go
+++ b/batchTRC.go
@@ -82,7 +82,7 @@ func (batch *BatchTRC) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchTRC) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchTRX.go b/batchTRX.go
index 5bcef6e9..78578091 100644
--- a/batchTRX.go
+++ b/batchTRX.go
@@ -88,7 +88,7 @@ func (batch *BatchTRX) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchTRX) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchWeb.go b/batchWeb.go
index 1fe15d5d..13f6797d 100644
--- a/batchWeb.go
+++ b/batchWeb.go
@@ -64,7 +64,7 @@ func (batch *BatchWEB) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchWEB) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/batchXCK.go b/batchXCK.go
index bba1215b..05815bd2 100644
--- a/batchXCK.go
+++ b/batchXCK.go
@@ -86,7 +86,7 @@ func (batch *BatchXCK) Validate() error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (batch *BatchXCK) Create() error {
 	// generates sequence numbers and batch control
 	if err := batch.build(); err != nil {
diff --git a/docs/create-file.md b/docs/create-file.md
index 963c6b95..e593a15e 100644
--- a/docs/create-file.md
+++ b/docs/create-file.md
@@ -34,7 +34,22 @@ In Ruby we have an example of [creating an ACH file from JSON](https://github.co
 
 We have [example ACH files](https://github.com/moov-io/ach/blob/master/test/testdata/ppd-valid.json) in JSON.
 
-Note: The header `Content-Type: application/json` must be set.
+Note: The header `Content-Type: application/json` must be set to parse the file as JSON, otherwise Nacha's format will be assumed.
+
+### Validate Options
+
+When creating a file the server supports query parameters for setting `ValidateOpts` values.
+
+Example: `POST /files/create?requireABAOrigin=true&bypassDestination=true`
+
+| Query Param | Validation Option |
+|-----|-----|
+| `allowZeroBatches` | `AllowZeroBatches`
+| `bypassCompanyIdentificationMatch` | `BypassCompanyIdentificationMatch` |
+| `bypassDestination` | `BypassDestinationValidation` |
+| `bypassOrigin` | `BypassOriginValidation` |
+| `customTraceNumbers` | `CustomTraceNumbers` |
+| `requireABAOrigin` | `RequireABAOrigin` |
 
 ## Upload a raw ACH file
 
diff --git a/entryDetail.go b/entryDetail.go
index 7b955ecc..6b7d65d2 100644
--- a/entryDetail.go
+++ b/entryDetail.go
@@ -73,7 +73,7 @@ type EntryDetail struct {
 	// in the associated Entry Detail Record, since the Trace Number is associated
 	// with an entry or item rather than a physical record.
 	//
-	// Use TraceNumberField() for a properly formatted string representation.
+	// Use TraceNumberField for a properly formatted string representation.
 	TraceNumber string `json:"traceNumber,omitempty"`
 	// Addenda02 for use with StandardEntryClassCode MTE, POS, and SHR
 	Addenda02 *Addenda02 `json:"addenda02,omitempty"`
@@ -193,7 +193,7 @@ func NewEntryDetail() *EntryDetail {
 
 // Parse takes the input record string and parses the EntryDetail values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (ed *EntryDetail) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/file.go b/file.go
index b4f92597..94ba395a 100644
--- a/file.go
+++ b/file.go
@@ -100,7 +100,7 @@ type advFileControl struct {
 //
 // Callers should always check for a nil-error before using the returned file.
 //
-// The File returned may not be valid and callers should confirm with Validate().
+// The File returned may not be valid and callers should confirm with Validate.
 // Invalid files may be rejected by other Financial Institutions or ACH tools.
 //
 // Date and Time fields in formats: RFC 3339 and ISO 8601 will be parsed and rewritten
@@ -419,7 +419,7 @@ func (f *File) Create() error {
 				f.Batches[i].GetControl().BatchNumber = batchSeq
 			}
 			batchSeq++
-			// sum file entry and addenda records. Assume batch.Create() batch properly calculated control
+			// sum file entry and addenda records. Assume batch.Create batch properly calculated control
 			fileEntryAddendaCount = fileEntryAddendaCount + batch.GetControl().EntryAddendaCount
 			// add 2 for Batch header/control + entry added count
 			totalRecordsInFile = totalRecordsInFile + 2 + batch.GetControl().EntryAddendaCount
@@ -435,7 +435,7 @@ func (f *File) Create() error {
 				f.IATBatches[i].GetControl().BatchNumber = batchSeq
 			}
 			batchSeq++
-			// sum file entry and addenda records. Assume batch.Create() batch properly calculated control
+			// sum file entry and addenda records. Assume batch.Create batch properly calculated control
 			fileEntryAddendaCount = fileEntryAddendaCount + iatBatch.GetControl().EntryAddendaCount
 			// add 2 for Batch header/control + entry added count
 			totalRecordsInFile = totalRecordsInFile + 2 + iatBatch.GetControl().EntryAddendaCount
@@ -801,7 +801,7 @@ func (f *File) createFileADV() error {
 			f.Batches[i].GetADVControl().BatchNumber = batchSeq
 		}
 		batchSeq++
-		// sum file entry and addenda records. Assume batch.Create() batch properly calculated control
+		// sum file entry and addenda records. Assume batch.Create batch properly calculated control
 		fileEntryAddendaCount = fileEntryAddendaCount + batch.GetADVControl().EntryAddendaCount
 		// add 2 for Batch header/control + entry added count
 		totalRecordsInFile = totalRecordsInFile + 2 + batch.GetADVControl().EntryAddendaCount
@@ -836,7 +836,7 @@ func (f *File) createFileADV() error {
 // Error - Error or Nil
 // Callers should always check for a nil-error before using the returned file.
 //
-// The File returned may not be valid and callers should confirm with Validate(). Invalid files may
+// The File returned may not be valid and callers should confirm with Validate. Invalid files may
 // be rejected by other Financial Institutions or ACH tools.
 func (f *File) SegmentFile(_ *SegmentFileConfiguration) (*File, *File, error) {
 	if err := f.Validate(); err != nil {
diff --git a/fileControl.go b/fileControl.go
index 95615746..bbf06f3c 100644
--- a/fileControl.go
+++ b/fileControl.go
@@ -53,7 +53,7 @@ type FileControl struct {
 
 // Parse takes the input record string and parses the FileControl values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (fc *FileControl) Parse(record string) {
 	if utf8.RuneCountInString(record) < 55 {
 		return
diff --git a/fileHeader.go b/fileHeader.go
index ff3be7ab..e4b43054 100644
--- a/fileHeader.go
+++ b/fileHeader.go
@@ -41,7 +41,7 @@ type FileHeader struct {
 	// point to which the file is being sent. The ach file format specifies a 10 character
 	// field begins with a blank space in the first position, followed by the four digit
 	// Federal Reserve Routing Symbol, the four digit ABA Institution Identifier, and the Check
-	// Digit (bTTTTAAAAC). ImmediateDestinationField() will append the blank space to the
+	// Digit (bTTTTAAAAC). ImmediateDestinationField will append the blank space to the
 	// routing number.
 	ImmediateDestination string `json:"immediateDestination"`
 
@@ -49,7 +49,7 @@ type FileHeader struct {
 	// point that is sending the file. The ach file format specifies a 10 character
 	// field begins with a blank space in the first position, followed by the four digit
 	// Federal Reserve Routing Symbol, the four digit ABA Institution Identifier, and the Check
-	// Digit (bTTTTAAAAC). ImmediateOriginField() will append the blank space to the
+	// Digit (bTTTTAAAAC). ImmediateOriginField will append the blank space to the
 	// routing number.
 	ImmediateOrigin string `json:"immediateOrigin"`
 
@@ -119,7 +119,7 @@ func NewFileHeader() FileHeader {
 
 // Parse takes the input record string and parses the FileHeader values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (fh *FileHeader) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
@@ -156,7 +156,7 @@ func (fh *FileHeader) Parse(record string) {
 
 func trimRoutingNumberLeadingZero(s string) string {
 	if utf8.RuneCountInString(s) == 10 && s[0] == '0' && s != "0000000000" {
-		// trim off a leading 0 as ImmediateOriginField() or ImmediateDestinationField() will pad it back
+		// trim off a leading 0 as ImmediateOriginField or ImmediateDestinationField will pad it back
 		return strings.TrimSpace(s[1:])
 	}
 	return strings.TrimSpace(s)
diff --git a/iatBatch.go b/iatBatch.go
index 492626bd..436b1d75 100644
--- a/iatBatch.go
+++ b/iatBatch.go
@@ -534,7 +534,7 @@ func (iatBatch *IATBatch) addendaFieldInclusion(entry *IATEntryDetail) error {
 // setting any posting dates, sequence numbers, counts, and sums.
 //
 // Create implementations are free to modify computable fields in a file and should
-// call the Batch's Validate() function at the end of their execution.
+// call the Batch's Validate function at the end of their execution.
 func (iatBatch *IATBatch) Create() error {
 	// generates sequence numbers and batch control
 	if err := iatBatch.build(); err != nil {
diff --git a/iatBatchHeader.go b/iatBatchHeader.go
index 6e7556dc..ef6d21fb 100644
--- a/iatBatchHeader.go
+++ b/iatBatchHeader.go
@@ -189,7 +189,7 @@ func NewIATBatchHeader() *IATBatchHeader {
 
 // Parse takes the input record string and parses the BatchHeader values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (iatBh *IATBatchHeader) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/iatEntryDetail.go b/iatEntryDetail.go
index 58b0ca29..e54adc22 100644
--- a/iatEntryDetail.go
+++ b/iatEntryDetail.go
@@ -76,7 +76,7 @@ type IATEntryDetail struct {
 	// in the associated Entry Detail Record, since the Trace Number is associated
 	// with an entry or item rather than a physical record.
 	//
-	// Use TraceNumberField() for a properly formatted string representation.
+	// Use TraceNumberField for a properly formatted string representation.
 	TraceNumber string `json:"traceNumber,omitempty"`
 	// Addenda10 is mandatory for IAT entries
 	//
@@ -147,7 +147,7 @@ func NewIATEntryDetail() *IATEntryDetail {
 
 // Parse takes the input record string and parses the EntryDetail values
 //
-// Parse provides no guarantee about all fields being filled in. Callers should make a Validate() call to confirm successful parsing and data validity.
+// Parse provides no guarantee about all fields being filled in. Callers should make a Validate call to confirm successful parsing and data validity.
 func (iatEd *IATEntryDetail) Parse(record string) {
 	if utf8.RuneCountInString(record) != 94 {
 		return
diff --git a/server/files.go b/server/files.go
index f71fc60c..bf96e3c1 100644
--- a/server/files.go
+++ b/server/files.go
@@ -117,16 +117,18 @@ func decodeCreateFileRequest(_ context.Context, request *http.Request) (interfac
 		requireABAOrigin                 = "requireABAOrigin"
 		bypassOrigin                     = "bypassOrigin"
 		bypassDestination                = "bypassDestination"
-		bypassCompanyIdentificationMatch = "bypassCompanyIdentificationMatch"
+		customTraceNumbers               = "customTraceNumbers"
 		allowZeroBatches                 = "allowZeroBatches"
+		bypassCompanyIdentificationMatch = "bypassCompanyIdentificationMatch"
 	)
 
 	validationNames := []string{
 		requireABAOrigin,
 		bypassOrigin,
 		bypassDestination,
-		bypassCompanyIdentificationMatch,
+		customTraceNumbers,
 		allowZeroBatches,
+		bypassCompanyIdentificationMatch,
 	}
 
 	for _, name := range validationNames {
@@ -150,10 +152,12 @@ func decodeCreateFileRequest(_ context.Context, request *http.Request) (interfac
 			req.validateOpts.BypassOriginValidation = true
 		case bypassDestination:
 			req.validateOpts.BypassDestinationValidation = true
-		case bypassCompanyIdentificationMatch:
-			req.validateOpts.BypassCompanyIdentificationMatch = true
+		case customTraceNumbers:
+			req.validateOpts.CustomTraceNumbers = true
 		case allowZeroBatches:
 			req.validateOpts.AllowZeroBatches = true
+		case bypassCompanyIdentificationMatch:
+			req.validateOpts.BypassCompanyIdentificationMatch = true
 		}
 	}
 
diff --git a/writer.go b/writer.go
index 79ea34ef..3b35707f 100644
--- a/writer.go
+++ b/writer.go
@@ -23,15 +23,14 @@ import (
 	"strings"
 )
 
-// A Writer writes an ach.file to a NACHA encoded file.
-//
-// As returned by NewWriter, a Writer writes ach.file structs into
-// NACHA formatted files.
-//
+// Writer writes a File to an io.Writer.
+// The File is validated against Nacha guidelines unless BypassValidation is enabled.
 type Writer struct {
 	w          *bufio.Writer
 	lineNum    int    //current line being written
 	LineEnding string // configurable line ending to support different consumer requirements
+	// BypassValidation can be set to skip file validation and will allow non-compliant Nacha files to be written.
+	BypassValidation bool
 }
 
 // NewWriter returns a new Writer that writes to w.
@@ -44,8 +43,10 @@ func NewWriter(w io.Writer) *Writer {
 
 // Writer writes a single ach.file record to w
 func (w *Writer) Write(file *File) error {
-	if err := file.Validate(); err != nil {
-		return err
+	if !w.BypassValidation {
+		if err := file.Validate(); err != nil {
+			return err
+		}
 	}
 
 	w.lineNum = 0


Test patch:
diff --git a/server/files_test.go b/server/files_test.go
index 346c1b49..c2b7c444 100644
--- a/server/files_test.go
+++ b/server/files_test.go
@@ -146,6 +146,12 @@ func TestFiles__decodeCreateFileRequest__validateOpts(t *testing.T) {
 				BypassDestinationValidation: true,
 			},
 		},
+		{
+			query: "?customTraceNumbers=true",
+			expect: ach.ValidateOpts{
+				CustomTraceNumbers: true,
+			},
+		},
 	}
 
 	for _, tc := range tests {
diff --git a/writer_test.go b/writer_test.go
index 41093edb..79e50f11 100644
--- a/writer_test.go
+++ b/writer_test.go
@@ -726,3 +726,15 @@ func testWriteWithCustomLineEnding(t testing.TB) {
 func TestWriteWithCustomLineEnding(t *testing.T) {
 	testWriteWithCustomLineEnding(t)
 }
+
+func TestWriteBypassValidation(t *testing.T) {
+	file := mockFilePPD()
+	file.Header.recordType = "" // make the file fail Nacha validation
+
+	writer := NewWriter(&bytes.Buffer{})
+	writer.BypassValidation = true
+
+	if err := writer.Write(file); err != nil {
+		t.Fatal(err)
+	}
+}