Mandates

The Mandates API is part of the Clearing House. A mandate represents an authorization for a creditor partner to debit a debtor partner's customer account, identified by a 14-character account routing number (a 7-character partner routing identifier followed by a 7-character account number).

Mandates are listed and created under {% $apiBase %}/v2/ch/mandates, and managed individually under {% $apiBase %}/v2/ch/mandate/:id.

All endpoints accept authentication either as a user (a member of the creditor or debtor partner, or an admin in OVS mode) or as a partner (via a partner API key). Endpoints that mutate a mandate (answer, freeze, unfreeze, revoke) act on behalf of either the creditor or debtor partner, referred to below as the "acting partner".

Examples below use Qash (routing identifier QASHQAX) as the creditor, and the fictitious Example Bank (routing identifier EXAMPLX, account no. 4242426) as the debtor.

Get mandates

Retrieve a list of mandates.

Request

http
GET https://api.staging.qash.cloud/v2/ch/mandates

Request Query Parameters

ParameterTypeDescription
includestringComma-separated list of relation fields to include in the response
partnerstringComma-separated list of partner IDs to filter by (as creditor or debtor). Only applies for user authentication; ignored for partner (API key) authentication. See below for default scoping.
accountstringComma-separated list of account filters, in the form accountNo or accountNo:mode, where accountNo is a 14-character account routing number and mode is one of creditor, debtor, or both (default both)
currencystringComma-separated list of currency IDs to filter by
statusstringComma-separated list of mandate statuses to filter by (see Response fields)

Default partner scoping

  • If authenticated as an admin user in OVS mode, and no partner filter is provided, mandates are not scoped by partner (all mandates are visible, subject to other filters).
  • If authenticated as a non-admin (or non-OVS) user, and no valid partner filter is provided, results are automatically scoped to the partners the user is a member of.
  • If authenticated as a partner (API key), and no valid partner filter is provided (it is always ignored), results are scoped to that partner only.
  • If a partner filter is provided by a non-OVS user, it is intersected with the partners the user is a member of.

Available inclusions

FieldDescription
creditorPartnerThe creditor partner
debtorPartnerThe debtor partner
partnersShorthand for including both creditorPartner and debtorPartner
currencyThe mandate's currency

Authorization

This endpoint requires an authenticated user or partner.

http
Authorization: Bearer <your_api_token>

Response

Returns an array of mandates.

json
[
    {
        "id": "mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk",
        "currencyId": "cur_30c5YSuuE30lziMuCnr1edmcBtA",
        "remarks": null,
        "debtorDeclaredName": "Jane Doe",
        "debtorAccountNo": "EXAMPLX4242426",
        "debtorPartnerId": "par_34sUzeg99uFiMRpQFoQN0ncZubp",
        "creditorDisplayName": "Qash",
        "creditorAccountNo": "QASHQAX4242426",
        "creditorPartnerId": "par_30cDoRAkxP6gnaVBicqU7kfSFU1",
        "status": "REQUESTED",
        "frozenReason": null,
        "freezingPartner": null,
        "rejectionReason": null,
        "revocationReason": null,
        "revokingPartner": null,
        "createdAt": "2025-08-01T12:00:00.000Z",
        "updatedAt": "2025-08-01T12:00:00.000Z",
        "startingAt": "2025-08-01T12:00:05.000Z",
        "endingAt": null
    }
]

Response fields

FieldTypeDescription
idstringThe unique identifier for the mandate.
currencyIdstringThe ID of the mandate's currency.
remarksstring | nullFree-form remarks provided when requesting the mandate.
debtorDeclaredNamestring | nullThe name of the debtor customer, as declared by the creditor when requesting the mandate.
debtorAccountNostringThe debtor's 14-character account routing number.
debtorPartnerIdstringThe ID of the debtor partner, resolved from debtorAccountNo's routing identifier.
creditorDisplayNamestring | nullThe display name of the creditor, as declared when requesting the mandate.
creditorAccountNostringThe creditor's 14-character account routing number.
creditorPartnerIdstringThe ID of the creditor partner (the partner who requested the mandate).
statusstringOne of REQUESTED, PENDING_CUSTOMER, ACTIVE, REJECTED, REVOKED, FROZEN, EXPIRED.
frozenReasonstring | nullCUSTOMER_FROZE, if the mandate is currently frozen.
freezingPartnerstring | nullCREDITOR or DEBTOR; which party froze the mandate, if frozen.
rejectionReasonstring | nullOne of ACCOUNT_NOT_FOUND, INTERNAL_BANK_POLICY_REJECTION, CUSTOMER_REJECTION, if the mandate was rejected.
revocationReasonstring | nullCUSTOMER_REVOKED, if the mandate was revoked.
revokingPartnerstring | nullCREDITOR or DEBTOR; which party revoked the mandate, if revoked.
createdAtstringThe timestamp when the mandate was created.
updatedAtstringThe timestamp when the mandate was last updated.
startingAtstringThe timestamp from which the mandate becomes usable.
endingAtstring | nullThe timestamp at which the mandate ends or ended, if applicable.
creditorPartnerobjectThe creditor partner, when include contains creditorPartner or partners.
debtorPartnerobjectThe debtor partner, when include contains debtorPartner or partners.
currencyobjectThe currency, when include=currency.

Errors

StatusError CodeDescription
401unauthorizedThe request was not authenticated.

Example

bash
curl https://api.staging.qash.cloud/v2/ch/mandates \
  -H "Authorization: Bearer <your_api_token>"

Request mandate

Requests a new mandate. The authenticated partner (or the partner specified in the body, for user authentication) always acts as the creditor; the debtor partner is resolved automatically from the routing identifier embedded in debtorAccountNo.

Request

http
POST https://api.staging.qash.cloud/v2/ch/mandates

Request Body

FieldTypeDescription
currencystringThe currency's ID or code
creditorDisplayNamestringThe display name of the creditor
creditorAccountNostringThe creditor's 14-character account routing number. The first 7 characters must match the creditor partner's own routingIdentifier.
debtorDeclaredNamestringThe declared name of the debtor customer
debtorAccountNostringThe debtor's 14-character account routing number. The first 7 characters must resolve to an existing, routable, clearing-house partner.
startingAtstring | number?ISO date string, or unix timestamp (seconds or milliseconds). Defaults to 5 seconds from now. Must not be in the past.
endingAtstring | number?ISO date string, or unix timestamp (seconds or milliseconds). If provided, must be after startingAt and in the future.
partnerstring?The ID of the creditor partner. Required when authenticating as a user; ignored when authenticating as a partner (the authenticated partner is always used).
remarksstring?Free-form remarks

Authorization

This endpoint requires an authenticated user or partner. If authenticated as a user, the user must be a member of the partner specified in the body.

http
Authorization: Bearer <your_api_token>

Response

Returns the newly created mandate, with status set to REQUESTED.

json
{
    "id": "mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk",
    "currencyId": "cur_30c5YSuuE30lziMuCnr1edmcBtA",
    "remarks": null,
    "debtorDeclaredName": "Jane Doe",
    "debtorAccountNo": "EXAMPLX4242426",
    "debtorPartnerId": "par_34sUzeg99uFiMRpQFoQN0ncZubp",
    "creditorDisplayName": "Qash",
    "creditorAccountNo": "QASHQAX4242426",
    "creditorPartnerId": "par_30cDoRAkxP6gnaVBicqU7kfSFU1",
    "status": "REQUESTED",
    "frozenReason": null,
    "freezingPartner": null,
    "rejectionReason": null,
    "revocationReason": null,
    "revokingPartner": null,
    "createdAt": "2025-08-01T12:00:00.000Z",
    "updatedAt": "2025-08-01T12:00:00.000Z",
    "startingAt": "2025-08-01T12:00:05.000Z",
    "endingAt": null
}

Response fields

Same fields as Get mandates.

Errors

StatusError CodeDescription
400missing_or_invalid_currencycurrency is missing or not a string.
400missing_or_invalid_creditor_display_namecreditorDisplayName is missing or not a string.
400missing_or_invalid_creditor_account_nocreditorAccountNo is missing, not a string, or not exactly 14 characters.
400missing_or_invalid_debtor_declared_namedebtorDeclaredName is missing or not a string.
400missing_or_invalid_debtor_account_nodebtorAccountNo is missing, not a string, or not exactly 14 characters.
400invalid_starting_atstartingAt could not be parsed as a valid date.
400invalid_ending_atendingAt could not be parsed as a valid date.
400invalid_partnerpartner is not a string.
400invalid_remarksremarks is not a string.
400missing_partnerpartner was not provided (or is not a string), while authenticated as a user.
400credit_account_routing_no_luhn_failedThe 7-character account portion of creditorAccountNo failed the Luhn check.
400credit_account_out_of_partner_routingThe routing portion of creditorAccountNo does not match the creditor partner's own routingIdentifier.
400debtor_account_routing_no_luhn_failedThe 7-character account portion of debtorAccountNo failed the Luhn check.
400debtor_account_partner_not_foundNo partner is registered with the routing identifier embedded in debtorAccountNo.
400debtor_account_partner_unroutableThe debtor partner resolved from debtorAccountNo is not routable.
400debtor_account_partner_not_clearing_house_partneredThe debtor partner resolved from debtorAccountNo is not a clearing house partner.
400mandate_cant_start_in_the_pastThe resolved startingAt is in the past.
400mandate_ends_before_startingendingAt is before startingAt.
400mandate_ends_too_soonendingAt is in the past.
401unauthorizedThe request was not authenticated.
403unpermittedThe authenticated user is not a member of the specified partner.
404partner_not_foundThe specified partner was not found.
404currency_not_foundThe currency was not found.
409unroutable_partnerThe creditor partner is not routable, or has no routingIdentifier configured.
409no_partner_clearing_house_partnershipThe creditor partner is not a clearing house partner.
409no_platform_account_holderThe creditor partner has no platform account holder configured.
409no_platform_account_availableThe creditor partner has no platform account for the specified currency.

Example

bash
curl -X POST https://api.staging.qash.cloud/v2/ch/mandates \
  -H "Authorization: Bearer <your_api_token>" \
  -H "Content-Type: application/json" \
  -d '{"currency": "USD", "creditorDisplayName": "Qash", "creditorAccountNo": "QASHQAX4242426", "debtorDeclaredName": "Jane Doe", "debtorAccountNo": "EXAMPLX4242426"}'

Get mandate

Retrieve a single mandate by its ID.

Request

http
GET https://api.staging.qash.cloud/v2/ch/mandate/:id

Request Path Parameters

ParameterTypeDescription
idstringThe ID of the mandate

Request Query Parameters

ParameterTypeDescription
includestringComma-separated list of relation fields to include in the response

Available inclusions

FieldDescription
creditorPartnerThe creditor partner
debtorPartnerThe debtor partner
partnersShorthand for including both creditorPartner and debtorPartner
currencyThe mandate's currency
relatedNetworkTransactionsThe network transactions related to this mandate
operateAsAdds an operateAs object to the response, reflecting which party (creditor and/or debtor) the requester can act as

Authorization

This endpoint requires an authenticated user or partner:

  • If authenticated as a partner, the partner must be the mandate's creditor or debtor.
  • If authenticated as a non-OVS user, the user must be a member of the mandate's creditor or debtor partner.
  • Admin users in OVS mode can access any mandate.
http
Authorization: Bearer <your_api_token>

Response

Returns the mandate.

json
{
    "id": "mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk",
    "currencyId": "cur_30c5YSuuE30lziMuCnr1edmcBtA",
    "remarks": null,
    "debtorDeclaredName": "Jane Doe",
    "debtorAccountNo": "EXAMPLX4242426",
    "debtorPartnerId": "par_34sUzeg99uFiMRpQFoQN0ncZubp",
    "creditorDisplayName": "Qash",
    "creditorAccountNo": "QASHQAX4242426",
    "creditorPartnerId": "par_30cDoRAkxP6gnaVBicqU7kfSFU1",
    "status": "REQUESTED",
    "frozenReason": null,
    "freezingPartner": null,
    "rejectionReason": null,
    "revocationReason": null,
    "revokingPartner": null,
    "createdAt": "2025-08-01T12:00:00.000Z",
    "updatedAt": "2025-08-01T12:00:00.000Z",
    "startingAt": "2025-08-01T12:00:05.000Z",
    "endingAt": null
}

Response fields

Same fields as Get mandates, plus:

FieldTypeDescription
relatedNetworkTransactionsarrayThe related network transactions, when include=relatedNetworkTransactions.
operateAsobject{ "creditor": boolean, "debtor": boolean }, when include=operateAs.

Errors

StatusError CodeDescription
401unauthorizedThe request was not authenticated.
403not_a_partner_memberThe authenticated user is not a member of the mandate's creditor or debtor partner.
404mandate_not_foundThe mandate was not found.
404partner_mismatchThe authenticated partner is neither the creditor nor the debtor of the mandate.

Example

bash
curl https://api.staging.qash.cloud/v2/ch/mandate/mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk \
  -H "Authorization: Bearer <your_api_token>"

Answer mandate request

Answers a pending mandate request, as the debtor. Used to move a mandate from REQUESTED (or PENDING_CUSTOMER) to PENDING_CUSTOMER, ACTIVE, or REJECTED.

Request

http
POST https://api.staging.qash.cloud/v2/ch/mandate/:id/answer

Request Path Parameters

ParameterTypeDescription
idstringThe ID of the mandate

Request Body

FieldTypeDescription
status"PENDING_CUSTOMER" | "ACTIVE" | "REJECTED"The new status to set
rejectionReason"ACCOUNT_NOT_FOUND" | "INTERNAL_BANK_POLICY_REJECTION" | "CUSTOMER_REJECTION"Required when status is "REJECTED"

Authorization

This endpoint requires the requester to be able to act as the mandate's debtor (see Get mandate authorization rules).

http
Authorization: Bearer <your_api_token>

Response

Returns the updated mandate.

json
{
    "id": "mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk",
    "currencyId": "cur_30c5YSuuE30lziMuCnr1edmcBtA",
    "remarks": null,
    "debtorDeclaredName": "Jane Doe",
    "debtorAccountNo": "EXAMPLX4242426",
    "debtorPartnerId": "par_34sUzeg99uFiMRpQFoQN0ncZubp",
    "creditorDisplayName": "Qash",
    "creditorAccountNo": "QASHQAX4242426",
    "creditorPartnerId": "par_30cDoRAkxP6gnaVBicqU7kfSFU1",
    "status": "ACTIVE",
    "frozenReason": null,
    "freezingPartner": null,
    "rejectionReason": null,
    "revocationReason": null,
    "revokingPartner": null,
    "createdAt": "2025-08-01T12:00:00.000Z",
    "updatedAt": "2025-08-01T12:05:00.000Z",
    "startingAt": "2025-08-01T12:00:05.000Z",
    "endingAt": null
}

Response fields

Same fields as Get mandates.

Errors

StatusError CodeDescription
400missing_or_invalid_statusstatus is missing or not one of PENDING_CUSTOMER, ACTIVE, REJECTED.
400invalid_rejection_reasonrejectionReason is not one of the allowed values.
400missing_rejection_reasonrejectionReason is required when status is "REJECTED".
401unauthorizedThe request was not authenticated.
403not_a_partner_memberThe authenticated user is not a member of the mandate's creditor or debtor partner.
403unauthorized_operationThe requester cannot act as the mandate's debtor.
403mandate_status_conflictThe mandate's current status is not REQUESTED or PENDING_CUSTOMER, or already matches the requested status.
404mandate_not_foundThe mandate was not found.
404partner_mismatchThe authenticated partner is neither the creditor nor the debtor of the mandate.

Example

bash
curl -X POST https://api.staging.qash.cloud/v2/ch/mandate/mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk/answer \
  -H "Authorization: Bearer <your_api_token>" \
  -H "Content-Type: application/json" \
  -d '{"status": "ACTIVE"}'

Freeze mandate

Freezes an active mandate, preventing further use until it is unfrozen. Can be initiated by either the creditor or the debtor.

Request

http
POST https://api.staging.qash.cloud/v2/ch/mandate/:id/freeze

Request Path Parameters

ParameterTypeDescription
idstringThe ID of the mandate

Request Body

FieldTypeDescription
frozenReason"CUSTOMER_FROZE"The reason for freezing the mandate
actingPartnerstring?The ID of the partner (creditor or debtor) performing the action. Required for user authentication when the user can act as both parties; ignored for partner authentication (resolved automatically).

Authorization

This endpoint requires the requester to be able to act as the resolved acting partner (creditor or debtor) of the mandate (see Get mandate authorization rules).

http
Authorization: Bearer <your_api_token>

Response

Returns the updated mandate, with status set to FROZEN.

json
{
    "id": "mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk",
    "currencyId": "cur_30c5YSuuE30lziMuCnr1edmcBtA",
    "remarks": null,
    "debtorDeclaredName": "Jane Doe",
    "debtorAccountNo": "EXAMPLX4242426",
    "debtorPartnerId": "par_34sUzeg99uFiMRpQFoQN0ncZubp",
    "creditorDisplayName": "Qash",
    "creditorAccountNo": "QASHQAX4242426",
    "creditorPartnerId": "par_30cDoRAkxP6gnaVBicqU7kfSFU1",
    "status": "FROZEN",
    "frozenReason": "CUSTOMER_FROZE",
    "freezingPartner": "DEBTOR",
    "rejectionReason": null,
    "revocationReason": null,
    "revokingPartner": null,
    "createdAt": "2025-08-01T12:00:00.000Z",
    "updatedAt": "2025-08-01T13:00:00.000Z",
    "startingAt": "2025-08-01T12:00:05.000Z",
    "endingAt": null
}

Response fields

Same fields as Get mandates.

Errors

StatusError CodeDescription
400missing_or_invalid_frozen_reasonfrozenReason is missing or not "CUSTOMER_FROZE".
400invalid_acting_partneractingPartner is not a string, or does not match the mandate's creditor or debtor partner ID.
400acting_partner_requiredactingPartner is required, because the requester can act as both the creditor and the debtor (or could not be resolved for partner authentication).
401unauthorizedThe request was not authenticated.
403not_a_partner_memberThe authenticated user is not a member of the mandate's creditor or debtor partner.
403unpermittedThe requester cannot act as the resolved actingPartner.
404mandate_not_foundThe mandate was not found.
404partner_mismatchThe authenticated partner is neither the creditor nor the debtor of the mandate.
409acting_partner_conflictactingPartner matches both the creditor and the debtor.
409mandate_status_conflictThe mandate's current status is not ACTIVE.

Example

bash
curl -X POST https://api.staging.qash.cloud/v2/ch/mandate/mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk/freeze \
  -H "Authorization: Bearer <your_api_token>" \
  -H "Content-Type: application/json" \
  -d '{"frozenReason": "CUSTOMER_FROZE"}'

Unfreeze mandate

Unfreezes a frozen mandate, restoring it to ACTIVE. Only the party that froze the mandate can unfreeze it.

Request

http
DELETE https://api.staging.qash.cloud/v2/ch/mandate/:id/freeze

Request Path Parameters

ParameterTypeDescription
idstringThe ID of the mandate

Request Body

FieldTypeDescription
actingPartnerstring?The ID of the partner (creditor or debtor) performing the action. Required for user authentication when the user can act as both parties; ignored for partner authentication (resolved automatically).

Authorization

This endpoint requires the requester to be able to act as the resolved acting partner (creditor or debtor) of the mandate (see Get mandate authorization rules).

http
Authorization: Bearer <your_api_token>

Response

Returns the updated mandate, with status set to ACTIVE.

json
{
    "id": "mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk",
    "currencyId": "cur_30c5YSuuE30lziMuCnr1edmcBtA",
    "remarks": null,
    "debtorDeclaredName": "Jane Doe",
    "debtorAccountNo": "EXAMPLX4242426",
    "debtorPartnerId": "par_34sUzeg99uFiMRpQFoQN0ncZubp",
    "creditorDisplayName": "Qash",
    "creditorAccountNo": "QASHQAX4242426",
    "creditorPartnerId": "par_30cDoRAkxP6gnaVBicqU7kfSFU1",
    "status": "ACTIVE",
    "frozenReason": null,
    "freezingPartner": null,
    "rejectionReason": null,
    "revocationReason": null,
    "revokingPartner": null,
    "createdAt": "2025-08-01T12:00:00.000Z",
    "updatedAt": "2025-08-01T14:00:00.000Z",
    "startingAt": "2025-08-01T12:00:05.000Z",
    "endingAt": null
}

Response fields

Same fields as Get mandates.

Errors

StatusError CodeDescription
400invalid_acting_partneractingPartner is not a string, or does not match the mandate's creditor or debtor partner ID.
400acting_partner_requiredactingPartner is required, because the requester can act as both the creditor and the debtor (or could not be resolved for partner authentication).
401unauthorizedThe request was not authenticated.
403not_a_partner_memberThe authenticated user is not a member of the mandate's creditor or debtor partner.
403unpermittedThe requester cannot act as the resolved actingPartner.
404mandate_not_foundThe mandate was not found.
404partner_mismatchThe authenticated partner is neither the creditor nor the debtor of the mandate.
409acting_partner_conflictactingPartner matches both the creditor and the debtor.
409mandate_status_conflictThe mandate's current status is not FROZEN.
409freeze_lock_conflictThe resolved acting partner is not the party that froze the mandate.

Example

bash
curl -X DELETE https://api.staging.qash.cloud/v2/ch/mandate/mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk/freeze \
  -H "Authorization: Bearer <your_api_token>"

Revoke mandate

Revokes a mandate, ending it permanently. Can be initiated by either the creditor or the debtor, from any status except EXPIRED, REJECTED, or REVOKED (including FROZEN).

Request

http
DELETE https://api.staging.qash.cloud/v2/ch/mandate/:id

Request Path Parameters

ParameterTypeDescription
idstringThe ID of the mandate

Request Body

FieldTypeDescription
revocationReason"CUSTOMER_REVOKED"The reason for revoking the mandate
actingPartnerstring?The ID of the partner (creditor or debtor) performing the action. Required for user authentication when the user can act as both parties; ignored for partner authentication (resolved automatically).

Authorization

This endpoint requires the requester to be able to act as the resolved acting partner (creditor or debtor) of the mandate (see Get mandate authorization rules).

http
Authorization: Bearer <your_api_token>

Response

Returns the updated mandate, with status set to REVOKED, endingAt set to the revocation time, and any freeze state cleared.

json
{
    "id": "mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk",
    "currencyId": "cur_30c5YSuuE30lziMuCnr1edmcBtA",
    "remarks": null,
    "debtorDeclaredName": "Jane Doe",
    "debtorAccountNo": "EXAMPLX4242426",
    "debtorPartnerId": "par_34sUzeg99uFiMRpQFoQN0ncZubp",
    "creditorDisplayName": "Qash",
    "creditorAccountNo": "QASHQAX4242426",
    "creditorPartnerId": "par_30cDoRAkxP6gnaVBicqU7kfSFU1",
    "status": "REVOKED",
    "frozenReason": null,
    "freezingPartner": null,
    "rejectionReason": null,
    "revocationReason": "CUSTOMER_REVOKED",
    "revokingPartner": "DEBTOR",
    "createdAt": "2025-08-01T12:00:00.000Z",
    "updatedAt": "2025-08-01T15:00:00.000Z",
    "startingAt": "2025-08-01T12:00:05.000Z",
    "endingAt": "2025-08-01T15:00:00.000Z"
}

Response fields

Same fields as Get mandates.

Errors

StatusError CodeDescription
400missing_or_invalid_revocation_reasonrevocationReason is missing or not "CUSTOMER_REVOKED".
400invalid_acting_partneractingPartner is not a string, or does not match the mandate's creditor or debtor partner ID.
400acting_partner_requiredactingPartner is required, because the requester can act as both the creditor and the debtor (or could not be resolved for partner authentication).
401unauthorizedThe request was not authenticated.
403not_a_partner_memberThe authenticated user is not a member of the mandate's creditor or debtor partner.
403unpermittedThe requester cannot act as the resolved actingPartner.
404mandate_not_foundThe mandate was not found.
404partner_mismatchThe authenticated partner is neither the creditor nor the debtor of the mandate.
409acting_partner_conflictactingPartner matches both the creditor and the debtor.
409mandate_status_conflictThe mandate's current status is EXPIRED, REJECTED, or REVOKED.

Example

bash
curl -X DELETE https://api.staging.qash.cloud/v2/ch/mandate/mdt_31oS0xFYz6vIi7djb1G4qsOt9Zk \
  -H "Authorization: Bearer <your_api_token>" \
  -H "Content-Type: application/json" \
  -d '{"revocationReason": "CUSTOMER_REVOKED"}'