> For the complete documentation index, see [llms.txt](https://docs.neobanc.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.neobanc.com/payment-lifecycle.md).

# Payment lifecycle

Every payment moves through a small set of statuses. Status changes are pushed to you via [webhooks](/api-reference/webhooks.md) and can always be queried with `POST /payment-history`.

| Status      | Meaning                                                                                            |
| ----------- | -------------------------------------------------------------------------------------------------- |
| `pending`   | The payment record exists but funds haven't been received or processed yet                         |
| `completed` | Funds were received and the payment was processed                                                  |
| `failed`    | The payment was rejected — most commonly an invalid account number, or a rejected settlement batch |

## Interac flow (rent and bill payments)

1. You create the payment with `POST /create-payment`. The response includes a 12-digit `identificationNumber`, and a `payment.created` webhook fires.
2. Your user sends an Interac e-transfer to Neobanc **including the `identificationNumber` in the transfer description**. This is how incoming funds are matched to the payment.
3. Neobanc matches the incoming transfer, marks the payment `completed`, and sends a `payment.completed` webhook.

If the user sends the transfer from a different email than the one you provided at creation, update it with `PATCH /update-payment` so matching succeeds.

## EFT flow (bill payments)

For partners funding payments from their own bank account instead of per-payment Interac transfers. Requires a signed PAD agreement and a [registered bank account](/api-reference/bank-accounts.md).

1. You create the payment with `POST /create-payment` using `paymentMethod: "eft"` and the `bankAccountId` of a registered account. A `payment.created` webhook fires.
2. Neobanc initiates an EFT debit against your account for the payment amount. No action is needed from you — there is no e-transfer to send.
3. When the debit completes (typically **1–3 business days**), the payment is marked `completed` and a `payment.completed` webhook is sent. The payment then enters biller settlement like any other bill payment.
4. If the debit fails (non-sufficient funds, account closed, no debit allowed), the payment is marked `failed` and a `payment.failed` webhook is sent.

## Credit card flow (rent payments)

1. You create the payment with `POST /create-credit-card-payment`. The response includes a `paymentUrl`.
2. You send the `paymentUrl` to your user, who completes identity verification and pays by card.
3. When the card payment finishes processing, the payment is marked `completed` and a `payment.completed` webhook is sent.

## Bill payment settlement

After the incoming funds are matched, bill payments are batched and submitted to the biller through Neobanc's settlement network. Individual payments can be rejected by the biller after submission — most commonly for an invalid account number — which transitions the payment to `failed` and sends a `payment.failed` webhook.

A failed payment is not necessarily terminal: once the underlying issue is corrected (e.g. the account number is fixed), the payment is re-queued for processing, and a `payment.completed` webhook is sent if it later succeeds.

{% hint style="info" %}
Bill payments typically post to the biller within 1–3 business days after funds are received.
{% endhint %}

To minimize failures, validate account numbers with `POST /payees/validate-account` before creating bill payments — it applies the same rules Neobanc's own payment flow uses.


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.neobanc.com/payment-lifecycle.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
