> For the complete documentation index, see [llms.txt](https://docs.hyperswitch.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hyperswitch.io/integrations/connectors-integrations/payment-processor-capabilities/available-connectors/aci.md).

# ACI

Accept card, bank redirect, wallet, and pay later payments.

<div align="left"><img src="https://hyperswitch.io/icons/homePageIcons/logos/ACILogo.svg" alt=""></div>

ACI provides services for commerce. Its card methods support recurring charges and optional 3DS, while the other declared methods do not support mandates. Refunds and automatic or manual capture are available across the declared methods.

### Status and capabilities

**Integration status:** sandbox

**Category:** payment gateway

**Webhook flows:** None declared in code

| Payment method | Type        | Mandates      | Refunds   | Capture methods   | 3DS                 | Card networks                                                                     | Countries                                        | Currencies                                       |
| -------------- | ----------- | ------------- | --------- | ----------------- | ------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------ |
| bank redirect  | EFT         | not supported | supported | automatic, manual | not applicable      | -                                                                                 | -                                                | -                                                |
| bank redirect  | EPS         | not supported | supported | automatic, manual | not applicable      | -                                                                                 | AUT                                              | EUR                                              |
| bank redirect  | Giropay     | not supported | supported | automatic, manual | not applicable      | -                                                                                 | DEU                                              | EUR                                              |
| bank redirect  | iDEAL       | not supported | supported | automatic, manual | not applicable      | -                                                                                 | NLD                                              | EUR                                              |
| bank redirect  | Interac     | not supported | supported | automatic, manual | not applicable      | -                                                                                 | CAN                                              | CAD, USD                                         |
| bank redirect  | Przelewy24  | not supported | supported | automatic, manual | not applicable      | -                                                                                 | POL                                              | CZK, EUR, GBP, PLN                               |
| bank redirect  | Sofort      | not supported | supported | automatic, manual | not applicable      | -                                                                                 | 9 ([full list](https://hyperswitch.io/pm-list))  | CHF, EUR, GBP, HUF, PLN                          |
| bank redirect  | Trustly     | not supported | supported | automatic, manual | not applicable      | -                                                                                 | 12 ([full list](https://hyperswitch.io/pm-list)) | CZK, DKK, EUR, GBP, NOK, SEK                     |
| card           | Credit Card | supported     | supported | automatic, manual | supported, optional | American Express, Diners Club, Discover, JCB, Maestro, Mastercard, UnionPay, Visa | 67 ([full list](https://hyperswitch.io/pm-list)) | 58 ([full list](https://hyperswitch.io/pm-list)) |
| card           | Debit Card  | supported     | supported | automatic, manual | supported, optional | American Express, Diners Club, Discover, JCB, Maestro, Mastercard, UnionPay, Visa | 67 ([full list](https://hyperswitch.io/pm-list)) | 58 ([full list](https://hyperswitch.io/pm-list)) |
| pay later      | Klarna      | not supported | supported | automatic, manual | not applicable      | -                                                                                 | 22 ([full list](https://hyperswitch.io/pm-list)) | 11 ([full list](https://hyperswitch.io/pm-list)) |
| wallet         | Alipay      | not supported | supported | automatic, manual | not applicable      | -                                                                                 | CHN                                              | CNY                                              |
| wallet         | Apple Pay   | not supported | supported | automatic, manual | not applicable      | -                                                                                 | 77 ([full list](https://hyperswitch.io/pm-list)) | 9 ([full list](https://hyperswitch.io/pm-list))  |
| wallet         | Google Pay  | not supported | supported | automatic, manual | not applicable      | -                                                                                 | 74 ([full list](https://hyperswitch.io/pm-list)) | -                                                |
| wallet         | MB WAY      | not supported | supported | automatic, manual | not applicable      | -                                                                                 | ESP, EST, PRT                                    | EUR                                              |
| wallet         | Samsung Pay | not supported | supported | automatic, manual | not applicable      | -                                                                                 | 31 ([full list](https://hyperswitch.io/pm-list)) | 9 ([full list](https://hyperswitch.io/pm-list))  |

### Connector-Specific Notes

* **Form-encoded requests:** ACI payment requests use `application/x-www-form-urlencoded`, not JSON. See [`common_get_content_type()`](https://github.com/juspay/hyperswitch/blob/2ef1f9ee5bdf65356c3169f4f5db67fa1d4de7bc/crates/hyperswitch_connectors/src/connectors/aci.rs#L73-L86).

### Authentication

Supply an API Key and Entity ID in the connector configuration. Hyperswitch places the API Key in the `Authorization` header with the Bearer scheme and maps the second credential to `entity_id` in connector requests. See [`AciAuthType::try_from()`](https://github.com/juspay/hyperswitch/blob/2ef1f9ee5bdf65356c3169f4f5db67fa1d4de7bc/crates/hyperswitch_connectors/src/connectors/aci/transformers.rs#L99-L109) and [`get_auth_header()`](https://github.com/juspay/hyperswitch/blob/2ef1f9ee5bdf65356c3169f4f5db67fa1d4de7bc/crates/hyperswitch_connectors/src/connectors/aci.rs#L88-L99).

### Before you start

1. Register with ACI at [aciworldwide.com](https://www.aciworldwide.com/).
2. Create or sign in to your account in the [Hyperswitch control center](https://app.hyperswitch.io/).
3. Find the API Key and Entity ID in your ACI dashboard.
4. Have the credentials listed in [Authentication](#authentication) ready.

To connect ACI to your Hyperswitch account, follow [Activate a connector on Hyperswitch](/integrations/connectors-integrations/activate-connector-on-hyperswitch.md), then return here for what ACI supports.

### Webhooks

ACI's webhooks do not currently work with Hyperswitch. Do not rely on them for payment status updates; use payment sync instead. Refund status updates are also affected, and Hyperswitch cannot fetch refund status from ACI on demand either (see below). We are working on it.

ACI encrypts each callback's body with AES-256-GCM and sends the hex-encoded ciphertext as the request body, with the initialization vector in the `X-Initialization-Vector` header and the authentication tag in the `X-Authentication-Tag` header. The webhook code decrypts the body only while checking the signature, but it tries to parse the body as JSON before that check runs, so parsing sees the still-encrypted ciphertext and fails, and the webhook is rejected outright. The signature check cannot succeed either: it verifies HMAC-SHA256 using the `X-Authentication-Tag` value as the HMAC digest, but that value is the AES-GCM authentication tag, not an HMAC. See [`decrypt_aci_webhook_payload()`](https://github.com/juspay/hyperswitch/blob/2ef1f9ee5bdf65356c3169f4f5db67fa1d4de7bc/crates/hyperswitch_connectors/src/connectors/aci.rs#L759-L821) and [`get_webhook_source_verification_signature()`](https://github.com/juspay/hyperswitch/blob/2ef1f9ee5bdf65356c3169f4f5db67fa1d4de7bc/crates/hyperswitch_connectors/src/connectors/aci.rs#L832-L846). The webhook implementation has never been tested against ACI; it was written without dashboard access to verify against live callbacks (see the [original webhook flow commit](https://github.com/juspay/hyperswitch/pull/8349)), and it has no webhook tests.

When webhooks do work, the handled events are payment success, payment processing, payment failure, refund success, and refund failure. The mapping reads the `result.code` value in the callback and the `paymentType` field, which separates payments from refunds (`RF`). A pending refund is not supported. See [`get_webhook_event_type()`](https://github.com/juspay/hyperswitch/blob/2ef1f9ee5bdf65356c3169f4f5db67fa1d4de7bc/crates/hyperswitch_connectors/src/connectors/aci.rs#L928-L986).

### Troubleshooting

**Webhook expectations** Symptom: You expect webhook-driven payment or refund status updates for ACI. Fix: for payments, confirm the status through payment sync. Hyperswitch does not currently process ACI webhooks, so configuring a webhook endpoint on the ACI side has no effect. For refunds, there is currently no in-product way to fetch the status from ACI on demand; Hyperswitch cannot run refund sync for ACI (see [`ConnectorIntegration<RSync>`](https://github.com/juspay/hyperswitch/blob/2ef1f9ee5bdf65356c3169f4f5db67fa1d4de7bc/crates/hyperswitch_connectors/src/connectors/aci.rs#L749), the unimplemented flow). Check the refund status in your ACI dashboard.

### Source reference

[ACI connector implementation](https://github.com/juspay/hyperswitch/blob/2ef1f9ee5bdf65356c3169f4f5db67fa1d4de7bc/crates/hyperswitch_connectors/src/connectors/aci.rs)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.hyperswitch.io/integrations/connectors-integrations/payment-processor-capabilities/available-connectors/aci.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
