# Creates a transaction

POST {{baseURL}}/v2/transactions
This endpoint creates a transaction.
This endpoint is Idempotent.
See the `idempotency-key` header entry.
For more information, see Idempotency.
This endpoint requires a merchant API token.
A partner API token will result in a permissions error including possibly a 403 response.
See Also:
To list transactions, see GET /v2/transactions.
To capture a transaction, see POST /v2/transactions/{transactionId}/capture.
To calculate a transaction amount, see POST /v2/transactions/calculate-amount.

Endpoint: POST /v2/transactions
Version: V2 Beta
Security: Bearer

## Security:

  - `Bearer` (unknown)
    http bearer JWT

## Header parameters:

  - `idempotency-key` (string)
    Specifies the client-generated `idempotency-key`.

This key is optional.
We recommend using the key to prevent multiple invocations of the operation.
This key makes this request safely retryable, or idempotent.
If the idempotency key is not included, the call will not have idempotency protection.

A retry with the same key, made within the retention window, returns the original response verbatim.
The operation is not repeated.
The retention window, also called the TTL (time to live) is 1440 minutes (24 hours) by default but this setting may be changed.

A retry with the same key while the original request is still processing returns `409 Conflict` (`IdempotencyKeyInProgress`).
Retry again after a short delay.

Reusing the same key with a different request body returns `422 Unprocessable Content` (`IdempotencyKeyConflict`).
Generate a new key for each distinct operation.

A `500` series server error is not stored against the key.
A retry with the same key after a `500` series response processes the request again.

## Request body:

  - `application/json` (unknown)
    Specifies details about the transaction request with payment method and transaction type.

## Request fields (application/json):

  - `paymentProcessorId` (string, required)
    Identifies the payment processor.

Defaults to merchant's default processor.

Example: 76215e54-a85b-4d42-9553-163fe393cb02
    Example: 76215e54-a85b-4d42-9553-163fe393cb02

  - `baseAmount` (number, required)
    Specifies the base transaction amount before adjustments.
Examples:
125
125.5
125.50
    Example: 125.5

  - `billingAddress` (object, required)
    Identifies the address information.

  - `billingAddress.addressLine1` (string)
    Identifies the street address.

Example: 21 E. Main Street
    Example: 21 E. Main Street

  - `billingAddress.addressLine2` (string)
    Identifies additional street address information.

Example: Office 3
    Example: Office 3

  - `billingAddress.city` (string)
    Identifies the name of the city.
Examples:
Chicago
New York
Salt Lake City
    Example: Chicago

  - `billingAddress.stateCode` (string)
    Identifies the state identifier (in two-letter USPS [United States Postal Service] postal code).
For regions outside the US, use the ISO 3166-2 format.
Examples:
TX
WA
IL
    Example: NY

  - `billingAddress.postalCode` (string)
    Identifies the postal or ZIP code.
Examples:
60601
60601-0001
    Example: 60601-0001

  - `billingAddress.countryCode` (string)
    Identifies the country identifier (in two letter ISO 3166-1 format).
This value cannot be cleared on PATCH operations.
Examples:
US
CA
GB
    Example: US

  - `transactionDetails` (object, required)
    Specifies the payment details.
Either `cardData` or `achData` is required.

  - `transactionDetails.cardData` (object)

  - `transactionDetails.cardData.paymentMethodId` (string)
    Specifies the payment method identifier.
This is the identifier of a previously saved ACH account to charge.
We recommend using `paymentMethodId` instead of `accountNumber`.

This field is mutually exclusive with `paymentMethodDetails`.
Provide exactly one.
When set, the parent request's `BillingAddress` and `ContactInfo` are optional (the stored payment method carries this data).
Example: 39a95e35-6d50-45ec-884b-c2417edf005d
    Example: 39a95e35-6d50-45ec-884b-c2417edf005d

  - `transactionDetails.cardData.paymentMethodDetails` (object)

  - `transactionDetails.cardData.paymentMethodDetails.cardNumber` (string)
    Specifies the card number (either credit or debit) used for the transaction.

Example: 4111111111111111
    Example: 4111111111111111

  - `transactionDetails.cardData.paymentMethodDetails.securityCode` (string)
    Specifies the securityCode (sometimes also called similarly to CCV) for the card.

This is a three or four digit security code on the credit card.

Example: 483
    Example: 483

  - `transactionDetails.cardData.paymentMethodDetails.expirationMonth` (integer)
    Identifies the expiration month (in a two-digit number format) of the card.
Examples:
07
12
    Example: 12

  - `transactionDetails.cardData.paymentMethodDetails.expirationYear` (integer)
    Identifies the expiration year (in a four-digit number) of the card.

Example: 2032
    Example: 2032

  - `transactionDetails.achData` (object)

  - `transactionDetails.achData.secCode` (string, required)
    Indicates the ACH SEC (standard entry class) code.
Valid values are:
| Code | Description |
|  --- | --- |
| CCD | Used for business to business payments. |
| PPD | Used for consumer payments like payroll or bill pay. |
| Web | Used for a payment authorized on a website. |

Example: CCD
    Enum: "Web", "PPD", "CCD"

  - `transactionDetails.achData.requesterIpAddress` (string, required)
    Specifies the IP address (in IPv4 or IPv6 format3) of the end user.

This end user may be the customer, operator, or application responsible for submitting the transaction.
This is required for audit and fraud-detection purposes.

Example: 192.168.1.1
    Example: 192.168.1.1

  - `transactionDetails.achData.paymentMethodId` (string)
    Specifies the payment method identifier.
This is the identifier of a previously saved ACH account to charge.
We recommend using `paymentMethodId` instead of `accountNumber`.

This field is mutually exclusive with `paymentMethodDetails`.
Provide exactly one.
When set, the parent request's `BillingAddress` and `ContactInfo` are optional (the stored payment method carries this data).
Example: 39a95e35-6d50-45ec-884b-c2417edf005d
    Example: 39a95e35-6d50-45ec-884b-c2417edf005d

  - `transactionDetails.achData.paymentMethodDetails` (object)
    Specifies an object describing the payment method details.

This field is mutually exclusive with `paymentMethodId`.
Provide exactly one.

  - `transactionDetails.achData.paymentMethodDetails.accountNumber` (string)
    Specifies the bank account number for the ACH transaction.
We recommend avoiding the use of an account number.
Instead, use `paymentMethodId` when possible.
Example: 1234567890
    Example: 1234567890

  - `transactionDetails.achData.paymentMethodDetails.routingNumber` (string)
    Specifies the ACH's account routing number.

Example: 021000021
    Example: 021000021

  - `transactionDetails.achData.paymentMethodDetails.accountHolderType` (string)
    Identifies the holder type of the account.
Valid values are:
| Type | Description |
|  --- | --- |
| Business | Card issued to a business or company account. |
| Personal | Card issued to an individual for personal use. |

Example: Business
    Enum: "Business", "Personal"

  - `transactionDetails.achData.paymentMethodDetails.accountType` (string)
    Identifies the type of the account.
Valid values are:
| Type | Description |
|  --- | --- |
| Checking | Account used for regular daily transactions. |
| Savings | Account used to hold and grow funds over time. |

Example: Checking
    Enum: "Checking", "Savings"

  - `transactionDetails.achData.paymentMethodDetails.taxId` (string)
    Specifies the tax identifier.

Example: 12-3456789
    Example: 12-3456789

  - `transactionDetails.achData.isSameDayProcessing` (boolean)
    Specifies same-day ACH processing for faster settlement.
If `true`, the transaction uses the same-day ACH processing.
If `false`, the transaction does not use the same-day ACH processing.
If null or omitted, the default standard ACH processing is used.
Example: true
    Example: true

  - `customerId` (string)
    Identifies the customer to link this payment method to.

This value may be null when this payment method is an orphan owned by the merchant directly.
An orphan payment method is a payment method in the merchant's vault but has no customer record associated with it.

Example: 8fa8e727-73c6-436e-b56f-6f55aabf3b1c
    Example: 8fa8e727-73c6-436e-b56f-6f55aabf3b1c

  - `currencyCode` (string)
    Identifies the transaction's currency code (in uppercase ISO 4217 currency code).

Example: USD
    Enum: "USD"

  - `referenceId` (string)
    Specifies a reference identifier provided by the merchant.

This is included in the duplicate-check key.
It allows the same card and amount combination to be charged multiple times when the reference identifiers are different.

Example: REF-EXT-12345
    Example: REF-EXT-12345

  - `isCustomerInitiatedTransaction` (boolean)
    Specifies a transaction is initiated by a customer or a merchant.
If `true`, the transaction is initiated by customer.
If `false`, the transaction is initiated by a merchant.
Example: true
    Example: true

  - `pricingType` (string)
    Identifies the type of pricing.
This value is required only when Dual Pricing is enabled.
Valid values are:
| Status | Explanation |
|  --- | --- |
| Card | The transaction uses the card price, which may include a surcharge. |
| Cash | The transaction uses the cash price, which may include a cash discount. |

Example: Card
    Enum: "Card", "Cash"

  - `extraAmounts` (object)
    Identifies the extra amounts for the transaction.

To accept tips, the merchant is required to have tips enabled and tip-adjustment disabled.
If tip collection is enabled and committed at creation time, the tip gets prompted to the customer directly on the device.

  - `extraAmounts.tipAmount` (number)
    Identifies the absolute amount (in USD) of the tip to be added.
If this value is provided, it must be greater than zero.
This amount adds to the base amount of the original transaction.
That transaction must be authorized first (`POST /pay-api/v1/transactions/auth`).
If the tip collection is enabled on the merchant settings and committed during POS transaction creation, the tip will be prompted to the customer directly on the device.

Care must be taken that a value other than zero can be provided to either `tipAmount` or `tipRate`.
A non-zero value cannot be provided to both.

Example: 14.50 (for $14.50)
    Example: 14.5

  - `extraAmounts.tipRate` (number)
    Identifies a tip percentage to be added.
If this value is provided, it must be greater than zero.
This amount adds to the base amount of the original transaction.
That transaction must be authorized first.

Care must be taken that a value other than zero can be provided to either `tipAmount` or `tipRate`.
A non-zero value cannot be provided to both.

Example: 18.50 (for 18.50%)
    Example: 18.5

  - `extraAmounts.discountAmount` (number)
    Identifies the absolute amount (in USD) of discount to be applied.
If this value is provided, it must be greater than zero.

Care must be taken that a value other than zero can be provided to either `discountAmount` or `discountRate`.
A non-zero value cannot be provided to both.

Example: 25 (for $25)
    Example: 25

  - `extraAmounts.discountRate` (number)
    Identifies a percentage of a discount to be applied.
If this value is provided, it must be greater than zero.

Care must be taken that a value other than zero can be provided to either `discountAmount` or `discountRate`.
A non-zero value cannot be provided to both.

Example: 5.5 (for 5.5%)
    Example: 5.5

  - `extraAmounts.surchargeRate` (number)
    Identifies the percent of transaction amount.
Example: 2.5 (for 2.5%)
    Example: 2.5

  - `transactionEnhancedData` (object)
    Specifies a combined Level 2 and Level 3 enhanced data for card transactions.
Used for commercial card processing with additional transaction details.

  - `transactionEnhancedData.salesTaxRate` (number)
    Specifies the sales tax rate.
Example: 8.5 (for 8.5%)
    Example: 8.5

  - `transactionEnhancedData.invoiceNumber` (string)
    Specifies the VAT (value added tax) invoice number associated with the transaction.

The code may only contain letters, digits, and spaces.

Example: INV-001234
    Example: INV-001234

  - `transactionEnhancedData.purchaseOrder` (string)
    Specifies the value used by the customer to identify an order.

Issued by the buyer to the seller.

The code may only contain letters, digits, and spaces.

Example: PO-2026-0001
    Example: PO-2026-0001

  - `transactionEnhancedData.shippingCharges` (number)
    Specifies the amount (in USD) for shipping or freight charges applied to a product or transaction.
Example: 129.99 (for $129.99)
    Example: 129.99

  - `transactionEnhancedData.dutyCharges` (number)
    Specifies the total charges for any import or export duties included in the order.
Example: 2.5 (for 2.5%)
    Example: 2.5

  - `transactionEnhancedData.products` (array)
    Multiple products may be sent in a single request.

  - `transactionEnhancedData.products.productName` (string)
    Specifies the name of the product.

The code may only contain letters, digits, spaces, slashes, hyphen, and commas.

Example: Express Duo
    Example: Express Duo

  - `transactionEnhancedData.products.productDescription` (string)
    Specifies the description of the product.

Example: Standard office supplies
    Example: Standard office supplies

  - `transactionEnhancedData.products.productCode` (string)
    Specifies the merchant's assigned unique product identification code.

The code may only contain letters, digits, spaces, slashes, hyphen, and commas.

Example: HLA/6372
    Example: HLA/6372

  - `transactionEnhancedData.products.unitPrice` (number)
    Specifies the product price (in USD) for each unit.
Example: 3.99 (for $3.99)
    Example: 3.99

  - `transactionEnhancedData.products.measurementUnit` (string)
    Specifies the unit of measurement for the product.
The code may only contain letters, digits, and spaces.
No special characters are allowed.
Examples:
EA
LB
DAY
    Example: EA

  - `transactionEnhancedData.products.quantity` (number)
    Specifies the quantity of a product.

Example: 12
    Example: 12

  - `transactionEnhancedData.products.taxAmount` (number)
    Specifies the tax amount established on a product.
Example: 3.75 (for 3.75%)
    Example: 3.75

  - `transactionEnhancedData.products.discountRate` (number)
    Specifies the discount percentage applied to a product.
Examples:
10 (for 10%)
2.5 (for 2.5%)
    Example: 10

  - `contactInfo` (object)
    Contact information.

  - `contactInfo.firstName` (string)
    Specifies the customer's first name.

Example: Alexandro
    Example: Alexandro

  - `contactInfo.lastName` (string)
    Specifies the customer's last name.

Example: Peppared
    Example: Peppared

  - `contactInfo.companyName` (string)
    Specifies the name of the customer's company or organization.

Example: Peppared Street Cafe
    Example: Peppared Street Cafe

  - `contactInfo.email` (string)
    Specifies the customer's email.
Example: peppared@example.com
    Example: peppared@example.com

  - `contactInfo.mobilePhoneNumber` (string)
    Specifies the customer's mobile phone number.
Example: +14155552309
    Example: +14155552309

  - `contactInfo.hasSmsConsent` (boolean)
    Specifies the customer has consented to receiving the SMS.
If `true`, the customer has consented to receiving the SMS.
If `false`, the customer has not consented to receiving the SMS.
Example: true
    Example: true

  - `deviceId` (string)
    Specifies a device identifier from mobile app.
If included and the device has a linked user profile, the transaction is attributed to that user.
If null or omitted, no attribution is made.
example: 088642a8-9082-4496-be63-8120765c5ad3
    Example: 088642a8-9082-4496-be63-8120765c5ad3

  - `platform` (string)
    Specifies the platform of the mobile phone.
Valid values are:
| Item | Explanation |
|  --- | --- |
| Android | Mobile operating system by Google. |
| iOS | Mobile operating system by Apple. |

Example: iOS
    Enum: "iOS", "Android"

  - `appVersion` (string)
    Specifies the version of the mobile app used to process the transaction.

Example: 1.4.2
    Example: 1.4.2

  - `sdkVersion` (string)
    Specifies the version of the SDK used to process the transaction.

Example: 2.0.1
    Example: 2.0.1

## Request examples:

  - `Card — saved payment method` (unknown)
    Specifies a charge a with a previously saved card.

`billingAddress` and `contactInfo` are optional because the stored payment method already carries that data.

  - `Card — new card` (unknown)
    Specifies a charge with card details supplied inline.

Populating `billingAddress` and `contactInfo` is recommended to improve processor acceptance.

  - `ACH — saved payment method` (unknown)
    Specifies a debit with a previously saved ACH account.

Populating `billingAddress` and `contactInfo` is recommended to improve processor acceptance.

  - `ACH — new account` (unknown)
    Specifies a debit for an ACH account with routing or account details supplied inline.

Populating `billingAddress` and `contactInfo` is recommended to improve processor acceptance.

## Response 200:

  - `200` (unknown)
    OK

## Response 200 fields (application/json):

  - `transactionId` (string)
    Indicates the attached transaction identifier.

This value is available after processing.

Example: f01339ec-8184-48c7-b58d-0780d6499ef4
    Example: f01339ec-8184-48c7-b58d-0780d6499ef4

  - `transactionDateTime` (string)
    Indicates the date-time (in an ISO 8601 date-time format) of the transaction.

Example: 2026-05-05T14:30:42.938Z
    Example: 2026-05-05T14:30:42.938Z

  - `transactionStatus` (string)
    Indicates the aggregated transaction status.
Valid values are:
| Status | Description |
|  --- | --- |
| Authorized | Payment approved but funds not yet captured. |
| Cancelled | Transaction stopped before it completed. |
| Captured | Approved funds collected from the card. |
| ChargedBack | Cardholder disputed the charge with their bank. |
| Cleared | Funds finished processing and settled. |
| Declined | Payment rejected by the bank or processor. |
| Failed | Transaction could not complete due to an error. |
| Held | Transaction paused and awaiting release. |
| HeldByProcessor | Processor paused the transaction for review. |
| Informational | Record used for reference only, not a live charge. |
| InProgress | Transaction is still processing. |
| PartiallyAuthorized | Only part of the requested amount was approved. |
| Pending | Transaction is waiting for a result. |
| Refunded | Funds returned to the cardholder. |
| Scheduled | Transaction set to run at a future time. |
| Settled | Funds moved from issuer to the merchant account. |
| Verified | Card or account confirmed as valid. |
| Voided | Authorization canceled before capture. |

Example: Authorized
    Enum: "Authorized", "Captured", "Voided", "Refunded", "Verified", "Settled", "PartiallyAuthorized", "Informational", "Scheduled", "Cancelled", "ChargedBack", "InProgress", "Cleared", "Held", "HeldByProcessor", "Pending", "Declined", "Failed"

  - `transactionType` (string)
    Identifies the type of the transaction.
Valid values are:
| Type | Explanation |
|  --- | --- |
| AchCancel | Cancels a pending ACH transaction. |
| AchCredit | Sends funds to a bank account. |
| AchDebit | Pulls funds from a bank account. |
| AchHold | Holds an ACH transaction temporarily. |
| AchRefund | Returns funds from an ACH payment. |
| AchUnHold | Releases a held ACH transaction. |
| Authorization | Reserves funds for later capture. |
| Capture | Collects funds from an authorization. |
| CardAuthentication | Confirms cardholder identity before payment. |
| Refund | Returns funds from a transaction. |
| RefundWORef | Refunds a transaction without a reference. |
| Sale | Authorizes and captures funds together. |
| Settle | Submits a batch for final processing. |
| TipAdjustment | Changes the tip amount on a transaction. |
| Void | Cancels a transaction before settlement. |

Example: AchDebit
    Enum: "AchCancel", "AchCredit", "AchDebit", "AchHold", "AchRefund", "AchUnHold", "Authorization", "Capture", "CardAuthentication", "Refund", "RefundWORef", "Sale", "Settle", "TipAdjustment", "Void"

  - `cardTokenType` (string)
    Indicates the type of the token.
Valid values are:
| Type | Meaning |
|  --- | --- |
| Local | Tokenized and stored within Flute's own vault |
| Network | Tokenized through a card network, such as Visa or Mastercard, using their network tokenization services |

Example: Local
    Enum: "Local", "Network"

  - `paymentMethodType` (string)
    Identifies the payment method type.
Valid values are:
| Type | Description |
|  --- | --- |
| ACH | Payment made through an ACH bank transfer. |
| Card | Payment made with a credit or debit card. |
| Cash | Payment made with physical currency. |

Example: Card
    Enum: "Card", "ACH", "Cash"

  - `referenceId` (string)
    Indicates a reference identifier provided by the merchant.

This is included in the duplicate-check key.
It allows the same card and amount combination to be charged multiple times when the reference identifiers are different.

Example: REF-EXT-12345
    Example: REF-EXT-12345

  - `originalTransactionId` (string)
    Indicates the original transaction identifier.
This value will be provided if the current transaction is a card refund.
Otherwise, it will be null or omitted.
Example: 4d5d19c0-7b8c-4d9e-0f1a-2b3c4d5e6f92
    Example: 4d5d19c0-7b8c-4d9e-0f1a-2b3c4d5e6f92

  - `processedAmount` (number)
    Indicates the transaction amount (in USD).
The value will be null until the transaction is completed.
Examples:
87.39 (for $87.39)
null
    Example: 87.39

  - `refundDetails` (object)
    Indicates an object detailing the refund posture for a transaction that can be refunded.

This value is null on transactions that are themselves refunds or credits.
Those cannot be refunded again.

  - `refundDetails.refundedAmount` (number)
    Indicates the total amount (in USD) already refunded against this transaction.
Examples:
56.99
0
    Example: 0

  - `refundDetails.availableRefundAmount` (number)
    Indicates the amount (in USD) still refundable.
Example: 120.99 (for $120.99)
    Example: 120.99

  - `refundDetails.isFullyRefunded` (boolean)
    Indicates the amount has been fully refunded.
If `true`, the amount has been fully refunded.
If `false`, the amount has not been fully refunded.
Example: true
    Example: true

  - `currencyCode` (string)
    Identifies the transaction's currency code (in uppercase ISO 4217 currency code).

Example: USD
    Enum: "USD"

  - `pricingType` (string)
    Identifies the type of pricing.
This value is required only when Dual Pricing is enabled.
Valid values are:
| Status | Explanation |
|  --- | --- |
| Card | The transaction uses the card price, which may include a surcharge. |
| Cash | The transaction uses the cash price, which may include a cash discount. |

Example: Card
    Enum: "Card", "Cash"

  - `merchantId` (string)
    Identifies the merchant identifier.

Example: 5611f824-48ef-4255-978d-91ce13953bbd
    Example: 5611f824-48ef-4255-978d-91ce13953bbd

  - `paymentProcessorId` (string)
    Identifies the payment processor.

Defaults to merchant's default processor.

Example: 76215e54-a85b-4d42-9553-163fe393cb02
    Example: 76215e54-a85b-4d42-9553-163fe393cb02

  - `customerId` (string)
    Identifies the customer to link this payment method to.

This value may be null when this payment method is an orphan owned by the merchant directly.
An orphan payment method is a payment method in the merchant's vault but has no customer record associated with it.

Example: 8fa8e727-73c6-436e-b56f-6f55aabf3b1c
    Example: 8fa8e727-73c6-436e-b56f-6f55aabf3b1c

  - `batchId` (string)
    Indicates the batch settlement identifier.

Example: 42df0a13-4bf4-48f8-929c-08a379c0a0d6
    Example: 42df0a13-4bf4-48f8-929c-08a379c0a0d6

  - `amountBreakdown` (object)
    Indicates an object detailing the amount breakdown details.

  - `amountBreakdown.baseAmount` (number)
    Identifies the base transaction amount (in USD) before adjustments.
Examples:
125
125.5
125.50
    Example: 125.5

  - `amountBreakdown.tipAmount` (number)
    Indicates the absolute amount (in USD) of the tip to be added.
If this value is provided, it must be greater than zero.
This amount adds to the base amount of the original transaction.
That transaction must be authorized first (`POST /pay-api/v1/transactions/auth`).

Care must be taken that a value other than zero can be provided to either `tipAmount` or `tipRate`.
A non-zero value cannot be provided to both.

Example: 14.50 (for $14.50)
    Example: 14.5

  - `amountBreakdown.tipRate` (number)
    Indicates a percentage of the tip to be added.
If this value is provided, it must be greater than zero.
This amount adds to the base amount of the original transaction.
That transaction must be authorized first (`POST /pay-api/v1/transactions/auth`).

Care must be taken that a value other than zero can be provided to either `tipAmount` or `tipRate`.
A non-zero value cannot be provided to both.

Example: 18.50 (for 18.50%)
    Example: 18.5

  - `amountBreakdown.discountAmount` (number)
    Indicates the absolute amount (in USD) of discount to be applied.
If this value is provided, it must be greater than zero.
Example: 25 (for $25)
    Example: 25

  - `amountBreakdown.discountRate` (number)
    Indicates a percentage of a discount to be applied.
If this value is provided, it must be greater than zero.

Care must be taken that a value other than zero can be provided to either `discountAmount` or `discountRate`.
A non-zero value cannot be provided to both.

Example: 5.5 (for 5.5%)
    Example: 5.5

  - `amountBreakdown.surchargeAmount` (number)
    Indicates the surcharge amount (in USD) applied.

Care must be taken that a value other than zero can be provided to either `discountAmount` or `discountRate`.
A non-zero value cannot be provided to both.

Example: 22 (for $22)
    Example: 22

  - `amountBreakdown.surchargeRate` (number)
    Indicates the percent of transaction amount.
This value is added to the base amount after `percentageOffRate` has been applied.
Care must be taken that a value other than zero can be provided to either `surchargeAmount` or `surchargeRate`.
A non-zero value cannot be provided to both.
Example: 2.5 (for 2.5%)
    Example: 2.5

  - `taxDetails` (object)
    Identifies the tax charged on the transaction.
A checkout session or a payment link configures the tax.
This object is `null` when the transaction carries no tax.
It is also `null` when the only tax sent was a level 2 sales tax rate.
A level 2 sales tax rate qualifies the transaction for interchange. The payer is not charged it.
This differs from the tax in the amount breakdown.
The amount breakdown reports only a tax that raised the total.
An `Inclusive` tax is already inside the base amount, so the amount breakdown reports it as 0.

  - `taxDetails.taxMode` (string)
    Indicates how the tax applies to the amount.
| Name | Description |
|  --- | --- |
| Exclusive | The tax was added on top of the amount. |
| Inclusive | The amount already includes the tax. No extra amount was added. |

Example: Inclusive
    Enum: "Exclusive", "Inclusive"

  - `taxDetails.taxRate` (number)
    Indicates the tax rate percentage the tax was configured at.
An invoice supplies its own tax amount.
Its rate is recorded and does not need to reproduce `taxAmount`.
A resource that supplies only a tax amount has the rate derived from it.
Example: 8.5 (for 8.5%)
    Example: 8.5

  - `taxDetails.taxAmount` (number)
    Indicates the tax amount (in USD) the transaction was quoted at, whatever the mode.
It describes the quote, as the amount breakdown does.
A capture or a host approval for less leaves it unchanged.
`processedAmount` reports what was taken.
Example: 7.83 (for $7.83)
    Example: 7.83

  - `taxDetails.taxableAmount` (number)
    Indicates the amount (in USD) the quote charged before the tax.
It is the quote's total less the tip, the surcharge, and an `Exclusive` tax.
The tip, the surcharge, and an `Exclusive` tax are charged outside the taxed amount.
When the tax is `Inclusive`, `taxAmount` is also subtracted, because the tax is already inside the total.
With a rate-driven tax, this is the amount the rate was applied to, to the cent.
It can differ from that amount by 0.01, because each quote component is rounded before it is stored.
With a supplied tax amount, it is still what was charged before the tax.
It is not the narrower base the supplied amount was computed on.
Example: 92.17 (for $92.17)
    Example: 92.17

  - `cardDetails` (object)
    Indicates the card details exposed on transaction responses.

These may be masked for sensitive fields or fully displayed for non-sensitive fields.

  - `cardDetails.paymentMethodId` (string)
    Indicates the payment method identifier.

This is the identifier of a previously saved ACH account to charge.

Example: 39a95e35-6d50-45ec-884b-c2417edf005d
    Example: 39a95e35-6d50-45ec-884b-c2417edf005d

  - `cardDetails.maskedCardNumber` (string)
    Indicates the masked card number.
This displays only the last four numbers.
Example: ************1111
    Example: ************1111

  - `cardDetails.cardBrand` (string)
    Indicates the brand of the card.
Valid values are:
| Type | Description |
|  --- | --- |
| Amex | Card issued by the American Express network. |
| DinersClub | Card issued by the Diners Club network. |
| Discover | Card issued by the Discover network. |
| JCB | Card issued by the Japan Credit Bureau network. |
| Maestro | Debit card issued by the Maestro network. |
| MasterCard | Card issued by the Mastercard network. |
| MIR | Card issued by the Mir network. |
| RuPay | Card issued by the RuPay network. |
| UnionPay | Card issued by the UnionPay network. |
| Unknown | Card type could not be determined. |
| VISA | Card issued by the Visa network. |

Example: VISA
    Enum: "Amex", "DinersClub", "Discover", "JCB", "Maestro", "MasterCard", "MIR", "RuPay", "UnionPay", "Unknown", "VISA"

  - `cardDetails.cardType` (string)
    Indicates the card as either credit or debit.
Valid values are:
| Type | Description |
|  --- | --- |
| Credit | Card draws funds from a credit line. |
| Debit | Card draws funds from a bank account. |
| Unknown | Card funding type could not be determined. |

Example: Credit
    Enum: "Credit", "Debit", "Unknown"

  - `cardDetails.cardProcessedAsType` (string)
    Indicates the network should process the transaction as a credit or a debit transaction.
The actual processing is specified with `processCreditDebitType`.
This can differ from `cardType`, which reflects the card's own funding classification.
A card issued as debit can be processed as credit, and a card issued as credit can be processed as debit.
Processing type depends on network routing, chip fallback behavior, and issuer rules at the time of authorization.
Valid values are:
| Type | Description |
|  --- | --- |
| Credit | The transaction was processed as a credit transaction. |
| Debit | The transaction was processed as a debit transaction. |
| Unknown | The processing type could not be determined. |

Example: Credit
    Enum: "Credit", "Debit", "Unknown"

  - `cardDetails.cardDataSource` (string)
    Indicates the source of the card (credit or debit).
Valid values are:
| Item | Explanation |
|  --- | --- |
| EMV | Chip read using EMV tags. |
| EMVContactless | Tap chip read using EMV tags. |
| FallbackSwipe | Swipe used after failed chip read. |
| Internet | Virtual terminal or API entry. |
| Manual | Card present, keyed entry. |
| NFC | Contactless tap using EMV tags and track data. |
| Swipe | Magnetic stripe track data read. |

Example: Swipe
    Enum: "Internet", "Swipe", "NFC", "EMV", "EMVContactless", "FallbackSwipe", "Manual"

  - `cardDetails.cardholderVerificationMethod` (string)
    Indicates the method the cardholder was authenticated with.
Valid values are:
| Item | Explanation |
|  --- | --- |
| ElectronicSignatureAnalysis | Electronic signature captured and analyzed. |
| ETicketEnvAmex | E-ticket environment specific to American Express. |
| ManualOther | Other manual verification method. |
| ManualSignature | Paper or screen signature obtained. |
| NotAuthenticated | No cardholder verification performed. |
| OfflinePin | Offline PIN verified by card chip, no network. |
| PIN | Online PIN verified by issuer. |
| SystematicOther | Systematic or automated method not listed. |
| Unknown | Verification method is unknown. |

Example: PIN
    Enum: "NotAuthenticated", "PIN", "ElectronicSignatureAnalysis", "ManualSignature", "ManualOther", "Unknown", "SystematicOther", "ETicketEnvAmex", "OfflinePin"

  - `cardDetails.emvTags` (object)

  - `cardDetails.emvTags.ac` (string)
    Indicates the AC (application cryptogram).

This is the cryptographic value generated by the card chip so the issuer can authenticate the transaction.

Example: A123456789ABCDEF
    Example: A123456789ABCDEF

  - `cardDetails.emvTags.tvr` (string)
    Indicates the TVR (terminal verification results).

This is a bitmask showing which checks the terminal ran and the success status of each one.
The individual checks include data authentication, cardholder verification, and risk management.

Example: 0000008000
    Example: 0000008000

  - `cardDetails.emvTags.tsi` (string)
    Indicates the TSI (transaction status information).

This is a bitmask showing which processes were actually performed during the transaction.

Example: E800
    Example: E800

  - `cardDetails.emvTags.aid` (string)
    Indicates the AID (application identifier).

This identifies the specific card payment application on the chip, such as Visa Credit or Mastercard Debit.

Example: A0000000031010
    Example: A0000000031010

  - `cardDetails.emvTags.applicationLabel` (string)
    Indicates the application Label.

This is the human-readable name of that application, often shown on the terminal display.

Example: VISA CREDIT
    Example: VISA CREDIT

  - `cardDetails.emvTags.rawTags` (array)
    Indicates the EMV chip transaction data elements, or tags. 

Each data element is identified by its own hex tag number according to the EMV specifications.
For example, the five most commonly needed ones are: ac (9F26), tvr (95), tsi (9B), aid (4F), and applicationLabel (50).
An actual EMV transaction can return many more tags than that, sometimes with dozens of possible values.

This tag array object contains all the returned pairings.

  - `cardDetails.emvTags.rawTags.key` (string)
    Indicates the key of the pair.

Example: ac
    Example: ac

  - `cardDetails.emvTags.rawTags.value` (string)
    Indicates the value of the pair.

Example: 9F26
    Example: 9F26

  - `achDetails` (object)
    Indicates ACH account details exposed on transaction responses.

These may be masked for sensitive fields or fully displayed for non-sensitive fields.

  - `achDetails.maskedAccountNumber` (string)
    Indicates the masked ACH account number.
This displays only the last four numbers.
Example: **************89
    Example: **************89

  - `achDetails.accountRoutingNumber` (string)
    Indicates the masked ACH routing number.

Example: 123123123
    Example: 123123123

  - `achDetails.accountHolderType` (string)
    Identifies the holder type of the account.
Valid values are:
| Type | Description |
|  --- | --- |
| Business | Card issued to a business or company account. |
| Personal | Card issued to an individual for personal use. |

Example: Business
    Enum: "Business", "Personal"

  - `achDetails.accountType` (string)
    Identifies the type of the account.
Valid values are:
| Type | Description |
|  --- | --- |
| Checking | Account used for regular daily transactions. |
| Savings | Account used to hold and grow funds over time. |

Example: Checking
    Enum: "Checking", "Savings"

  - `achDetails.secCode` (string)
    Indicates the ACH SEC (standard entry class) code.
Valid values are:
| Code | Description |
|  --- | --- |
| CCD | Used for business to business payments. |
| PPD | Used for consumer payments like payroll or bill pay. |
| Web | Used for a payment authorized on a website. |

Example: CCD
    Enum: "Web", "PPD", "CCD"

  - `achDetails.isSameDayProcessing` (boolean)
    Indicates same-day ACH processing for faster settlement.
If `true`, the transaction uses the same-day ACH processing.
If `false`, the transaction does not use the same-day ACH processing.
If null or omitted, the default standard ACH processing is used.
Example: true
    Example: true

  - `achDetails.requesterIpAddress` (string)
    Indicates the IP address of the end user.
Valid IP address formats are:
IPv4
IPv6 format3
This end user may be the customer, operator, or application responsible for submitting the transaction.
This is required for audit and fraud-detection purposes.
Example: 192.168.1.1
    Example: 192.168.1.1

  - `processorDetails` (object)
    Payment processor identifiers for a transaction.

  - `processorDetails.mid` (string)
    Indicates the MID (merchant identifier) assigned by the processor.

Example: 932129304958123
    Example: 932129304958123

  - `processorDetails.tid` (string)
    Indicates the TID (terminal identifier) assigned by the processor.

example: 6095275263
    Example: 6095275263

  - `processorDetails.authCode` (string)
    Indicates the authorization code returned by the processor.

Example: VTLMC1
    Example: VTLMC1

  - `processorDetails.rrn` (string)
    Indicates the RRN (retrieval reference number) returned by the processor.

Example: 59d5df1aa58d4de3969175eeece571c1
    Example: 59d5df1aa58d4de3969175eeece571c1

  - `declineDetails` (object)
    Indicates an object detailing a declined or failed transaction.
This value is null when the transaction was approved or is pending.

  - `declineDetails.code` (string)
    Indicates the decline or failure code from the processor or gateway.

Example: 41
    Example: 41

  - `declineDetails.message` (string)
    Indicates a human-readable decline or failure message.

Example: Do Not Honor
    Example: Do Not Honor

  - `addressVerificationServiceResponse` (object)
    Indicates the AVS (address verification service) response for card payments.

  - `addressVerificationServiceResponse.action` (string)
    Indicates allowing an action after address verification.
Valid values are:
| Status | Explanation |
|  --- | --- |
| Allow | If address verification passes, the payment proceeds. |
| Deny | If address verification does not pass, the payment is denied. |

Example: Allow
    Enum: "Allow", "Deny"

  - `addressVerificationServiceResponse.responseCode` (string)
    Indicates the AVS (address verification service) response code from processor.

Example: A
    Example: Y

  - `addressVerificationServiceResponse.description` (string)
    Indicates the description of the AVS (address verification service) result code description.

Example: Address and ZIP match
    Example: Address and ZIP match

  - `transactionEvents` (array)
    Indicates an object detailing the chronological list of events that occurred for this transaction.

  - `transactionEvents.transactionEventType` (string)
    Indicates the type of the event.
Valid values are:
| Type | Description |
|  --- | --- |
| Authorization | Authorizes the transaction. |
| Capture | Collects funds from an approved authorization. |
| CardAuthentication | Confirms cardholder identity before payment. |
| Credit | Sends funds back to a cardholder outside a refund. |
| Hold | Pauses a transaction or account temporarily. |
| Refund | Returns funds for a completed sale. |
| Sale | Authorizes and captures payment in one step. |
| Settle | Submits a batch for final processing. |
| TipAdjustment | Adds or changes a tip after the sale. |
| UnHold | Removes a hold and resumes normal activity. |
| Void | Cancels a transaction before it settles. |

Example: Authorization
    Enum: "Authorization", "Sale", "Capture", "Void", "Refund", "TipAdjustment", "CardAuthentication", "Hold", "UnHold", "Credit", "Settle"

  - `transactionEvents.transactionEventStatus` (string)
    Indicates the status of the event.
| Value | Description |
|  --- | --- |
| Approved | The processor approved the event. |
| Declined | The processor declined the event. |
| Failed | The event ended in an error before a processor decision. |
| Pending | The event is waiting for a result. |

Example: Approved
    Enum: "Pending", "Approved", "Declined", "Failed"

  - `transactionEvents.transactionEventDateTime` (string)
    Indicates the date-time (in an ISO 8601 date-time format) the event occurred.

Example: 2026-06-15T14:30:00Z
    Example: 2026-06-15T14:30:00Z

  - `transactionEvents.processedAmount` (number)
    Indicates the amount (in USD) processed for this event.
Example: 120.99 (for $120.99)
    Example: 120.99

  - `transactionEvents.declineDetails` (object)
    Indicates an object detailing a declined or failed event.

This value is null when the event was approved or is pending.

  - `transactionEvents.declineDetails.code` (string)
    Indicates the decline or failure code from the processor or gateway.

Example: 41
    Example: 41

  - `transactionEvents.declineDetails.message` (string)
    Indicates a human-readable decline or failure message.

Example: HOLD-CALL
    Example: HOLD-CALL

  - `source` (object)
    Indicates an object describing the origination of the transaction.

  - `source.sourceType` (string)
    Indicates the source of the transaction.
Valid values are:
| Value | Description |
|  --- | --- |
| ApiKey | An external application created the transaction using an API key. |
| Invoice | A billed invoice created the transaction. |
| MobileApp | A mobile application created the transaction. |
| Portal | A staff member created the transaction through the web portal. |
| QuickPayment | A one-time payment link created the transaction. |
| Subscription | A recurring subscription created the transaction. |
| TapToPay | A mobile device using tap to pay created the transaction. |
| Terminal | A physical payment terminal created the transaction. |
| WebComponent | An embedded web component created the transaction. |

Example: QuickPayment
    Enum: "ApiKey", "Invoice", "MobileApp", "Portal", "QuickPayment", "Subscription", "TapToPay", "Terminal", "WebComponent"

  - `source.sourceId` (string)
    Indicates the Identifier of the originating entity.

Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6
    Example: 3fa85f64-5717-4562-b3fc-2c963f66afa6

  - `source.sourceName` (string)
    Indicates a human-readable name of the originator.

Example: API Key for ecommerce app
    Example: API Key for ecommerce app

## Response 400:

  - `400` (unknown)
    Bad Request

## Response 400 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 401:

  - `401` (unknown)
    Unauthorized

## Response 401 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 402:

  - `402` (unknown)
    Payment Required

## Response 402 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 403:

  - `403` (unknown)
    Forbidden

## Response 403 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error
    Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Status | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
Example:
null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)

  - `cause` (string)

  - `resolution` (string)

  - `documentationUrl` (string)
    https://developer.flute.com/

  - `errors` (object)

## Response 404:

  - `404` (unknown)
    Not Found

## Response 404 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 409:

  - `409` (unknown)
    Conflict

## Response 409 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 429:

  - `429` (unknown)
    Too Many Requests

## Response 429 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 500:

  - `500` (unknown)
    Internal Server Error

## Response 500 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Unauthorized
    Example: Unauthorized

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Response | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

This is a unique identifier, a trace identifier, Flute attaches to a request/response pair so a single transaction can be traced end-to-end across systems and logs. 

Its intent is to support troubleshooting.
We recommend including this value when contacting support.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
This is a field on Flute's standard error response object, alongside values such as `correlationId`, `errorCode`, or `statusCode`.
It's the identifier of the specific resource the failed request was about.
Error messages may specify "Entity with ID b31fbe9f-eebb-45ce-9cae-92265389f47f does not exist or has been deleted."
When a 404 (or similar entity-specific error, like a conflict) comes back,
check `entityId` to get the exact identifier of the record that couldn't be found or matched.
This is useful for confirming which resource reference was wrong, especially if the request touched multiple identifiers at once.
Example: null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)
    Indicates a short, human-readable summary of the error category.

Example: Resource not found
    Example: Resource not found

  - `cause` (string)
    Indicates the reason the error occurred.

Example: The requested resource does not exist or has been deleted.
    Example: The requested resource does not exist or has been deleted.

  - `resolution` (string)
    Indicates the recommended action for resolving the error.

Example: Verify the resource ID is correct or retrieve a list of available resources.
    Example: Verify the resource ID is correct or retrieve a list of available resources.

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 200 examples:

  - `Create transaction response (Authorization)` (unknown)
    Indicates an approved authorization (pre-auth).

Capture the transaction later with `POST /transactions/{{transactionId}}/capture`.

  - `Create transaction response (Sale)` (unknown)
    Response after approved sale (auth + capture in one step).

  - `Create transaction response (ACH)` (unknown)
    Response after approved ACH debit transaction. No AVS (address verification service).

