{"templateId":"markdown","sharedDataIds":{},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Transactions","siteUrl":"https://developer.flute.com","description":"Documentation and API reference for integrating Flute payment processing.","lang":"en-US"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"transactions","__idx":0},"children":["Transactions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A transaction is created every time a merchant charges a card or debits an ACH account."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide walks through the full transaction lifecycle for a card payment, start to finish: calculating the amount, creating the transaction, capturing it, adjusting the tip, looking it up, sharing the receipt, and reversing or refunding it. ACH-only steps (holding and releasing a pending ACH transaction) are documented at the end for reference."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"transaction-endpoints","__idx":1},"children":["Transaction Endpoints"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-get-transactions","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v2/transactions"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List transactions."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create a transaction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-get-transactions-transactionid","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v2/transactions/{transactionId}"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Retrieve a transaction by ID."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-calculate-amount","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/calculate-amount"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Calculate the total amount before creating a transaction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-capture","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/capture"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Capture a previously authorized transaction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-tip-adjustment","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/tip-adjustment"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Adjust the tip on an authorized or captured card transaction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-share-receipt","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/share-receipt"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Send a transaction receipt by SMS."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-reversal","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/reversal"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Reverse or refund a specific transaction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/reversal"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Refund or return funds without referencing a specific transaction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-credit","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/credit"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Issue a credit without referencing a specific transaction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-ach-hold","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/ach-hold"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Place a hold on a pending ACH transaction."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-ach-release","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/ach-release"]}]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Release a held ACH transaction."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"card-transaction-workflow","__idx":2},"children":["Card Transaction Workflow"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Follow these steps to process a card transaction from start to finish."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-1--calculate-the-amount","__idx":3},"children":["Step 1 — Calculate the amount"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This step is optional but recommended when the merchant uses zero cost processing (dual pricing, cash discounts, or credit card surcharges)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-calculate-amount","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/calculate-amount"]}]}," with the base amount, currency, and pricing type."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The response breaks the total out by tender type (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cash"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["creditCard"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["debitCard"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ach"]},"), so the merchant can display the correct amount before the customer pays."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"baseAmount\": 100.00,\n  \"currencyCode\": \"USD\",\n  \"pricingType\": \"Card\",\n  \"discountAmount\": 0,\n  \"discountRate\": 5,\n  \"surchargeRate\": 2.5,\n  \"tipAmount\": 15,\n  \"tipRate\": 0\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-2--create-the-transaction","__idx":4},"children":["Step 2 — Create the transaction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions"]}]}," with the payment processor, the amount, and the card details."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Two decisions shape this step:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Saved card vs. new card."]}," Pass a saved ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentMethodId"]},", or supply the card number, security code, and expiration inline. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["billingAddress"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["contactInfo"]}," are optional for a saved card, but populating them for a new card improves processor acceptance."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["captureMethod"]},": ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Auto"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Manual"]},"."]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Auto"]}," authorizes and captures in the same call, so the transaction lands in an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Approved"]}," state immediately. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Manual"]}," only authorizes the funds and returns a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Pending"]}," transaction; capture it later with Step 3."]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"paymentProcessorId\": \"a2f2c2e7-0b23-4682-8f99-ab7707205461\",\n  \"baseAmount\": 100.00,\n  \"currencyCode\": \"USD\",\n  \"referenceId\": \"REF-CARD-SALE-001\",\n  \"isCustomerInitiatedTransaction\": true,\n  \"pricingType\": \"Card\",\n  \"transactionDetails\": {\n    \"cardData\": {\n      \"captureMethod\": \"Manual\",\n      \"paymentMethodId\": \"e397e367-bc4a-4b69-bd78-32e3e12327c2\"\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The response returns the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transactionId"]}," needed for every subsequent step."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-3--capture-the-transaction","__idx":5},"children":["Step 3 — Capture the transaction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Skip this step if Step 2 used ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["captureMethod: Auto"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-capture","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/capture"]}]}," to settle a transaction that was authorized with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["captureMethod: Manual"]},". This is the point where a merchant confirms inventory or finalizes an order total before the money actually moves."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Omit the request body for a full capture, or pass a smaller ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}," for a partial capture (up to the original authorized amount)."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"amount\": 50\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A processor decline on capture returns a 402 error."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-4--adjust-the-tip","__idx":6},"children":["Step 4 — Adjust the tip"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This step is optional and only applies to card-present transactions that use a credit card (not debit), where the tip is added after the initial swipe, such as a restaurant closing a tab."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-tip-adjustment","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/tip-adjustment"]}]}," before the transaction is captured or settled. Both ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchant.IsTipsEnabled"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchant.IsTipAdjustmentEnabled"]}," must be turned on for the merchant."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"tipAmount\": 22.75,\n  \"tipRate\": 0\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Only one of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tipAmount"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tipRate"]}," can be non-zero in a given request."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-5--look-up-the-transaction","__idx":7},"children":["Step 5 — Look up the transaction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-get-transactions-transactionid","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v2/transactions/{transactionId}"]}]}," to retrieve the full details of a single transaction, including its ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amountBreakdown"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["processorResponse"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["addressVerificationServiceResponse"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-get-transactions","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v2/transactions"]}]}," to list transactions with filters such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fromDate"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["toDate"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentMethodType"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["customerId"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["referenceId"]},". This endpoint returns a summarized view; use the single-transaction endpoint above for full detail."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-6--share-the-receipt","__idx":8},"children":["Step 6 — Share the receipt"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This step is optional."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-share-receipt","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/share-receipt"]}]}," to text a receipt to the customer."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"mobilePhoneNumber\": \"+15551234567\",\n  \"hasCustomerConsent\": true\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hasCustomerConsent"]}," must be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]},", or the request is rejected. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mobilePhoneNumber"]}," does not have to match the number on the original transaction; a receipt can go to any number the customer provides."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-7--reverse-or-refund-the-transaction","__idx":9},"children":["Step 7 — Reverse or refund the transaction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This step is optional and only needed if the transaction needs to be reversed or refunded."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-reversal","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/reversal"]}]}," to reverse or refund a specific transaction. The payment method (card or ACH) is auto-detected from the original transaction."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pass an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}," for a partial refund, or omit it for a full reversal."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"amount\": 25\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"step-8--issue-an-unreferenced-refund-or-credit-optional","__idx":10},"children":["Step 8 — Issue an unreferenced refund or credit (optional)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use these endpoints only when there's no Flute transaction to reference, such as a sale that was originally processed outside Flute."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Unreferenced refunds and credits are high-risk transaction types. Funds are returned directly from the merchant's account, even when the original sale was never processed through Flute."]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/reversal"]}," — refunds or returns funds without a reference to a prior transaction."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-credit","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/credit"]}]}," — issues a credit without a reference to a prior transaction."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both endpoints take the same request shape: the processor, the amount, and either a saved payment method or raw card or ACH account details. Saved payment methods are not supported for either endpoint; only raw card or ACH details can be used."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"paymentProcessorId\": \"7538ed96-b5ec-488e-94a0-b44ef5e77833\",\n  \"baseAmount\": 100.00,\n  \"currencyCode\": \"USD\",\n  \"referenceId\": \"ext-ref-123\",\n  \"creditDetails\": {\n    \"cardData\": {\n      \"paymentMethodDetails\": {\n        \"cardNumber\": \"4111111111111111\",\n        \"securityCode\": \"123\",\n        \"expirationMonth\": 12,\n        \"expirationYear\": 2033\n      }\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"ach-specific-steps","__idx":11},"children":["ACH-Specific Steps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following two endpoints only apply to ACH transactions and are not part of the card workflow above."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"holding-an-ach-transaction","__idx":12},"children":["Holding an ACH transaction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-ach-hold","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/ach-hold"]}]}," to place a hold on a pending ACH transaction, for example, while a dispute is investigated."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"releasing-an-ach-transaction","__idx":13},"children":["Releasing an ACH transaction"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Call ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/transactions/flute-v2-post-transactions-transactionid-ach-release","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/transactions/{transactionId}/ach-release"]}]}," to release a previously held ACH transaction."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":14},"children":["Next Steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settlement"]}," — a captured transaction eventually settles and appears in a settlement batch. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/settlements/flute-v2-post-settlements-batches-close","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/settlements/batches/close"]}]}," and ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/api-reference/v2/settlements/flute-v2-get-settlements-batches","style":{"textDecoration":"underline","fontWeight":"normal"}},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v2/settlements/batches"]}]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/getting-started/webhooks"},"children":["Webhooks"]}]}," — subscribe to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction.card.*"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["transaction.ach.*"]}," event types to get notified as a transaction moves through this lifecycle."]}]}]},"headings":[{"value":"Transactions","id":"transactions","depth":1},{"value":"Transaction Endpoints","id":"transaction-endpoints","depth":2},{"value":"Card Transaction Workflow","id":"card-transaction-workflow","depth":2},{"value":"Step 1 — Calculate the amount","id":"step-1--calculate-the-amount","depth":3},{"value":"Step 2 — Create the transaction","id":"step-2--create-the-transaction","depth":3},{"value":"Step 3 — Capture the transaction","id":"step-3--capture-the-transaction","depth":3},{"value":"Step 4 — Adjust the tip","id":"step-4--adjust-the-tip","depth":3},{"value":"Step 5 — Look up the transaction","id":"step-5--look-up-the-transaction","depth":3},{"value":"Step 6 — Share the receipt","id":"step-6--share-the-receipt","depth":3},{"value":"Step 7 — Reverse or refund the transaction","id":"step-7--reverse-or-refund-the-transaction","depth":3},{"value":"Step 8 — Issue an unreferenced refund or credit (optional)","id":"step-8--issue-an-unreferenced-refund-or-credit-optional","depth":3},{"value":"ACH-Specific Steps","id":"ach-specific-steps","depth":2},{"value":"Holding an ACH transaction","id":"holding-an-ach-transaction","depth":3},{"value":"Releasing an ACH transaction","id":"releasing-an-ach-transaction","depth":3},{"value":"Next Steps","id":"next-steps","depth":2}],"frontmatter":{"title":"Transactions","description":"A transaction is created every time a merchant charges a card or debits an ACH account.","seo":{"title":"Transactions"}},"lastModified":"2026-09-15T06:57:09.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/getting-started/transactions","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}