docs: add Level II purchasing data (tax information + purchase order number) - #208
Open
ecunado wants to merge 1 commit into
Open
docs: add Level II purchasing data (tax information + purchase order number)#208ecunado wants to merge 1 commit into
ecunado wants to merge 1 commit into
Conversation
Documents the taxInformation object (taxAmount, taxExempt) and the purchaseOrderNumber field used for Level II purchasing data, on the Transaction Request Object for the sale, moToSale and preAuthorizationCapture operations, and on the MotoSaleRequest object for POST /moto/sale. Adds a dedicated Tax Information reference section covering the pairing rule, the tax-exempt amount rules, the purchase order number format and the agreement-level gating, modeled on the existing Billing section. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
taxInformationobject (taxAmount,taxExempt) and the top-levelpurchaseOrderNumberfield, on:sale,moToSaleandpreAuthorizationCaptureoperations sent viaPOST /transactions.MotoSaleRequestobject, forPOST /moto/sale(server-to-server MOTO sale via card token, no terminal involved).## Tax Informationreference section inrestobjects.md, modeled on theBillingsection added for MOTO AVS (API-58 docs: add Billing object for MoTo AVS support #196).4263/4264),taxAmountmust be0whentaxExemptistrue(4262) and greater than0when it isfalse(4266),purchaseOrderNumberis limited to 25 alphanumeric characters (4267), and Level II data must be enabled on the merchant's agreement (4261).Context
L2DataFeatureBuilder/L2DataFeature), gated by the agreement flagl2DataEnabled, on exactly the operations documented here: authorization/payment (sale), MOTO sale, and pre-authorization capture.Options.taxInformation/Options.purchaseOrderNumber,Level2Operation.applyLevel2).TransactionRequest/EcommMotoSaleRequestnor the terminal's cloud request DTO (CloudFinancialRequest) carry Level II fields today. This PR therefore defines the REST contract ahead of the cloudapi work, the same way API-58 docs: add Billing object for MoTo AVS support #196 landed ahead of the AVS implementation.taxExemptas a boolean, mirroring the Android SDK public API, instead of the gateway'staxAmountIdentifiercode (1= local sales tax,2= tax exempt). This keeps the REST API consistent with how it already exposes booleans where the gateway uses codes (duplicate_check,cardPresent,duplicationCheck) and gives one single object for both endpoints. It does mean cloudapi must maptaxExempttotaxAmountIdentifierwhen forwarding to Viscus, including on the otherwise pass-throughPOST /moto/sale.taxAmountis documented as "the same denomination as theamountfield of the request", becausePOST /transactionsuses minor units andPOST /moto/saleuses major units.saleAndTokenizeCardalso carries Level II data in the Android SDK and would map to the same Viscus payment request, but it is not part of the requested scope; and the already-implemented flatsurchargeAmount/taxAmountfields ofPOST /transactionsare still undocumented inrestapi/.Test plan
yarn buildpasses with no new broken links or anchorsrestobjects.mdpage in the docs site#tax-informationanchor resolves from both the Transaction Request Object and MotoSaleRequest properties tables🤖 Generated with Claude Code