# Testing your integration

The sandbox processor answers from a fixed table instead of reaching a card network, so every case below is repeatable. Send the trigger and you get the outcome, every time.

## How the triggers work

Route a merchant to the sandbox processor, then provoke a case in one of two ways. Most cases key off the transaction amount: the cents pick the outcome, and the amount you send is otherwise ignored. The rest key off a value you already send anyway, such as the billing ZIP or the CVV.

When you need an outcome no amount produces, send a control field instead. Control fields go on the transaction as a custom field or an extra property, are matched without regard to case, and outrank the amount triggers. Every one of them is listed at the bottom of this page.

Nothing on this page reaches a card network or moves money, and none of it is available on a merchant routed to a live processor.

## Start here: one guaranteed case each way

If you only wire up two tests per flow, wire up these. Each pair is guaranteed to succeed and to fail respectively, and neither depends on anything about the card you send.

| Flow | Always succeeds | Result | Always fails | Result |
| --- | --- | --- | --- | --- |
| Card authorization | 10.00 | Ok: Approved | 10.01 | Decline: AUTH DECLINED; host error 200 |
| Partial approval and prepaid | 2.03 | Ok: Approved; beginning balance 0.00 | 9.66 | Decline: Decline; beginning balance 4.03; available balance 5.08 |
| Prepaid balance responses | 19.71 | Ok: Approved | 89.66 | Decline: Decline; beginning balance 74.75; available balance 75.80 |
| ACH debits and returns | 25.00 | Ok: ACH Sale Approved | 25.01 | Decline: ACH Returned (R01); NACHA R01 |
| Processor failover | loopback.notProcessedProfileId=<primary profile id> | Ok: Approved | loopback.notProcessed=true | Decline: The transaction could not be processed by an available processor. |
| Address verification (AVS) | 66666 | Y: Address and ZIP match | 33333 | N: Address and ZIP do not match |
| Cardholder verification (CVV) | 111 | M: CVV match | 222 | N: CVV no match |

## Card authorization

The cents of the transaction amount select the outcome. These apply to Visa, Mastercard, Amex and Discover; a brand the sandbox does not recognise approves everything.

| Send | Trigger | Outcome | Result |
| --- | --- | --- | --- |
| 10.00 | Any amount of 1.00 or more whose cents are not listed below, on any supported brand. Amounts under 1.00 also approve on every brand except Discover. | Approved | Ok: Approved |
| 10.01 | Any amount of 1.00 or more whose cents are .01. | Declined | Decline: AUTH DECLINED; host error 200 |
| 10.02 | Any amount of 1.00 or more whose cents are .02. | Referral | Referral: CALL VOICE OPER; host error 201 |
| 10.03 | Any amount of 1.00 or more whose cents are .03. | Referral | Referral: HOLD - CALL; host error 202 |
| 10.04 | Any amount of 1.00 or more whose cents are .04. | Referral | Referral: CALL VOICE OPER; host error 203 |
| 10.05 | Any amount of 1.00 or more whose cents are .05. | Error | InvalidAccountNumber: INVALID CARD NO; host error 204 |
| 10.06 | Any amount of 1.00 or more whose cents are .06. | Error | InvalidExpirationDate: INVALID EXP DATE; host error 205 |
| 10.07 | Any amount of 1.00 or more whose cents are .07. | Error | InvalidMerchantInfo: INVALID ICA NO; host error 206 |
| 10.08 | Any amount of 1.00 or more whose cents are .08. | Error | InvalidAbaNumber: INVALID ABA NO; host error 207 |
| 10.09 | Any amount of 1.00 or more whose cents are .09. | Error | FieldFormatError: INVALID PIN NO; host error 208 |
| 10.10 | Any amount of 1.00 or more whose cents are .10. | Error | InvalidMerchantInfo: INVALID BANK MID; host error 209 |
| 10.11 | Any amount of 1.00 or more whose cents are .11. | Error | InvalidRegisterInfo: INVALID TERM NO; host error 210 |
| 10.12 | Any amount of 1.00 or more whose cents are .12. | Error | InvalidAmount: INVALID AMOUNT; host error 211 |
| 10.13 | Any amount of 1.00 or more whose cents are .13. | Error | FieldFormatError: INVALID STATE CD; host error 212 |
| 10.14 | Any amount of 1.00 or more whose cents are .14. | Declined | Decline: DECLINE; host error 213 |
| 10.15 | Any amount of 1.00 or more whose cents are .15. | Referral | Referral: CALL VOICE OPER; host error 214 |
| 10.16 | Any amount of 1.00 or more whose cents are .16. | Declined | Decline: LOST/STOLEN CARD; host error 215 |
| 10.17 | Any amount of 1.00 or more whose cents are .17. | Error | FieldFormatError: INVALID PIN; host error 216 |
| 10.18 | Any amount of 1.00 or more whose cents are .18. | Declined | InsufficientFundsAvailable: OVER CREDIT FLR; host error 217 |
| 10.19 | Any amount of 1.00 or more whose cents are .19. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.20 | Any amount of 1.00 or more whose cents are .20. | Error | GeneralError: NOT ONLINE TO ??; host error 220 |
| 10.21 | Any amount of 1.00 or more whose cents are .21. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.22 | Any amount of 1.00 or more whose cents are .22. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.23 | Any amount of 1.00 or more whose cents are .23. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.24 | Any amount of 1.00 or more whose cents are .24. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.25 | Any amount of 1.00 or more whose cents are .25. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.59 | Any amount of 1.00 or more whose cents are .59. | Declined | Decline: DECLINED PER CARDHOLDER; host error 218 |
| 10.92 | Any amount of 1.00 or more whose cents are .92. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.93 | Any amount of 1.00 or more whose cents are .93. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.94 | Any amount of 1.00 or more whose cents are .94. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.97 | Any amount of 1.00 or more whose cents are .97. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.98 | Any amount of 1.00 or more whose cents are .98. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 10.99 | Any amount of 1.00 or more whose cents are .99. | Rejected | Reject: *REQUEST DENIED*; host error 218 |
| 1000000.00 | Any amount above 999,999.99. Checked before the cents table, so it wins whatever the cents are. | Error | InvalidAmount: INVALID AMOUNT; host error 319 |
| 0.50 | Any amount below 1.00 on Discover. Brand-specific. The same amount approves on Visa, Mastercard and Amex. | Error | InvalidAmount: INVALID AMOUNT; host error 211 |

## Partial approval and prepaid

Send a prepaid indicator of P (or a partial-authorization indicator of true) and the exact amount selects the outcome. This is how you exercise a partial approval, which is the case most integrations get wrong.

| Send | Trigger | Outcome | Result |
| --- | --- | --- | --- |
| 0.00 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Approved; beginning balance 3.01 |
| 2.03 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Approved; beginning balance 0.00 |
| 2.78 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 2.57; beginning balance 0.00 |
| 3.26 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 1.26; beginning balance 0.00 |
| 3.27 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval (Non-Prepaid Card); approves 1.27; beginning balance 0.00 |
| 3.28 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Full/Partial Approval (Depleted Card); approves 3.28 |
| 4.41 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 2.00; beginning balance 0.00 |
| 6.34 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 3.56; beginning balance 0.00 |
| 7.67 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 4.49; beginning balance 0.00 |
| 8.64 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 2.30; beginning balance 0.00 |
| 9.63 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Approved; beginning balance 3.01 |
| 9.64 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Approved; beginning balance 3.02; available balance 4.34 |
| 9.65 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. Returns negative balances, so a client that assumes non-negative values fails here. | Approved | Ok: Approved; beginning balance -4.02; available balance -5.49 |
| 9.66 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Declined | Decline: Decline; beginning balance 4.03; available balance 5.08 |
| 9.67 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 2.00; beginning balance 0.00 |
| 9.68 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Approved; beginning balance 0.00 |
| 9.69 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 7.00; beginning balance 0.00 |
| 9.70 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Declined | Decline: Decline; beginning balance 3.08 |
| 9.71 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Approved |
| 9.72 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Approved; beginning balance 156.10 |
| 21.64 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Approved | Ok: Approved; beginning balance 43.45 |
| 24.41 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 19.00; beginning balance 0.00 |
| 37.88 | Prepaid indicator P (or partial-authorization indicator true) with this exact amount. | Partial approval | Partial: Partial Approval; approves 15.36; beginning balance 0.00 |

## Prepaid balance responses

Send a prepaid indicator of B and the exact amount selects which balances come back, including negative ones.

| Send | Trigger | Outcome | Result |
| --- | --- | --- | --- |
| 19.71 | Prepaid indicator B with this exact amount. | Approved | Ok: Approved |
| 59.63 | Prepaid indicator B with this exact amount. | Approved | Ok: Approved; beginning balance 100.01 |
| 69.64 | Prepaid indicator B with this exact amount. | Approved | Ok: Approved; beginning balance 33.02; available balance 34.34 |
| 79.65 | Prepaid indicator B with this exact amount. Returns negative balances, so a client that assumes non-negative values fails here. | Approved | Ok: Approved; beginning balance -4.02; available balance -5.49 |
| 89.66 | Prepaid indicator B with this exact amount. | Declined | Decline: Decline; beginning balance 74.75; available balance 75.80 |
| 99.68 | Prepaid indicator B with this exact amount. | Approved | Ok: Approved; beginning balance 0.00 |
| 109.70 | Prepaid indicator B with this exact amount. | Declined | Decline: Decline; beginning balance 43.08 |

## ACH debits and returns

A transaction carrying check data runs on the ACH rail, where the cents of the amount select the NACHA return. An ACH return is reported as a decline with the return code and reason on the response.

| Send | Trigger | Outcome | Result |
| --- | --- | --- | --- |
| 25.00 | Any ACH amount below 50,000.00 whose cents are not listed below. The result message names the transaction type, so an ACH authorization reads "ACH Authorization Approved" instead. | Approved | Ok: ACH Sale Approved |
| 25.01 | An ACH amount whose cents are .01. | Declined | Decline: ACH Returned (R01); NACHA R01 |
| 25.02 | An ACH amount whose cents are .02. | Declined | Decline: ACH Returned (R02); NACHA R02 |
| 25.03 | An ACH amount whose cents are .03. | Declined | Decline: ACH Returned (R03); NACHA R03 |
| 25.04 | An ACH amount whose cents are .04. | Declined | Decline: ACH Returned (R04); NACHA R04 |
| 25.07 | An ACH amount whose cents are .07. | Declined | Decline: ACH Returned (R07); NACHA R07 |
| 25.08 | An ACH amount whose cents are .08. | Declined | Decline: ACH Returned (R08); NACHA R08 |
| 25.10 | An ACH amount whose cents are .10. | Declined | Decline: ACH Returned (R10); NACHA R10 |
| 25.16 | An ACH amount whose cents are .16. | Declined | Decline: ACH Returned (R16); NACHA R16 |
| 25.20 | An ACH amount whose cents are .20. | Declined | Decline: ACH Returned (R20); NACHA R20 |
| 50000.00 | Any ACH amount of 50,000.00 or more whose cents are not listed above. | Declined | Decline: ACH Returned (R01); NACHA R01 |

## Processor failover

The sandbox can report that it did not process a transaction at all, which is what makes the gateway attempt its one-shot authorization failover. Nothing is charged either way.

| Send | Trigger | Outcome | Result |
| --- | --- | --- | --- |
| loopback.notProcessedProfileId=<primary profile id> | Send loopback.notProcessedProfileId with the id of your primary processor profile. The primary profile reports that it did not process, authorization failover selects the fallback profile, and the fallback approves. Requires the merchant to have a second active processor profile. | Approved | Ok: Approved |
| loopback.notProcessed=true | Send loopback.notProcessed set to true. Every profile reports that it did not process, so failover is attempted once and then exhausted. On a merchant with a single profile this instead exercises the fail-closed no-processor-configured path. | Declined | Decline: The transaction could not be processed by an available processor. |

## Address verification (AVS)

The billing ZIP selects the AVS response code. The code comes back on the transaction whatever your own AVS policy then does with it.

| Billing ZIP | Response code | Meaning | Card brand |
| --- | --- | --- | --- |
| 11111 | A | Address match only | Any |
| 44445 | B | Address matches, ZIP not verified | Any |
| 66667 | C | Address and ZIP not verified due to incompatible formats | Any |
| 77778 | D | Address and ZIP match (international) | Any |
| 88888 | G | Address not verified (international) | Any |
| 88889 | I | Address not verified (international) | Any |
| 22222 | M | Address and ZIP match (international) | Any |
| 33333 | N | Address and ZIP do not match | Any |
| 55556 | P | ZIP matches, address not verified | Any |
| 44444 | R | System unavailable, retry | Any |
| 11112 | S | AVS not supported | Any |
| 11113 | T | 9-digit ZIP matches, address does not | Any |
| 55555 | U | Address information unavailable | Any |
| 22223 | W | 9-digit ZIP match, address mismatch | Any |
| 33334 | X | Address and 9-digit ZIP match | Any |
| 66666 | Y | Address and ZIP match | Any |
| 77777 | Z | ZIP match only | Any |

## Cardholder verification (CVV)

The CVV selects the cardholder-verification response code. Any CVV without a trigger of its own comes back as a mismatch, so an arbitrary value is a usable negative case.

| CVV | Response code | Meaning | Card brand |
| --- | --- | --- | --- |
| 111 | M | CVV match | Any |
| 222 | N | CVV no match | Any |
| 333 | P | CVV not processed | Any |
| 444 | S | CVV should be on card | Any |
| 555 | U | Issuer unable to process CVV | Any |
| 666 | (none) | No code returned The response carries no cardholder-verification code at all, which is how you exercise a client that assumes one is always present. | Any |
| 777 | N | CVV no match | Any |
| 2222 | Y | CVV match (Amex CID) | Amex |
| 1111 | N | CVV no match | Amex |
| 9999 | U | Issuer unable to process CVV | Amex |

## Response modifiers

These amounts do not change whether a transaction approves. They change the shape of the response, which is what you want when the thing you are testing is your parser.

| Trigger | Effect |
| --- | --- |
| Visa, amount 1.69, entered manually. | Forces AVS response Y regardless of the billing address sent. |
| Visa, amount 19.58. | Guarantees the authorization code contains the letter D, which is how you exercise a client that parses authorization codes as digits. |
| Visa, any amount from 98.26 to 98.91 inclusive. | Returns downgrade extended error data on the processor response detail. The transaction still approves. |

## Response latency

Send loopback.latencyProfile with one of these names and the sandbox takes a realistic amount of time to answer. Each delay is sampled from a log-normal distribution fitted to the profile's median and 95th percentile, then capped at its 99th, so repeated calls vary the way a real processor does rather than pausing for a fixed interval.

Send loopback.latencyMs instead when you want an exact delay, or custom as the profile name together with the three percentile fields to fit your own distribution.

| Profile | Median | 95th | 99th | What it is for |
| --- | --- | --- | --- | --- |
| none | 0 ms | 0 ms | 0 ms | No delay. The default when no profile is configured. |
| fast | 50 ms | 200 ms | 500 ms | A responsive processor on a good day. |
| typical | 200 ms | 800 ms | 1500 ms | What a healthy card processor usually looks like. |
| slow | 500 ms | 2000 ms | 4000 ms | A degraded processor. Use this to check your own timeouts and retries. |
| timeout | 3000 ms | 10000 ms | 15000 ms | Long enough to trip most client timeouts. Use this to exercise your timeout path. |

## Control fields

Every field the sandbox reads. Send either spelling, on a transaction custom field or an extra property. A control field outranks the amount triggers above.

| Field | Also accepted as | What it does | Example |
| --- | --- | --- | --- |
| loopback.resultCode | loopbackresultcode | Forces the result code, by member name, by numeric value, or by one of the friendly aliases (approve, decline, partial, submit, pending, reject, referral, insufficientfunds, error). Outranks every amount trigger. | decline |
| loopback.result | loopbackresult | Alias of loopback.resultCode, read only when that field is absent. | approve |
| loopback.approved | loopbackapproved | Set to false to force a decline. Ignored when loopback.resultCode is present. | false |
| loopback.declined | loopbackdeclined | Set to true to force a decline. Ignored when loopback.resultCode is present. | true |
| loopback.resultMessage | loopbackmessage | Overrides the result message the simulator returns. | Sale Approved |
| loopback.resultDetail | loopbackdetail | Overrides the longer result detail the simulator returns. | Simulated for integration testing |
| loopback.extendedErrorData | loopbackextendederrordata | Overrides the extended error data on the processor response detail. | PSERV=N; Downgrade Reason = NP |
| loopback.associationCode | loopbackassociationcode | Overrides the association response code, by member name or numeric value. | InsufficientFunds |
| loopback.responseCategory | loopbackresponsecategory | Overrides the response category code, by member name or numeric value. | IssuerCannotApprove |
| loopback.requestedAmount | loopbackrequestedamount | Overrides the amount the amount triggers are matched against, leaving the transaction's own total alone. Useful for provoking a scenario without changing what you are charging. | 10.01 |
| loopback.approvedAmount | loopbackapprovedamount | Overrides the approved amount, which is how you provoke an arbitrary partial approval. | 5.00 |
| loopback.beginningBalance | loopbackbeginningbalance | Overrides the beginning balance on the response amounts. | 25.00 |
| loopback.availableBalance | loopbackavailablebalance | Overrides the available balance on the response amounts. | 20.00 |
| loopback.cashback | loopbackcashback | Overrides the cashback amount on the response amounts. | 20.00 |
| loopback.preauthorized | loopbackpreauthorized | Overrides the preauthorized amount, which otherwise mirrors the approved amount on an authorization. | 10.00 |
| loopback.openToBuy | loopbackopentobuy | Sets the open-to-buy amount on the response amounts. | 150.00 |
| loopback.ewicDiscount | loopbackewicdiscount | Sets the eWIC discount on the response amounts. | 1.25 |
| loopback.transactionFee | loopbacktransactionfee | Sets the transaction fee on the response amounts. | 0.50 |
| loopback.balanceDue | loopbackbalancedue | Overrides the balance due, which otherwise is the requested amount less the approved amount. | 2.00 |
| loopback.avs | loopbackavs | Forces the AVS response code, outranking the ZIP triggers. | N |
| loopback.avsText | loopbackavstext | Overrides the AVS response text. | Address and ZIP do not match |
| loopback.cv | loopbackcv | Forces the cardholder-verification response code, outranking the CVV triggers. | N |
| loopback.cvText | loopbackcvtext | Overrides the cardholder-verification response text. | CVV no match |
| loopback.cvPresence | loopbackcvpresence | Overrides the CVV presence indicator, which forces a verification code of its own: 0 (not submitted) returns P, 2 (illegible) returns S, 9 (not present) returns U. Send 1 (submitted) to leave the CVV triggers in charge. | 2 |
| loopback.streetMatchText | loopbackstreetmatchtext | Overrides the street-match text on the card validation data. | Street address did not match |
| loopback.zipMatchText | loopbackzipmatchtext | Overrides the ZIP-match text on the card validation data. | ZIP did not match |
| loopback.cardBrand | loopbackcardbrand | Overrides the card brand the amount triggers are evaluated for, so a scenario can be provoked without a matching test card. Visa, Mastercard, Amex or Discover. | Visa |
| loopback.cardIndicator | loopbackcardindicator | Overrides the card indicator on the response, and is read as a fallback for the card brand. | Visa |
| loopback.productId | loopbackproductid | Overrides the detailed product id on the response. | Credit |
| loopback.prepaidIndicator | loopbackprepaidindicator | Selects a prepaid scenario table: P for the partial-approval table, B for the balance-response table. | P |
| loopback.partialAuthIndicator | loopbackpartialauthindicator | Set to true to select the partial-approval scenario table, equivalently to sending a prepaid indicator of P. | true |
| loopback.routing | loopbackrouting | Overrides the routing indicator, which otherwise follows the entry mode. | ProcessedAsDebit |
| loopback.authCode | loopbackauthcode | Overrides the authorization code, which is otherwise generated from the transaction id. | SAA1B2 |
| loopback.debitTrace | loopbackdebittrace | Overrides the debit trace number. | 004212 |
| loopback.networkId | loopbacknetworkid | Overrides the authorizing network id. | LBK-NET-01 |
| loopback.networkName | loopbacknetworkname | Overrides the authorizing network name. | Loopback Test Network |
| loopback.signatureRecommended | loopbacksignaturerecommended | Overrides the signature-recommended flag, which otherwise turns on for an approved transaction of 25.00 or more. | false |
| loopback.responseDate | loopbackresponsedate | Overrides the response date, parsed as UTC. | 2026-01-31T18:04:00Z |
| loopback.clientIp | loopbackclientip | Overrides the client IP recorded on the response. | 198.51.100.7 |
| loopback.latencyMs | loopbacklatencyms | Delays the response by exactly this many milliseconds. Outranks every latency profile. | 2500 |
| loopback.latencyProfile | loopbacklatencyprofile | Selects a named latency profile, or custom to use the three percentile fields below. Falls back to the merchant's loopback processor profile when absent. | slow |
| loopback.latencyP50Ms | loopbacklatencyp50ms | Median latency in milliseconds for the custom profile. | 200 |
| loopback.latencyP95Ms | loopbacklatencyp95ms | 95th-percentile latency in milliseconds for the custom profile. | 800 |
| loopback.latencyP99Ms | loopbacklatencyp99ms | 99th-percentile latency ceiling in milliseconds for the custom profile. The sampled delay is clamped here. | 1500 |
| loopback.achReturnCode | loopbackachreturncode | Forces an ACH return with this NACHA code, outranking the ACH amount triggers. Any code is accepted, not only the ones the amount triggers cover. | R05 |
| loopback.achReturnReason | loopbackachreturnreason | Overrides the reason text that accompanies a forced ACH return. Defaults to the catalog's reason for the code, or a generic one for a code the catalog does not carry. | Unauthorized Debit to Consumer Account |
| loopback.secCode | loopbacksec | Overrides the SEC code echoed on the response, which otherwise follows the check data. The SEC code also decides the simulated settlement lag. | WEB |
| loopback.traceNumber | loopbacktracenumber | Overrides the 15-character NACHA trace number, which is otherwise derived from the transaction id so every leg of one transaction shares it. | 123456780001234 |
| loopback.achTraceNumber | loopbackachtracenumber | Alias of loopback.traceNumber, read only when that field is absent. | 123456780001234 |
| loopback.originatingDfi | loopbackoriginatingdfi | Overrides the eight-digit originating DFI, which also forms the leading digits of a derived trace number. | 12345678 |
| loopback.effectiveEntryDate | loopbackeffectiveentrydate | Overrides the effective entry date, which otherwise follows the 4pm Eastern cutoff and rolls over weekends. | 2026-02-02 |
| loopback.settlementDate | loopbacksettlementdate | Overrides the settlement date. A returned entry carries none regardless. | 2026-02-04 |
| loopback.notProcessed | loopbacknotprocessed | Set to true and every loopback profile reports that it did not process the transaction, so authorization failover is attempted and then exhausted. | true |
| loopback.notProcessedProfileId | loopbacknotprocessedprofileid | A comma-separated list of processor profile ids. Only the listed profiles report that they did not process, so the primary can refuse while the fallback approves. | 9f2c4d18-0f4e-4c8b-9c1a-2f0b7d4e6a31 |

## See also

- [All documentation](https://docs.winkpg.io/llms.txt): the machine-readable index of every public page on this site.
