> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ACH Direct Debit

> 接受来自以 USD 付款的美国客户的 ACH Direct Debit。了解银行扣款在结账时的工作方式、清算所需时间以及如何进行测试。

ACH Direct Debit 允许美国客户直接从银行账户付款，而不是使用卡。它通过 Automated Clearing House 网络运行，并适用于 USD 结账中的一次性付款。

## 为什么提供 ACH Direct Debit？

<CardGroup cols={3}>
  <Card title="Lower Processing Cost" icon="piggy-bank">
    ACH 每笔付款收取固定 1.5% 的费用，最高为 \$15，而不是收取卡付款费用。请参阅 [定价](https://dodopayments.com/pricing)。
  </Card>

  <Card title="No Card Required" icon="building-columns">
    触达偏好从银行账户付款的美国客户，或不希望使用卡进行大额购买的客户。
  </Card>

  <Card title="Higher Value Orders" icon="chart-line">
    由于费用最高为 \$15，与卡付款费用相比，订单金额越高，节省的费用越多。ACH 适用于大额一次性购买。
  </Card>
</CardGroup>

## 概览

| 详细信息 | 值 |
| :- | :- |
| **结算货币** | USD |
| **支持的国家/地区** | 美国 |
| **订阅** | 否 |
| **最低金额** | \$0.50 |
| **结算** | 最多 4 个工作日 |

<Warning>
  ACH Direct Debit 不是即时的。付款可能需要 **最多 4 个工作日** 才能成功或失败。已授权的扣款不代表付款已结算：只有在付款进入 succeeded 状态后，才能履行订单。
</Warning>

## 工作原理

```mermaid theme={null}
sequenceDiagram
    participant Customer
    participant Checkout
    participant Dodo
    participant ACH as ACH Network
    participant Bank

    Customer->>Checkout: Select ACH Direct Debit
    Checkout->>Customer: Ask for bank account details
    Customer->>Checkout: Enter details and authorize the debit
    Checkout->>Dodo: Create payment
    Dodo->>ACH: Submit debit request
    Note over ACH,Bank: Clearing takes up to 4 business days
    ACH->>Bank: Debit customer account
    Bank->>ACH: Confirm or return
    ACH->>Dodo: Final status
    Dodo->>Checkout: Payment succeeded or failed
```

## 客户体验

1. 客户在结账时选择 **ACH Direct Debit**。
2. 客户输入账户持有人姓名、routing number、account number、account type（checking 或 savings）以及电子邮件地址。结账流程会检查 routing number 是否有效。
3. 客户提交表单，根据 mandate 授权从其美国银行账户扣款。
4. 付款提交至 ACH 网络并进入 processing 状态。结账流程完成时不会等待清算。
5. 清算会在接下来的工作日内完成。
6. 付款进入 succeeded 状态；如果银行退回扣款，则付款失败。

<Info>
  由于清算是异步的，请使用 [webhooks](/developer-resources/webhooks) 获取最终结果，而不要依赖结账重定向。结账后的重定向仅表示客户已授权扣款。

  扣款提交后，付款会发出 `payment.processing`；清算完成后，会发出 `payment.succeeded` 或 `payment.failed`。只有在 `payment.succeeded` 时才能履行订单。
</Info>

## 可用性

满足以下所有条件时，ACH Direct Debit 会在结账时显示：

* **结算货币**为 `USD`。
* **结算国家/地区**为 `US`。
* 交易为**一次性付款**。

<Note>
  ACH Direct Debit 不适用于订阅。对于定期付款，请使用卡或其他支持订阅的付款方式。请参阅 [Payment Methods 概览](/features/payment-methods)。
</Note>

## 配置

```javascript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
  allowed_payment_method_types: ['ach', 'credit', 'debit'],
  billing_currency: 'USD',
  billing_address: {
    country: 'US',
    zipcode: '94102'
  },
  return_url: 'https://example.com/success'
});
```

<Note>
  ACH Direct Debit 要求使用 **USD** 结算货币和**美国**结算地址。如果您使用其他货币定价，请启用 [Adaptive Currency](/features/adaptive-currency)，这样美国客户将以 USD 结算，并可使用 ACH。
</Note>

## API 方法类型

| 类型 | 方法 | 国家/地区 |
| :- | :- | :- |
| `ach` | ACH Direct Debit | 美国 |

## 退款和争议

ACH 付款的退款和争议使用与其他所有付款方式相同的 API 和 dashboard 流程。您无需进行 ACH 特定处理。

<Warning>
  客户的银行可能会在 ACH 扣款看似已完成后将其退回；根据 Nacha 规则，客户可以在结算后的最多 60 个日历日内退回个人账户中的未经授权扣款。在原始付款进入 succeeded 状态之前，不要发起退款。
</Warning>

## 测试

<Steps>
  <Step title="Enable test mode">
    关闭 dashboard 侧边栏中的 **Live Mode** 开关，并使用在 test mode 中创建的 API keys。
  </Step>

  <Step title="Set currency and billing address">
    将结算货币设置为 `USD`，并将结算地址所在国家/地区设置为 `US`。
  </Step>

  <Step title="Include `ach` in allowed methods">
    在 `allowed_payment_method_types` 中传入 `ach`，或省略该字段以显示所有符合条件的付款方式。
  </Step>

  <Step title="Enter the test bank details">
    输入以下任意一组测试 routing number 和 account number。然后确认您的 webhook handler 收到了最终付款状态。
  </Step>
</Steps>

### 测试银行账户

客户在结账表单中输入 account number 和 routing number。在 test mode 中，将 routing number `110000000` 与以下任一 account number 搭配使用，以强制触发相应结果：

| Account Number | Routing Number | 行为 |
| :- | :- | :- |
| `000123456789` | `110000000` | 付款成功。 |
| `000222222227` | `110000000` | 由于资金不足，付款失败。 |
| `000111111113` | `110000000` | 由于账户已关闭，付款失败。 |
| `000111111116` | `110000000` | 由于未找到账户，付款失败。 |
| `000333333335` | `110000000` | 由于账户未授权扣款，付款失败。 |
| `000444444440` | `110000000` | 由于货币无效，付款失败。 |
| `000555555559` | `110000000` | 付款成功，然后触发争议。 |
| `000000000009` | `110000000` | 付款无限期保持 processing 状态。使用此项测试待处理状态 UI。 |

<Note>
  测试付款比正式付款更快进入最终状态，因此无需等待数天即可验证集成。例外情况是 `000000000009`，它会保持 processing 状态。
</Note>

## 最佳实践

<AccordionGroup>
  <Accordion title="Don't fulfill on authorization">
    ACH 授权不等于付款。在授予访问权限或发货之前，请等待付款进入 succeeded 状态。客户的银行仍可能退回该扣款。
  </Accordion>

  <Accordion title="Set customer expectations at checkout">
    告知客户银行付款不会立即完成清算。这样可以减少客户询问订单为何仍处于待处理状态的支持工单。
  </Accordion>

  <Accordion title="Provide card fallbacks">
    在 `ach` 旁边加入 `credit` 和 `debit`，以便需要立即访问产品的客户选择更快的付款方式。
  </Accordion>

  <Accordion title="Use ACH for high-value one-time purchases">
    ACH 费用最高为 \$15，因此大额一次性购买可节省最多费用。
  </Accordion>
</AccordionGroup>

## 故障排除

<AccordionGroup>
  <Accordion title="ACH not appearing at checkout">
    **检查：**

    1. 结算货币是否为 `USD`？
    2. 客户的结算国家/地区是否为 `US`？
    3. `ach` 是否包含在 `allowed_payment_method_types` 中？
    4. 这是一次性付款吗？ACH 不适用于订阅。
    5. 金额是否至少为 \$0.50？

    **解决方案：** 暂时移除 `allowed_payment_method_types` 以查看所有符合条件的付款方式，然后在 API 请求中检查结算货币和地址国家/地区。
  </Accordion>

  <Accordion title="ACH not appearing on a subscription checkout">
    **原因：** ACH Direct Debit 仅适用于一次性付款。

    **解决方案：** 对于周期性计费，请使用卡或其他支持订阅的方式。
  </Accordion>

  <Accordion title="Payment stuck in processing">
    **原因：** 这是预期行为。ACH 付款会在整个清算时间窗口内保持 processing 状态，该窗口远长于卡付款的清算时间。

    **解决方案：** 等待最终 webhook。不要重试付款，因为重试可能导致客户被扣款两次。
  </Accordion>

  <Accordion title="Payment failed after initially succeeding at checkout">
    **原因：** 结账流程已完成，但客户的银行在清算期间退回了扣款，最常见的原因是资金不足或账户已关闭。付款会发出 `payment.failed`。

    **解决方案：** 将付款视为失败，并要求客户使用其他付款方式。只有在 succeeded 状态时才履行订单，以避免此问题。
  </Accordion>
</AccordionGroup>

## 相关页面

<CardGroup cols={2}>
  <Card title="Payment Methods Overview" icon="credit-card" href="/features/payment-methods">
    查看所有支持的支付方式。
  </Card>

  <Card title="Adaptive Currency" icon="globe" href="/features/adaptive-currency">
    货币支持和自动转换。
  </Card>

  <Card title="Checkout Guide" icon="book" href="/developer-resources/checkout-session">
    完整的结账实现指南。
  </Card>

  <Card title="Webhooks" icon="webhook" href="/developer-resources/webhooks">
    异步处理延迟的付款确认。
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.