API Guide
Log In
API Guide

Collecting Fees

Learn about how the API can facilitate the collection of fees

As a partner of Crezco, you have the flexibility to charge your customer fees.

There are two kinds of fee:

  • Fixed - This is a flat value, e.g. Β£0.20 GBP
  • Variable - This is a percentage of the payable's value - e.g. 0.5%

There are two parties that may charge a fee:

  • Provider - This is Crezco, charging for running costs and underlying bank network costs
  • Partner - This is you, charging using the above kinds of fee however you see fit

Fees can be collected by Crezco system to do this we will add a Payable to the Pay Run that represents the full fee amount.

The Payable for the fees can be distinguished by the property "$type": "FeePayable" . It excludes some unneccesary properties such as beneficiary, but you can track the status of this payable like any other to see if fees were successfully paid.

πŸ“˜

See Get pay run for more details on the Payable and FeePayable response types.

🚧

Partner variable fees are available soon

You the partner can choose to charge fixed fees now, and we are working on the ability for partners to charge variable fees soon.

Displaying fees to end users

When displaying fees to your customers, you must use the values returned in the API response rather than hardcoding fee values or attempting to calculate totals manually.

This ensures:

  • βœ… Accuracy: The amounts returned by the API include any applicable provider fees, partner fees, rounding, and currency-specific handling (e.g. for currencies without fractional units).
  • πŸ”’ Consistency: The fee and funding breakdown returned by Crezco is what will actually be charged. Using the API response avoids discrepancies between what users see and what they pay.
  • πŸ”„ Future-proofing: Our fee models may evolve over time. Relying on the API response ensures your integration will continue to reflect any updates without needing a code change on your side.

Use fields like fees, fundingAmount, and endUserTotalCostAmount from the Payable object to show the total cost breakdown to your users.


Example request and response

Using Create pay run you could send the following payable, requesting that a partnerFixedFee be applied to the payable:

...,
{
    "reference": "My-Ref-1234",
    "partnerEntityId": "Your-Unique-ID",
    "recipientAmount": {
        "currencyCode": "GBP",
        "amountInMinorUnits": 1200
    },
    "fees": {
        "partnerFixedFee": {
            "currencyCode": "GBP",
            "amountInMinorUnits": 10
        }
    },
    "beneficiary": {
        "bankAccount": {
            "country": "GB",
            "accountCurrency": "GBP",
            "accountRoutingName": "Alice Example",
            "gbSortCode": "123456",
            "gbAccountNumber": "12345678"
        }
    }
}
,...

The response will include the full Payable object with all fees and amounts quoted in the body:

...,
{
    "$type": "Payable",
    "payableId": "304e5ef9-631e-49b8-a1f1-b217359f1a68",
    "reference": "My-Ref-1234",
    "status": "Draft",
    "partnerEntityId": "Your-Unique-ID",
    "fundingAmount": {
        "currencyCode": "GBP",
        "amountInMinorUnits": 1240
    },
    "recipientAmount": {
        "currencyCode": "GBP",
        "amountInMinorUnits": 1200
    },
    "endUserTotalCostAmount": {
        "currencyCode": "GBP",
        "amountInMinorUnits": 1240
    },
    "fees": {
        "partnerFixedFee": {
            "currencyCode": "GBP",
            "amountInMinorUnits": 10
        },
        "providerFixedFee": {
            "currencyCode": "GBP",
            "amountInMinorUnits": 30,
            "isChargedToEndUser": true
        }
    },
    "beneficiary": {
        "bankAccount": {
            "country": "GB",
            "accountCurrency": "GBP",
            "accountRoutingName": "Alice Example",
            "gbSortCode": "123456",
            "gbAccountNumber": "12345678"
        }
    }
}
,...