# Zero Cost Processing

Zero Cost Processing (ZCP) is a payment strategy that lets merchants offset card transaction fees by adjusting the amount charged based on the customer's chosen payment method.
Depending on the configured strategy, certain payment methods receive a discount from the base price or are charged an additional fee on top of it.

## ZCP Strategies

The Flute platform supports three ZCP strategies: **Dual Pricing**, **Cash Discount**, and **Credit Card Surcharge**.

### Dual Pricing

Dual Pricing presents two prices for a transaction:

* A lower price for cash and bank payment/ACH.
* A higher price for card payments.


When creating a transaction, the operator enters either the **card price** or the **cash price** as the base amount.
The platform automatically derives the correct amount for all other payment methods.

**Card Input Example:** 
Operator enters $103.00 (card price), Dual Pricing rate 3%.
The cash price calculates to $100.00.

div
| Payment Method | Amount Charged |
|  --- | --- |
| Debit, Credit | $103.00 |
| Cash, Bank payment/ACH | $100.00 |


**Cash Input Example:** 
Operator enters $100.00 (cash price), Dual Pricing rate 3%.
The card price calculates to $103.00.

div
| Payment Method | Amount Charged |
|  --- | --- |
| Cash, Bank payment/ACH | $100.00 |
| Debit, Credit | $103.00 |


### Cash Discount

Cash Discount offers a lower price to customers who pay with cash or bank payment/ACH, while customers paying by debit or credit card pay the standard price.
The merchant's listed price is the card price; cash and bank payment/ACH customers receive a discount off that price.

**Example:** 
Base price $100.00, Cash Discount rate 3%.
The cash price calculates to $97.00.

div
| Payment Method | Amount Charged |
|  --- | --- |
| Debit, Credit | $100.00 |
| Cash, Bank payment/ACH | $97.00 |


### Credit Card Surcharge

Credit Card Surcharge adds a fee to transactions paid with a credit card.
Customers paying with cash, bank payment/ACH, or debit card pay the base price; credit card customers pay a higher amount that offsets the merchant's processing cost.

Regulatory Notice
In the United States, Credit Card Surcharge regulations vary by state.
Some states prohibit credit card surcharges entirely; others cap the maximum rate.
Merchants must verify compliance with applicable laws before enabling this strategy.
See [Regulatory Considerations](#regulatory-considerations).

**Example:** 
Base price $100.00, Credit Card Surcharge rate 3%.
The credit price calculates to $103.00.

div
| Payment Method | Amount Charged |
|  --- | --- |
| Debit, Cash, Bank payment/ACH | $100.00 |
| Credit | $103.00 |


## Amount Adjustment by Payment Method

The table below shows which payment methods trigger an amount adjustment for each ZCP strategy.

| ZCP Strategy | Debit | Credit | Cash | Bank payment/ACH |
|  --- | --- | --- | --- | --- |
| None | - | - | - | - |
| Dual Pricing (Card Input) | - | - | Discount | Discount |
| Dual Pricing (Cash Input) | Charge | Charge | - | - |
| Cash Discount | - | - | Discount | Discount |
| Credit Card Surcharge | - | Charge | - | - |


### ZCP Calculator

## Calculating Amounts per Payment Method

Use the following endpoint to get the ZCP-adjusted totals for every payment method before submitting a transaction.
This is useful for payment terminals and point-of-sale UIs that need to display the correct amount to the customer based on how they intend to pay.

`GET /pay-api/v1/transactions/calculate-amount`

The endpoint reads the merchant's active ZCP strategy and rate automatically and returns a breakdown of the final `totalAmount` for each payment method type (`cash`, `debitCard`, `creditCard`, `ach`).

### Query Parameters

| Parameter | Type | Required | Description |
|  --- | --- | --- | --- |
| amount | number | Yes | Specifies the base transaction amount before any ZCP adjustments. |
| currencyId | integer | Yes | Specifies the currency code. Must be `1` (USD). |
| useCardPrice | boolean | Dual Pricing only | Specifies using the card price.If `true`, the entered amount is the card price.If `false`, the entered amount is the cash price. |
| surchargeRate | number | No | Specifies the Credit Card Surcharge rate override. Omit to use the rate configured on the merchant account. |
| percentageOffRate | number | No | Specifies the store discount rate, applied independently of ZCP. |
| tipAmount | number | No | Specifies the fixed tip amount (in USD). Mutually exclusive with `tipRate`. |
| tipRate | number | No | Specifies the tip as a percentage of the base amount. Mutually exclusive with `tipAmount`. |


### Example Request

The example below calculates amounts for a $103.00 card-price entry under a Dual Pricing configuration.

`GET /pay-api/v1/transactions/calculate-amount?amount=103.00&useCardPrice=true&currencyId=1`

### Example Response

The response returns a separate object for each payment method, each with its own `totalAmount`.
The active ZCP strategy is identified by `zeroCostProcessingOption`.

```json
{
    "currencyId": 1,
    "currency": "USD",
    "zeroCostProcessingOptionId": 3,
    "zeroCostProcessingOption": "DualPricing",
    "useCardPrice": true,
    "debitCard": {
        "baseAmount": 103.00,
        "totalAmount": 103.00
    },
    "creditCard": {
        "baseAmount": 103.00,
        "totalAmount": 103.00
    },
    "cash": {
        "baseAmount": 103.00,
        "totalAmount": 100.00
    },
    "ach": {
        "baseAmount": 103.00,
        "totalAmount": 100.00
    }
}
```

The `zeroCostProcessingOption` field returns the strategy name as stored in the platform.
The table below maps each value to the corresponding ZCP strategy.

div
| zeroCostProcessingOption | ZCP Strategy |
|  --- | --- |
| None | ZCP disabled |
| DualPricing | Dual Pricing |
| CashDiscount | Cash Discount |
| Surcharge | Credit Card Surcharge |


## Enabling ZCP

ZCP is set up in two steps: a Flute platform administrator assigns the allowed strategy to the merchant, and the merchant then activates it and sets the rate.

### Step 1 - Admin Assigns the ZCP Strategy

A Flute administrator assigns the ZCP strategy the merchant is permitted to use.
This is established during the merchant's onboarding and underwriting process and should not be changed without a compliance review.

Contact Flute Support at [support@flute.com](mailto:support@flute.com) to update the ZCP strategy assigned to a merchant.

### Step 2 - Merchant Activates ZCP and Sets the Rate

Once the strategy has been assigned, the merchant enables the feature and configures their rate from the Flute dashboard.

1. Log in to the [Flute dashboard](https://dashboard.flute.com).
2. Navigate to **Settings**.
3. Select **Transactions**.
4. Under the **Pricing** section, toggle on the ZCP strategy.
5. Enter the ZCP rate as a percentage.
6. **Dual Pricing only:** Select the default pricing type - **Card** if the operator will typically enter the card price, or **Cash** if they will typically enter the cash price.
7. Save the settings.


To read the current ZCP configuration via the API: 
`GET /pay-api/v1/configurations/payments`

The response includes the active ZCP strategy and rate for the merchant account.

## Transactions with ZCP

When ZCP is enabled, the platform automatically applies amount adjustments based on the payment method used in the transaction.
The final adjusted amount charged to the customer is returned in the response field `amount.totalAmount`.

For **Cash Discount** and **Credit Card Surcharge**, no extra fields are needed beyond the standard transaction payload.

For **Dual Pricing**, the request must include the `useCardPrice` boolean flag to indicate whether the entered `amount` represents the card price or the cash price. The platform uses this to derive the correct amount for each payment method.

* `useCardPrice: true` - the entered amount is the card price
* `useCardPrice: false` - the entered amount is the cash price


`POST /pay-api/v1/transactions/sale`

```json
{
    "amount": 103,
    "useCardPrice": true,
    "paymentMethodId": "b9cceba7-1cbe-4685-85ae-47b05d86850b",
    "cardDataSource": "Internet",
    "currencyId": 1
}
```

Recommendation
Before submitting a transaction, call `GET /pay-api/v1/transactions/calculate-amount` to retrieve the adjusted totals for each payment method. This allows your application to display the correct amount to the customer before they confirm payment. See [Calculating Amounts per Payment Method](#calculating-amounts-per-payment-method).

## Regulatory Considerations

ZCP strategies are subject to federal, state, and local laws that vary by jurisdiction.
Merchants are responsible for ensuring their ZCP setup complies with all applicable regulations before enabling any strategy.

**Credit Card Surcharge** carries the most regulatory complexity in the United States:

* Some states prohibit credit card surcharges entirely.
* States that allow credit card surcharges may cap the maximum rate.
* Payment network rules typically require merchants to disclose credit card surcharges clearly at the point of sale.


**Cash Discount** and **Dual Pricing** are generally subject to fewer restrictions but may still require clear pricing disclosures depending on the merchant's jurisdiction.

Merchants should consult legal counsel and review applicable card network rules before deploying any ZCP strategy.